mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-04-17 19:49:23 +02:00
feat: Add remote url (#737)
* Add remote url to cluster dto from env * Delete ui.zip * Delete Archive.zip * Delete go.sum * rebase go sum
This commit is contained in:
20
atlas.hcl
20
atlas.hcl
@@ -1,20 +0,0 @@
|
|||||||
data "external_schema" "gorm" {
|
|
||||||
program = [
|
|
||||||
"go",
|
|
||||||
"run",
|
|
||||||
"-mod=mod",
|
|
||||||
"ariga.io/atlas-provider-gorm",
|
|
||||||
"load",
|
|
||||||
"--path", "./internal/models",
|
|
||||||
"--dialect", "postgres",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
env "gorm" {
|
|
||||||
src = data.external_schema.gorm.url
|
|
||||||
dev = "postgres://autoglue:autoglue@localhost:5432/autoglue_dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
env "gorm-src" {
|
|
||||||
src = data.external_schema.gorm.url
|
|
||||||
}
|
|
||||||
@@ -34,7 +34,7 @@ var serveCmd = &cobra.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
jobs, err := bg.NewJobs(rt.DB, cfg.DbURL)
|
jobs, err := bg.NewJobs(rt.DB, cfg.DbURL, cfg.BaseURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("failed to init background jobs: %v", err)
|
log.Fatalf("failed to init background jobs: %v", err)
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ var serveCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
r := api.NewRouter(rt.DB, jobs, nil)
|
r := api.NewRouter(rt.DB, jobs, cfg, nil)
|
||||||
|
|
||||||
if cfg.DBStudioEnabled {
|
if cfg.DBStudioEnabled {
|
||||||
dbURL := cfg.DbURLRO
|
dbURL := cfg.DbURLRO
|
||||||
@@ -200,7 +200,7 @@ var serveCmd = &cobra.Command{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("failed to init db studio: %v", err)
|
log.Fatalf("failed to init db studio: %v", err)
|
||||||
} else {
|
} else {
|
||||||
r = api.NewRouter(rt.DB, jobs, studio)
|
r = api.NewRouter(rt.DB, jobs, cfg, studio)
|
||||||
log.Printf("pgweb mounted at /db-studio/")
|
log.Printf("pgweb mounted at /db-studio/")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
61
go.sum
61
go.sum
@@ -10,80 +10,42 @@ github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5 h1:VauE2GcJNZFun2O
|
|||||||
github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o=
|
github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o=
|
||||||
github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w=
|
github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w=
|
||||||
github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw=
|
github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.41.2 h1:LuT2rzqNQsauaGkPK/7813XxcZ3o3yePY0Iy891T2ls=
|
|
||||||
github.com/aws/aws-sdk-go-v2 v1.41.2/go.mod h1:IvvlAZQXvTXznUPfRVfryiG1fbzE2NGK6m9u39YQ+S4=
|
|
||||||
github.com/aws/aws-sdk-go-v2 v1.41.3 h1:4kQ/fa22KjDt13QCy1+bYADvdgcxpfH18f0zP542kZA=
|
github.com/aws/aws-sdk-go-v2 v1.41.3 h1:4kQ/fa22KjDt13QCy1+bYADvdgcxpfH18f0zP542kZA=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.41.3/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
|
github.com/aws/aws-sdk-go-v2 v1.41.3/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.5 h1:zWFmPmgw4sveAYi1mRqG+E/g0461cJ5M4bJ8/nc6d3Q=
|
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.5/go.mod h1:nVUlMLVV8ycXSb7mSkcNu9e3v/1TJq2RTlrPwhYWr5c=
|
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 h1:N4lRUXZpZ1KVEUn6hxtco/1d2lgYhNn1fHkkl8WhlyQ=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6 h1:N4lRUXZpZ1KVEUn6hxtco/1d2lgYhNn1fHkkl8WhlyQ=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.32.10 h1:9DMthfO6XWZYLfzZglAgW5Fyou2nRI5CuV44sTedKBI=
|
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.32.10/go.mod h1:2rUIOnA2JaiqYmSKYmRJlcMWy6qTj1vuRFscppSBMcw=
|
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.32.11 h1:ftxI5sgz8jZkckuUHXfC/wMUc8u3fG1vQS0plr2F2Zs=
|
github.com/aws/aws-sdk-go-v2/config v1.32.11 h1:ftxI5sgz8jZkckuUHXfC/wMUc8u3fG1vQS0plr2F2Zs=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.32.11/go.mod h1:twF11+6ps9aNRKEDimksp923o44w/Thk9+8YIlzWMmo=
|
github.com/aws/aws-sdk-go-v2/config v1.32.11/go.mod h1:twF11+6ps9aNRKEDimksp923o44w/Thk9+8YIlzWMmo=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.10 h1:EEhmEUFCE1Yhl7vDhNOI5OCL/iKMdkkYFTRpZXNw7m8=
|
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.10/go.mod h1:RnnlFCAlxQCkN2Q379B67USkBMu1PipEEiibzYN5UTE=
|
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.11 h1:NdV8cwCcAXrCWyxArt58BrvZJ9pZ9Fhf9w6Uh5W3Uyc=
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.11 h1:NdV8cwCcAXrCWyxArt58BrvZJ9pZ9Fhf9w6Uh5W3Uyc=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.11/go.mod h1:30yY2zqkMPdrvxBqzI9xQCM+WrlrZKSOpSJEsylVU+8=
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.11/go.mod h1:30yY2zqkMPdrvxBqzI9xQCM+WrlrZKSOpSJEsylVU+8=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 h1:Ii4s+Sq3yDfaMLpjrJsqD6SmG/Wq/P5L/hw2qa78UAY=
|
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18/go.mod h1:6x81qnY++ovptLE6nWQeWrpXxbnlIex+4H4eYYGcqfc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 h1:INUvJxmhdEbVulJYHI061k4TVuS3jzzthNvjqvVvTKM=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 h1:INUvJxmhdEbVulJYHI061k4TVuS3jzzthNvjqvVvTKM=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19/go.mod h1:FpZN2QISLdEBWkayloda+sZjVJL+e9Gl0k1SyTgcswU=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19/go.mod h1:FpZN2QISLdEBWkayloda+sZjVJL+e9Gl0k1SyTgcswU=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18 h1:F43zk1vemYIqPAwhjTjYIz0irU2EY7sOb/F5eJ3HuyM=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18/go.mod h1:w1jdlZXrGKaJcNoL+Nnrj+k5wlpGXqnNrKoP22HvAug=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 h1:/sECfyq2JTifMI2JPyZ4bdRN77zJmr6SrS1eL3augIA=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 h1:/sECfyq2JTifMI2JPyZ4bdRN77zJmr6SrS1eL3augIA=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19/go.mod h1:dMf8A5oAqr9/oxOfLkC/c2LU/uMcALP0Rgn2BD5LWn0=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19/go.mod h1:dMf8A5oAqr9/oxOfLkC/c2LU/uMcALP0Rgn2BD5LWn0=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18 h1:xCeWVjj0ki0l3nruoyP2slHsGArMxeiiaoPN5QZH6YQ=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18/go.mod h1:r/eLGuGCBw6l36ZRWiw6PaZwPXb6YOj+i/7MizNl5/k=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 h1:AWeJMk33GTBf6J20XJe6qZoRSJo0WfUhsMdUKhoODXE=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 h1:AWeJMk33GTBf6J20XJe6qZoRSJo0WfUhsMdUKhoODXE=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19/go.mod h1:+GWrYoaAsV7/4pNHpwh1kiNLXkKaSoppxQq9lbH8Ejw=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19/go.mod h1:+GWrYoaAsV7/4pNHpwh1kiNLXkKaSoppxQq9lbH8Ejw=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 h1:clHU5fm//kWS1C2HgtgWxfQbFbx4b6rx+5jzhgX9HrI=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 h1:clHU5fm//kWS1C2HgtgWxfQbFbx4b6rx+5jzhgX9HrI=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.5/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.18 h1:eZioDaZGJ0tMM4gzmkNIO2aAoQd+je7Ug7TkvAzlmkU=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.18/go.mod h1:CCXwUKAJdoWr6/NcxZ+zsiPr6oH/Q5aTooRGYieAyj4=
|
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19 h1:3Y4oma5TiV7tT9wa8zRcdoXwZkGz9Q/wxbEUK7cMuAM=
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19 h1:3Y4oma5TiV7tT9wa8zRcdoXwZkGz9Q/wxbEUK7cMuAM=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19/go.mod h1:V1K+TeJVD5JOk3D9e5tsX2KUdL7BlB+FV6cBhdobN8c=
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.19/go.mod h1:V1K+TeJVD5JOk3D9e5tsX2KUdL7BlB+FV6cBhdobN8c=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5 h1:CeY9LUdur+Dxoeldqoun6y4WtJ3RQtzk0JMP2gfUay0=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5/go.mod h1:AZLZf2fMaahW5s/wMRciu1sYbdsikT/UHwbUjOdEVTc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 h1:XAq62tBTJP/85lFD5oqOOe7YYgWxY9LvWq8plyDvDVg=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 h1:XAq62tBTJP/85lFD5oqOOe7YYgWxY9LvWq8plyDvDVg=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.10 h1:fJvQ5mIBVfKtiyx0AHY6HeWcRX5LGANLpq8SVR+Uazs=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.10/go.mod h1:Kzm5e6OmNH8VMkgK9t+ry5jEih4Y8whqs+1hrkxim1I=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 h1:BYf7XNsJMzl4mObARUBUib+j2tf0U//JAAtTnYqvqCw=
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 h1:BYf7XNsJMzl4mObARUBUib+j2tf0U//JAAtTnYqvqCw=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11/go.mod h1:aEUS4WrNk/+FxkBZZa7tVgp4pGH+kFGW40Y8rCPqt5g=
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11/go.mod h1:aEUS4WrNk/+FxkBZZa7tVgp4pGH+kFGW40Y8rCPqt5g=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18 h1:LTRCYFlnnKFlKsyIQxKhJuDuA3ZkrDQMRYm6rXiHlLY=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18/go.mod h1:XhwkgGG6bHSd00nO/mexWTcTjgd6PjuvWQMqSn2UaEk=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 h1:X1Tow7suZk9UCJHE1Iw9GMZJJl0dAnKXXP1NaSDHwmw=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 h1:X1Tow7suZk9UCJHE1Iw9GMZJJl0dAnKXXP1NaSDHwmw=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19/go.mod h1:/rARO8psX+4sfjUQXp5LLifjUt8DuATZ31WptNJTyQA=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19/go.mod h1:/rARO8psX+4sfjUQXp5LLifjUt8DuATZ31WptNJTyQA=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.18 h1:/A/xDuZAVD2BpsS2fftFRo/NoEKQJ8YTnJDEHBy2Gtg=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.18/go.mod h1:hWe9b4f+djUQGmyiGEeOnZv69dtMSgpDRIvNMvuvzvY=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 h1:JnQeStZvPHFHeyky/7LbMlyQjUa+jIBj36OlWm0pzIk=
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 h1:JnQeStZvPHFHeyky/7LbMlyQjUa+jIBj36OlWm0pzIk=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19/go.mod h1:HGyasyHvYdFQeJhvDHfH7HXkHh57htcJGKDZ+7z+I24=
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19/go.mod h1:HGyasyHvYdFQeJhvDHfH7HXkHh57htcJGKDZ+7z+I24=
|
||||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.2 h1:zoD/SoiVQi8l8tuQn//VexrXS2yorg/+717JNA4Ble8=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.2/go.mod h1:Ll1DCasPTBFtHK5t/U5WIwGIyRuY3xY+x8/LmqIlqpM=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.3 h1:JRPXnIr0WwFsSHBmuCvT/uh0Vgys+crvwkOghbJEqi8=
|
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.3 h1:JRPXnIr0WwFsSHBmuCvT/uh0Vgys+crvwkOghbJEqi8=
|
||||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.3/go.mod h1:DHddp7OO4bY467WVCqWBzk5+aEWn7vqYkap7UigJzGk=
|
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.3/go.mod h1:DHddp7OO4bY467WVCqWBzk5+aEWn7vqYkap7UigJzGk=
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.2 h1:M1A9AjcFwlxTLuf0Faj88L8Iqw0n/AJHjpZTQzMMsSc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.2/go.mod h1:KsdTV6Q9WKUZm2mNJnUFmIoXfZux91M3sr/a4REX8e0=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3 h1:+d0SsTvxtIJt4tSJ6wr+jrxEMDa6XeupjRv8H7Qitkk=
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3 h1:+d0SsTvxtIJt4tSJ6wr+jrxEMDa6XeupjRv8H7Qitkk=
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3/go.mod h1:ROUNFvFWPwBlOu687WJNQ9cPvd2ccpFrnCiA1YGz50o=
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.3/go.mod h1:ROUNFvFWPwBlOu687WJNQ9cPvd2ccpFrnCiA1YGz50o=
|
||||||
github.com/aws/aws-sdk-go-v2/service/signin v1.0.6 h1:MzORe+J94I+hYu2a6XmV5yC9huoTv8NRcCrUNedDypQ=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/signin v1.0.6/go.mod h1:hXzcHLARD7GeWnifd8j9RWqtfIgxj4/cAtIVIK7hg8g=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 h1:Y2cAXlClHsXkkOvWZFXATr34b0hxxloeQu/pAZz2row=
|
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7 h1:Y2cAXlClHsXkkOvWZFXATr34b0hxxloeQu/pAZz2row=
|
||||||
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7/go.mod h1:idzZ7gmDeqeNrSPkdbtMp9qWMgcBwykA7P7Rzh5DXVU=
|
github.com/aws/aws-sdk-go-v2/service/signin v1.0.7/go.mod h1:idzZ7gmDeqeNrSPkdbtMp9qWMgcBwykA7P7Rzh5DXVU=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.30.11 h1:7oGD8KPfBOJGXiCoRKrrrQkbvCp8N++u36hrLMPey6o=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.30.11/go.mod h1:0DO9B5EUJQlIDif+XJRWCljZRKsAFKh3gpFz7UnDtOo=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 h1:iSsvB9EtQ09YrsmIc44Heqlx5ByGErqhPK1ZQLppias=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12 h1:iSsvB9EtQ09YrsmIc44Heqlx5ByGErqhPK1ZQLppias=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12/go.mod h1:fEWYKTRGoZNl8tZ77i61/ccwOMJdGxwOhWCkp6TXAr0=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.30.12/go.mod h1:fEWYKTRGoZNl8tZ77i61/ccwOMJdGxwOhWCkp6TXAr0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15 h1:edCcNp9eGIUDUCrzoCu1jWAXLGFIizeqkdkKgRlJwWc=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15/go.mod h1:lyRQKED9xWfgkYC/wmmYfv7iVIM68Z5OQ88ZdcV1QbU=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 h1:EnUdUqRP1CNzt2DkV67tJx6XDN4xlfBFm+bzeNOQVb0=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 h1:EnUdUqRP1CNzt2DkV67tJx6XDN4xlfBFm+bzeNOQVb0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16/go.mod h1:Jic/xv0Rq/pFNCh3WwpH4BEqdbSAl+IyHro8LbibHD8=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16/go.mod h1:Jic/xv0Rq/pFNCh3WwpH4BEqdbSAl+IyHro8LbibHD8=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.41.7 h1:NITQpgo9A5NrDZ57uOWj+abvXSb83BbyggcUBVksN7c=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.41.7/go.mod h1:sks5UWBhEuWYDPdwlnRFn1w7xWdH29Jcpe+/PJQefEs=
|
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 h1:XQTQTF75vnug2TXS8m7CVJfC2nniYPZnO1D4Np761Oo=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8 h1:XQTQTF75vnug2TXS8m7CVJfC2nniYPZnO1D4Np761Oo=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8/go.mod h1:Xgx+PR1NUOjNmQY+tRMnouRp83JRM8pRMw/vCaVhPkI=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.41.8/go.mod h1:Xgx+PR1NUOjNmQY+tRMnouRp83JRM8pRMw/vCaVhPkI=
|
||||||
github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
|
github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
|
||||||
@@ -92,12 +54,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
|||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||||
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
|
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
|
||||||
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
|
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
|
||||||
github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ=
|
|
||||||
github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA=
|
|
||||||
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
|
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
|
||||||
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
|
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
|
||||||
github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=
|
|
||||||
github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
|
|
||||||
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
|
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
|
||||||
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
|
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||||
@@ -126,8 +84,6 @@ github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCK
|
|||||||
github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
|
github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
|
||||||
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
|
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
|
||||||
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
|
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
|
||||||
github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk=
|
|
||||||
github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls=
|
|
||||||
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
|
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
|
||||||
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
|
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
|
||||||
github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug=
|
github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug=
|
||||||
@@ -167,8 +123,6 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L
|
|||||||
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||||
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
||||||
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||||
github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=
|
|
||||||
github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
|
||||||
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
|
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
|
||||||
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
||||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
@@ -261,12 +215,8 @@ github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSz
|
|||||||
github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
|
github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
|
||||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||||
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
|
|
||||||
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
|
|
||||||
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
|
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
|
||||||
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
|
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
|
||||||
github.com/quic-go/quic-go v0.54.0 h1:6s1YB9QotYI6Ospeiguknbp2Znb/jZYjZLRXn9kMQBg=
|
|
||||||
github.com/quic-go/quic-go v0.54.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
|
|
||||||
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
|
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
|
||||||
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
||||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
||||||
@@ -320,8 +270,6 @@ github.com/tuvistavie/securerandom v0.0.0-20140719024926-15512123a948 h1:yL0l/u2
|
|||||||
github.com/tuvistavie/securerandom v0.0.0-20140719024926-15512123a948/go.mod h1:a06d/M1pxWi51qiSrfGMHaEydtuXT06nha8N2aNQuXk=
|
github.com/tuvistavie/securerandom v0.0.0-20140719024926-15512123a948/go.mod h1:a06d/M1pxWi51qiSrfGMHaEydtuXT06nha8N2aNQuXk=
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
github.com/ugorji/go/codec v1.3.0 h1:Qd2W2sQawAfG8XSvzwhBeoGq71zXOC/Q1E9y/wUcsUA=
|
|
||||||
github.com/ugorji/go/codec v1.3.0/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
|
|
||||||
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
|
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
|
||||||
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
|
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
|
||||||
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
|
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
|
||||||
@@ -335,13 +283,10 @@ go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF
|
|||||||
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
|
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
|
||||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||||
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
|
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
|
||||||
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
|
|
||||||
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
|
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
|
||||||
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
||||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||||
golang.org/x/arch v0.20.0 h1:dx1zTU0MAE98U+TQ8BLl7XsJbgze2WnNKF/8tGp/Q6c=
|
|
||||||
golang.org/x/arch v0.20.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk=
|
|
||||||
golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI=
|
golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI=
|
||||||
golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
|
golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
@@ -360,8 +305,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
|
|
||||||
golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
|
|
||||||
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
|
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
|
||||||
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
|
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
|
||||||
golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
|
golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
|
||||||
@@ -410,8 +353,6 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
|||||||
golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
|
golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
|
||||||
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
|
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
|
|
||||||
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
|
|
||||||
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
|
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
|
||||||
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ package api
|
|||||||
import (
|
import (
|
||||||
"github.com/glueops/autoglue/internal/api/httpmiddleware"
|
"github.com/glueops/autoglue/internal/api/httpmiddleware"
|
||||||
"github.com/glueops/autoglue/internal/bg"
|
"github.com/glueops/autoglue/internal/bg"
|
||||||
|
"github.com/glueops/autoglue/internal/config"
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mountAPIRoutes(r chi.Router, db *gorm.DB, jobs *bg.Jobs) {
|
func mountAPIRoutes(r chi.Router, db *gorm.DB, cfg config.Config, jobs *bg.Jobs) {
|
||||||
r.Route("/api", func(api chi.Router) {
|
r.Route("/api", func(api chi.Router) {
|
||||||
api.Route("/v1", func(v1 chi.Router) {
|
api.Route("/v1", func(v1 chi.Router) {
|
||||||
authUser := httpmiddleware.AuthMiddleware(db, false)
|
authUser := httpmiddleware.AuthMiddleware(db, false)
|
||||||
@@ -33,7 +34,7 @@ func mountAPIRoutes(r chi.Router, db *gorm.DB, jobs *bg.Jobs) {
|
|||||||
mountNodePoolRoutes(v1, db, authOrg)
|
mountNodePoolRoutes(v1, db, authOrg)
|
||||||
mountDNSRoutes(v1, db, authOrg)
|
mountDNSRoutes(v1, db, authOrg)
|
||||||
mountLoadBalancerRoutes(v1, db, authOrg)
|
mountLoadBalancerRoutes(v1, db, authOrg)
|
||||||
mountClusterRoutes(v1, db, jobs, authOrg)
|
mountClusterRoutes(v1, db, cfg, jobs, authOrg)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,40 +4,41 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/glueops/autoglue/internal/bg"
|
"github.com/glueops/autoglue/internal/bg"
|
||||||
|
"github.com/glueops/autoglue/internal/config"
|
||||||
"github.com/glueops/autoglue/internal/handlers"
|
"github.com/glueops/autoglue/internal/handlers"
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mountClusterRoutes(r chi.Router, db *gorm.DB, jobs *bg.Jobs, authOrg func(http.Handler) http.Handler) {
|
func mountClusterRoutes(r chi.Router, db *gorm.DB, cfg config.Config, jobs *bg.Jobs, authOrg func(http.Handler) http.Handler) {
|
||||||
r.Route("/clusters", func(c chi.Router) {
|
r.Route("/clusters", func(c chi.Router) {
|
||||||
c.Use(authOrg)
|
c.Use(authOrg)
|
||||||
c.Get("/", handlers.ListClusters(db))
|
c.Get("/", handlers.ListClusters(db, cfg))
|
||||||
c.Post("/", handlers.CreateCluster(db))
|
c.Post("/", handlers.CreateCluster(db, cfg))
|
||||||
|
|
||||||
c.Get("/{clusterID}", handlers.GetCluster(db))
|
c.Get("/{clusterID}", handlers.GetCluster(db, cfg))
|
||||||
c.Patch("/{clusterID}", handlers.UpdateCluster(db))
|
c.Patch("/{clusterID}", handlers.UpdateCluster(db, cfg))
|
||||||
c.Delete("/{clusterID}", handlers.DeleteCluster(db))
|
c.Delete("/{clusterID}", handlers.DeleteCluster(db))
|
||||||
|
|
||||||
c.Post("/{clusterID}/captain-domain", handlers.AttachCaptainDomain(db))
|
c.Post("/{clusterID}/captain-domain", handlers.AttachCaptainDomain(db, cfg))
|
||||||
c.Delete("/{clusterID}/captain-domain", handlers.DetachCaptainDomain(db))
|
c.Delete("/{clusterID}/captain-domain", handlers.DetachCaptainDomain(db, cfg))
|
||||||
|
|
||||||
c.Post("/{clusterID}/control-plane-record-set", handlers.AttachControlPlaneRecordSet(db))
|
c.Post("/{clusterID}/control-plane-record-set", handlers.AttachControlPlaneRecordSet(db, cfg))
|
||||||
c.Delete("/{clusterID}/control-plane-record-set", handlers.DetachControlPlaneRecordSet(db))
|
c.Delete("/{clusterID}/control-plane-record-set", handlers.DetachControlPlaneRecordSet(db, cfg))
|
||||||
|
|
||||||
c.Post("/{clusterID}/apps-load-balancer", handlers.AttachAppsLoadBalancer(db))
|
c.Post("/{clusterID}/apps-load-balancer", handlers.AttachAppsLoadBalancer(db, cfg))
|
||||||
c.Delete("/{clusterID}/apps-load-balancer", handlers.DetachAppsLoadBalancer(db))
|
c.Delete("/{clusterID}/apps-load-balancer", handlers.DetachAppsLoadBalancer(db, cfg))
|
||||||
c.Post("/{clusterID}/glueops-load-balancer", handlers.AttachGlueOpsLoadBalancer(db))
|
c.Post("/{clusterID}/glueops-load-balancer", handlers.AttachGlueOpsLoadBalancer(db, cfg))
|
||||||
c.Delete("/{clusterID}/glueops-load-balancer", handlers.DetachGlueOpsLoadBalancer(db))
|
c.Delete("/{clusterID}/glueops-load-balancer", handlers.DetachGlueOpsLoadBalancer(db, cfg))
|
||||||
|
|
||||||
c.Post("/{clusterID}/bastion", handlers.AttachBastionServer(db))
|
c.Post("/{clusterID}/bastion", handlers.AttachBastionServer(db, cfg))
|
||||||
c.Delete("/{clusterID}/bastion", handlers.DetachBastionServer(db))
|
c.Delete("/{clusterID}/bastion", handlers.DetachBastionServer(db, cfg))
|
||||||
|
|
||||||
c.Post("/{clusterID}/kubeconfig", handlers.SetClusterKubeconfig(db))
|
c.Post("/{clusterID}/kubeconfig", handlers.SetClusterKubeconfig(db, cfg))
|
||||||
c.Delete("/{clusterID}/kubeconfig", handlers.ClearClusterKubeconfig(db))
|
c.Delete("/{clusterID}/kubeconfig", handlers.ClearClusterKubeconfig(db, cfg))
|
||||||
|
|
||||||
c.Post("/{clusterID}/node-pools", handlers.AttachNodePool(db))
|
c.Post("/{clusterID}/node-pools", handlers.AttachNodePool(db, cfg))
|
||||||
c.Delete("/{clusterID}/node-pools/{nodePoolID}", handlers.DetachNodePool(db))
|
c.Delete("/{clusterID}/node-pools/{nodePoolID}", handlers.DetachNodePool(db, cfg))
|
||||||
|
|
||||||
c.Get("/{clusterID}/runs", handlers.ListClusterRuns(db))
|
c.Get("/{clusterID}/runs", handlers.ListClusterRuns(db))
|
||||||
c.Get("/{clusterID}/runs/{runID}", handlers.GetClusterRun(db))
|
c.Get("/{clusterID}/runs/{runID}", handlers.GetClusterRun(db))
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewRouter(db *gorm.DB, jobs *bg.Jobs, studio http.Handler) http.Handler {
|
func NewRouter(db *gorm.DB, jobs *bg.Jobs, cfg config.Config, studio http.Handler) http.Handler {
|
||||||
zerolog.TimeFieldFormat = time.RFC3339
|
zerolog.TimeFieldFormat = time.RFC3339
|
||||||
|
|
||||||
l := log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: "15:04:05"})
|
l := log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: "15:04:05"})
|
||||||
@@ -70,7 +70,7 @@ func NewRouter(db *gorm.DB, jobs *bg.Jobs, studio http.Handler) http.Handler {
|
|||||||
r.Get("/.well-known/jwks.json", handlers.JWKSHandler)
|
r.Get("/.well-known/jwks.json", handlers.JWKSHandler)
|
||||||
|
|
||||||
// Versioned API
|
// Versioned API
|
||||||
mountAPIRoutes(r, db, jobs)
|
mountAPIRoutes(r, db, cfg, jobs)
|
||||||
|
|
||||||
// Optional DB studio
|
// Optional DB studio
|
||||||
if studio != nil {
|
if studio != nil {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func archerOptionsFromDSN(dsn string) (*archer.Options, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewJobs(gdb *gorm.DB, dbUrl string) (*Jobs, error) {
|
func NewJobs(gdb *gorm.DB, dbUrl, baseURL string) (*Jobs, error) {
|
||||||
opts, err := archerOptionsFromDSN(dbUrl)
|
opts, err := archerOptionsFromDSN(dbUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -140,7 +140,7 @@ func NewJobs(gdb *gorm.DB, dbUrl string) (*Jobs, error) {
|
|||||||
|
|
||||||
c.Register(
|
c.Register(
|
||||||
"cluster_action",
|
"cluster_action",
|
||||||
ClusterActionWorker(gdb),
|
ClusterActionWorker(gdb, baseURL),
|
||||||
archer.WithInstances(1),
|
archer.WithInstances(1),
|
||||||
)
|
)
|
||||||
return jobs, nil
|
return jobs, nil
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ type ClusterActionResult struct {
|
|||||||
ElapsedMs int `json:"elapsed_ms"`
|
ElapsedMs int `json:"elapsed_ms"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func ClusterActionWorker(db *gorm.DB) archer.WorkerFn {
|
func ClusterActionWorker(db *gorm.DB, baseURL string) archer.WorkerFn {
|
||||||
return func(ctx context.Context, j job.Job) (any, error) {
|
return func(ctx context.Context, j job.Job) (any, error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
var args ClusterActionArgs
|
var args ClusterActionArgs
|
||||||
@@ -121,6 +121,7 @@ func ClusterActionWorker(db *gorm.DB) archer.WorkerFn {
|
|||||||
}
|
}
|
||||||
dtoCluster.OrgKey = &orgKey
|
dtoCluster.OrgKey = &orgKey
|
||||||
dtoCluster.OrgSecret = &orgSecret
|
dtoCluster.OrgSecret = &orgSecret
|
||||||
|
dtoCluster.BaseURL = baseURL
|
||||||
|
|
||||||
payloadJSON, err := json.MarshalIndent(dtoCluster, "", " ")
|
payloadJSON, err := json.MarshalIndent(dtoCluster, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ type Config struct {
|
|||||||
DbURLRO string
|
DbURLRO string
|
||||||
Port string
|
Port string
|
||||||
Host string
|
Host string
|
||||||
|
BaseURL string
|
||||||
JWTIssuer string
|
JWTIssuer string
|
||||||
JWTAudience string
|
JWTAudience string
|
||||||
JWTPrivateEncKey string
|
JWTPrivateEncKey string
|
||||||
@@ -61,6 +62,7 @@ func Load() (Config, error) {
|
|||||||
v.SetDefault("db_studio.port", "0") // 0 = random
|
v.SetDefault("db_studio.port", "0") // 0 = random
|
||||||
v.SetDefault("db_studio.user", "")
|
v.SetDefault("db_studio.user", "")
|
||||||
v.SetDefault("db_studio.pass", "")
|
v.SetDefault("db_studio.pass", "")
|
||||||
|
v.SetDefault("base.url", "")
|
||||||
|
|
||||||
v.SetDefault("ui.dev", false)
|
v.SetDefault("ui.dev", false)
|
||||||
v.SetDefault("env", "development")
|
v.SetDefault("env", "development")
|
||||||
@@ -75,6 +77,7 @@ func Load() (Config, error) {
|
|||||||
keys := []string{
|
keys := []string{
|
||||||
"bind.address",
|
"bind.address",
|
||||||
"bind.port",
|
"bind.port",
|
||||||
|
"base.url",
|
||||||
"database.url",
|
"database.url",
|
||||||
"database.url_ro",
|
"database.url_ro",
|
||||||
"jwt.issuer",
|
"jwt.issuer",
|
||||||
@@ -106,6 +109,7 @@ func Load() (Config, error) {
|
|||||||
DbURLRO: v.GetString("database.url_ro"),
|
DbURLRO: v.GetString("database.url_ro"),
|
||||||
Port: v.GetString("bind.port"),
|
Port: v.GetString("bind.port"),
|
||||||
Host: v.GetString("bind.address"),
|
Host: v.GetString("bind.address"),
|
||||||
|
BaseURL: v.GetString("base.url"),
|
||||||
JWTIssuer: v.GetString("jwt.issuer"),
|
JWTIssuer: v.GetString("jwt.issuer"),
|
||||||
JWTAudience: v.GetString("jwt.audience"),
|
JWTAudience: v.GetString("jwt.audience"),
|
||||||
JWTPrivateEncKey: v.GetString("jwt.private.enc.key"),
|
JWTPrivateEncKey: v.GetString("jwt.private.enc.key"),
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/glueops/autoglue/internal/api/httpmiddleware"
|
"github.com/glueops/autoglue/internal/api/httpmiddleware"
|
||||||
"github.com/glueops/autoglue/internal/common"
|
"github.com/glueops/autoglue/internal/common"
|
||||||
|
"github.com/glueops/autoglue/internal/config"
|
||||||
"github.com/glueops/autoglue/internal/handlers/dto"
|
"github.com/glueops/autoglue/internal/handlers/dto"
|
||||||
"github.com/glueops/autoglue/internal/models"
|
"github.com/glueops/autoglue/internal/models"
|
||||||
"github.com/glueops/autoglue/internal/utils"
|
"github.com/glueops/autoglue/internal/utils"
|
||||||
@@ -37,7 +38,7 @@ import (
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func ListClusters(db *gorm.DB) http.HandlerFunc {
|
func ListClusters(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -69,7 +70,7 @@ func ListClusters(db *gorm.DB) http.HandlerFunc {
|
|||||||
|
|
||||||
out := make([]dto.ClusterResponse, 0, len(rows))
|
out := make([]dto.ClusterResponse, 0, len(rows))
|
||||||
for _, row := range rows {
|
for _, row := range rows {
|
||||||
cr := clusterToDTO(row)
|
cr := clusterToDTO(row, cfg)
|
||||||
|
|
||||||
if row.EncryptedKubeconfig != "" && row.KubeIV != "" && row.KubeTag != "" {
|
if row.EncryptedKubeconfig != "" && row.KubeIV != "" && row.KubeTag != "" {
|
||||||
kubeconfig, err := utils.DecryptForOrg(orgID, row.EncryptedKubeconfig, row.KubeIV, row.KubeTag, db)
|
kubeconfig, err := utils.DecryptForOrg(orgID, row.EncryptedKubeconfig, row.KubeIV, row.KubeTag, db)
|
||||||
@@ -104,7 +105,7 @@ func ListClusters(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func GetCluster(db *gorm.DB) http.HandlerFunc {
|
func GetCluster(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -141,7 +142,7 @@ func GetCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := clusterToDTO(cluster)
|
resp := clusterToDTO(cluster, cfg)
|
||||||
|
|
||||||
if cluster.EncryptedKubeconfig != "" && cluster.KubeIV != "" && cluster.KubeTag != "" {
|
if cluster.EncryptedKubeconfig != "" && cluster.KubeIV != "" && cluster.KubeTag != "" {
|
||||||
kubeconfig, err := utils.DecryptForOrg(orgID, cluster.EncryptedKubeconfig, cluster.KubeIV, cluster.KubeTag, db)
|
kubeconfig, err := utils.DecryptForOrg(orgID, cluster.EncryptedKubeconfig, cluster.KubeIV, cluster.KubeTag, db)
|
||||||
@@ -175,7 +176,7 @@ func GetCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func CreateCluster(db *gorm.DB) http.HandlerFunc {
|
func CreateCluster(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -219,7 +220,7 @@ func CreateCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusCreated, clusterToDTO(c))
|
utils.WriteJSON(w, http.StatusCreated, clusterToDTO(c, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +245,7 @@ func CreateCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func UpdateCluster(db *gorm.DB) http.HandlerFunc {
|
func UpdateCluster(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -317,7 +318,7 @@ func UpdateCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -389,7 +390,7 @@ func DeleteCluster(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
func AttachCaptainDomain(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -455,7 +456,7 @@ func AttachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
|||||||
utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error")
|
utils.WriteError(w, http.StatusInternalServerError, "db_error", "db error")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,7 +479,7 @@ func AttachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
func DetachCaptainDomain(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -525,7 +526,7 @@ func DetachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,7 +551,7 @@ func DetachCaptainDomain(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
func AttachControlPlaneRecordSet(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -617,7 +618,7 @@ func AttachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -640,7 +641,7 @@ func AttachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
func DetachControlPlaneRecordSet(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -687,7 +688,7 @@ func DetachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -712,7 +713,7 @@ func DetachControlPlaneRecordSet(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
func AttachAppsLoadBalancer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -775,7 +776,7 @@ func AttachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -798,7 +799,7 @@ func AttachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
func DetachAppsLoadBalancer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -845,7 +846,7 @@ func DetachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -870,7 +871,7 @@ func DetachAppsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
func AttachGlueOpsLoadBalancer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -933,7 +934,7 @@ func AttachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -956,7 +957,7 @@ func AttachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
func DetachGlueOpsLoadBalancer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1003,7 +1004,7 @@ func DetachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1028,7 +1029,7 @@ func DetachGlueOpsLoadBalancer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachBastionServer(db *gorm.DB) http.HandlerFunc {
|
func AttachBastionServer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1091,7 +1092,7 @@ func AttachBastionServer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1114,7 +1115,7 @@ func AttachBastionServer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachBastionServer(db *gorm.DB) http.HandlerFunc {
|
func DetachBastionServer(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1161,7 +1162,7 @@ func DetachBastionServer(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1186,7 +1187,7 @@ func DetachBastionServer(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func SetClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
func SetClusterKubeconfig(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1248,7 +1249,7 @@ func SetClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1271,7 +1272,7 @@ func SetClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func ClearClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
func ClearClusterKubeconfig(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1321,7 +1322,7 @@ func ClearClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1346,7 +1347,7 @@ func ClearClusterKubeconfig(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func AttachNodePool(db *gorm.DB) http.HandlerFunc {
|
func AttachNodePool(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1420,7 +1421,7 @@ func AttachNodePool(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1444,7 +1445,7 @@ func AttachNodePool(db *gorm.DB) http.HandlerFunc {
|
|||||||
// @Security BearerAuth
|
// @Security BearerAuth
|
||||||
// @Security OrgKeyAuth
|
// @Security OrgKeyAuth
|
||||||
// @Security OrgSecretAuth
|
// @Security OrgSecretAuth
|
||||||
func DetachNodePool(db *gorm.DB) http.HandlerFunc {
|
func DetachNodePool(db *gorm.DB, cfg config.Config) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
orgID, ok := httpmiddleware.OrgIDFrom(r.Context())
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -1514,13 +1515,13 @@ func DetachNodePool(db *gorm.DB) http.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster))
|
utils.WriteJSON(w, http.StatusOK, clusterToDTO(cluster, cfg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -- Helpers
|
// -- Helpers
|
||||||
|
|
||||||
func clusterToDTO(c models.Cluster) dto.ClusterResponse {
|
func clusterToDTO(c models.Cluster, cfg config.Config) dto.ClusterResponse {
|
||||||
var bastion *dto.ServerResponse
|
var bastion *dto.ServerResponse
|
||||||
if c.BastionServer != nil {
|
if c.BastionServer != nil {
|
||||||
b := serverToDTO(*c.BastionServer)
|
b := serverToDTO(*c.BastionServer)
|
||||||
@@ -1561,10 +1562,11 @@ func clusterToDTO(c models.Cluster) dto.ClusterResponse {
|
|||||||
for _, np := range c.NodePools {
|
for _, np := range c.NodePools {
|
||||||
nps = append(nps, nodePoolToDTO(np))
|
nps = append(nps, nodePoolToDTO(np))
|
||||||
}
|
}
|
||||||
|
fmt.Println(cfg.BaseURL)
|
||||||
return dto.ClusterResponse{
|
return dto.ClusterResponse{
|
||||||
ID: c.ID,
|
ID: c.ID,
|
||||||
Name: c.Name,
|
Name: c.Name,
|
||||||
|
BaseURL: cfg.BaseURL,
|
||||||
CaptainDomain: captainDomain,
|
CaptainDomain: captainDomain,
|
||||||
ControlPlaneRecordSet: controlPlane,
|
ControlPlaneRecordSet: controlPlane,
|
||||||
ControlPlaneFQDN: cfqdn,
|
ControlPlaneFQDN: cfqdn,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
type ClusterResponse struct {
|
type ClusterResponse struct {
|
||||||
ID uuid.UUID `json:"id"`
|
ID uuid.UUID `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
BaseURL string `json:"base_url"`
|
||||||
CaptainDomain *DomainResponse `json:"captain_domain,omitempty"`
|
CaptainDomain *DomainResponse `json:"captain_domain,omitempty"`
|
||||||
ControlPlaneRecordSet *RecordSetResponse `json:"control_plane_record_set,omitempty"`
|
ControlPlaneRecordSet *RecordSetResponse `json:"control_plane_record_set,omitempty"`
|
||||||
ControlPlaneFQDN *string `json:"control_plane_fqdn,omitempty"`
|
ControlPlaneFQDN *string `json:"control_plane_fqdn,omitempty"`
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ RUN cd /var/lib/postgresql/ && \
|
|||||||
openssl req -x509 -in server.req -text -key server.key -out server.crt && \
|
openssl req -x509 -in server.req -text -key server.key -out server.crt && \
|
||||||
chmod 600 server.key && \
|
chmod 600 server.key && \
|
||||||
chown postgres:postgres server.key
|
chown postgres:postgres server.key
|
||||||
CMD ["postgres", "-c", "ssl=on", "-c", "ssl_cert_file=/var/lib/postgresql/server.crt", "-c", "ssl_key_file=/var/lib/postgresql/server.key" ]
|
CMD ["postgres", "-c", "ssl=on", "-c", "ssl_cert_file=/var/lib/postgresql/server.crt", "-c", "ssl_key_file=/var/lib/postgresql/server.key" ]
|
||||||
38823
repomix-output.xml
Normal file
38823
repomix-output.xml
Normal file
File diff suppressed because one or more lines are too long
435
schema.sql
435
schema.sql
@@ -1,435 +0,0 @@
|
|||||||
-- Add new schema named "public"
|
|
||||||
CREATE SCHEMA IF NOT EXISTS "public";
|
|
||||||
-- Set comment to schema: "public"
|
|
||||||
COMMENT ON SCHEMA "public" IS 'standard public schema';
|
|
||||||
-- Create "jobs" table
|
|
||||||
CREATE TABLE "public"."jobs" (
|
|
||||||
"id" character varying NOT NULL,
|
|
||||||
"queue_name" character varying NOT NULL,
|
|
||||||
"status" character varying NOT NULL,
|
|
||||||
"arguments" jsonb NOT NULL DEFAULT '{}',
|
|
||||||
"result" jsonb NOT NULL DEFAULT '{}',
|
|
||||||
"last_error" character varying NULL,
|
|
||||||
"retry_count" bigint NOT NULL DEFAULT 0,
|
|
||||||
"max_retry" bigint NOT NULL DEFAULT 0,
|
|
||||||
"retry_interval" bigint NOT NULL DEFAULT 0,
|
|
||||||
"scheduled_at" timestamptz NULL DEFAULT now(),
|
|
||||||
"started_at" timestamptz NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create index "idx_jobs_scheduled_at" to table: "jobs"
|
|
||||||
CREATE INDEX "idx_jobs_scheduled_at" ON "public"."jobs" ("scheduled_at");
|
|
||||||
-- Create index "idx_jobs_started_at" to table: "jobs"
|
|
||||||
CREATE INDEX "idx_jobs_started_at" ON "public"."jobs" ("started_at");
|
|
||||||
-- Create "api_keys" table
|
|
||||||
CREATE TABLE "public"."api_keys" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"name" text NOT NULL DEFAULT '',
|
|
||||||
"key_hash" text NOT NULL,
|
|
||||||
"scope" text NOT NULL DEFAULT '',
|
|
||||||
"user_id" text NULL,
|
|
||||||
"org_id" text NULL,
|
|
||||||
"secret_hash" text NULL,
|
|
||||||
"expires_at" timestamptz NULL,
|
|
||||||
"revoked" boolean NOT NULL DEFAULT false,
|
|
||||||
"prefix" text NULL,
|
|
||||||
"last_used_at" timestamptz NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create index "idx_api_keys_key_hash" to table: "api_keys"
|
|
||||||
CREATE UNIQUE INDEX "idx_api_keys_key_hash" ON "public"."api_keys" ("key_hash");
|
|
||||||
-- Create "refresh_tokens" table
|
|
||||||
CREATE TABLE "public"."refresh_tokens" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"user_id" text NOT NULL,
|
|
||||||
"family_id" uuid NOT NULL,
|
|
||||||
"token_hash" text NOT NULL,
|
|
||||||
"expires_at" timestamptz NOT NULL,
|
|
||||||
"revoked_at" timestamptz NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create index "idx_refresh_tokens_family_id" to table: "refresh_tokens"
|
|
||||||
CREATE INDEX "idx_refresh_tokens_family_id" ON "public"."refresh_tokens" ("family_id");
|
|
||||||
-- Create index "idx_refresh_tokens_token_hash" to table: "refresh_tokens"
|
|
||||||
CREATE UNIQUE INDEX "idx_refresh_tokens_token_hash" ON "public"."refresh_tokens" ("token_hash");
|
|
||||||
-- Create index "idx_refresh_tokens_user_id" to table: "refresh_tokens"
|
|
||||||
CREATE INDEX "idx_refresh_tokens_user_id" ON "public"."refresh_tokens" ("user_id");
|
|
||||||
-- Create "users" table
|
|
||||||
CREATE TABLE "public"."users" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"display_name" text NULL,
|
|
||||||
"primary_email" text NULL,
|
|
||||||
"avatar_url" text NULL,
|
|
||||||
"is_disabled" boolean NULL,
|
|
||||||
"is_admin" boolean NULL DEFAULT false,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create "signing_keys" table
|
|
||||||
CREATE TABLE "public"."signing_keys" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"kid" text NOT NULL,
|
|
||||||
"alg" text NOT NULL,
|
|
||||||
"use" text NOT NULL DEFAULT 'sig',
|
|
||||||
"is_active" boolean NOT NULL DEFAULT true,
|
|
||||||
"public_pem" text NOT NULL,
|
|
||||||
"private_pem" text NOT NULL,
|
|
||||||
"not_before" timestamptz NULL,
|
|
||||||
"expires_at" timestamptz NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"rotated_from" text NULL,
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create index "idx_signing_keys_kid" to table: "signing_keys"
|
|
||||||
CREATE UNIQUE INDEX "idx_signing_keys_kid" ON "public"."signing_keys" ("kid");
|
|
||||||
-- Create "accounts" table
|
|
||||||
CREATE TABLE "public"."accounts" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"user_id" uuid NOT NULL,
|
|
||||||
"provider" text NOT NULL,
|
|
||||||
"subject" text NOT NULL,
|
|
||||||
"email" text NULL,
|
|
||||||
"email_verified" boolean NOT NULL DEFAULT false,
|
|
||||||
"profile" jsonb NOT NULL DEFAULT '{}',
|
|
||||||
"secret_hash" text NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_accounts_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
||||||
);
|
|
||||||
-- Create index "idx_accounts_user_id" to table: "accounts"
|
|
||||||
CREATE INDEX "idx_accounts_user_id" ON "public"."accounts" ("user_id");
|
|
||||||
-- Create "organizations" table
|
|
||||||
CREATE TABLE "public"."organizations" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"domain" text NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create index "idx_organizations_domain" to table: "organizations"
|
|
||||||
CREATE INDEX "idx_organizations_domain" ON "public"."organizations" ("domain");
|
|
||||||
-- Create "annotations" table
|
|
||||||
CREATE TABLE "public"."annotations" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"value" text NOT NULL,
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_annotations_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_annotations_organization_id" to table: "annotations"
|
|
||||||
CREATE INDEX "idx_annotations_organization_id" ON "public"."annotations" ("organization_id");
|
|
||||||
-- Create "credentials" table
|
|
||||||
CREATE TABLE "public"."credentials" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"provider" character varying(50) NOT NULL,
|
|
||||||
"kind" character varying(50) NOT NULL,
|
|
||||||
"scope_kind" character varying(20) NOT NULL,
|
|
||||||
"scope" jsonb NOT NULL DEFAULT '{}',
|
|
||||||
"scope_fingerprint" character(64) NOT NULL,
|
|
||||||
"schema_version" bigint NOT NULL DEFAULT 1,
|
|
||||||
"name" character varying(100) NOT NULL DEFAULT '',
|
|
||||||
"scope_version" bigint NOT NULL DEFAULT 1,
|
|
||||||
"account_id" character varying(32) NULL,
|
|
||||||
"region" character varying(32) NULL,
|
|
||||||
"encrypted_data" text NOT NULL,
|
|
||||||
"iv" text NOT NULL,
|
|
||||||
"tag" text NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_credentials_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_credentials_organization_id" to table: "credentials"
|
|
||||||
CREATE INDEX "idx_credentials_organization_id" ON "public"."credentials" ("organization_id");
|
|
||||||
-- Create index "idx_credentials_scope_fingerprint" to table: "credentials"
|
|
||||||
CREATE INDEX "idx_credentials_scope_fingerprint" ON "public"."credentials" ("scope_fingerprint");
|
|
||||||
-- Create index "idx_kind_scope" to table: "credentials"
|
|
||||||
CREATE INDEX "idx_kind_scope" ON "public"."credentials" ("kind", "scope");
|
|
||||||
-- Create index "idx_provider_kind" to table: "credentials"
|
|
||||||
CREATE INDEX "idx_provider_kind" ON "public"."credentials" ("provider", "kind");
|
|
||||||
-- Create index "uniq_org_provider_scopekind_scope" to table: "credentials"
|
|
||||||
CREATE UNIQUE INDEX "uniq_org_provider_scopekind_scope" ON "public"."credentials" ("organization_id", "provider", "scope_kind", "scope_fingerprint");
|
|
||||||
-- Create "backups" table
|
|
||||||
CREATE TABLE "public"."backups" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"enabled" boolean NOT NULL DEFAULT false,
|
|
||||||
"credential_id" uuid NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_backups_credential" FOREIGN KEY ("credential_id") REFERENCES "public"."credentials" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_backups_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_backups_organization_id" to table: "backups"
|
|
||||||
CREATE INDEX "idx_backups_organization_id" ON "public"."backups" ("organization_id");
|
|
||||||
-- Create index "uniq_org_credential" to table: "backups"
|
|
||||||
CREATE UNIQUE INDEX "uniq_org_credential" ON "public"."backups" ("organization_id", "credential_id");
|
|
||||||
-- Create "load_balancers" table
|
|
||||||
CREATE TABLE "public"."load_balancers" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"kind" text NOT NULL,
|
|
||||||
"public_ip_address" text NOT NULL,
|
|
||||||
"private_ip_address" text NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_load_balancers_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_load_balancers_organization_id" to table: "load_balancers"
|
|
||||||
CREATE INDEX "idx_load_balancers_organization_id" ON "public"."load_balancers" ("organization_id");
|
|
||||||
-- Create "ssh_keys" table
|
|
||||||
CREATE TABLE "public"."ssh_keys" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"public_key" text NOT NULL,
|
|
||||||
"encrypted_private_key" text NOT NULL,
|
|
||||||
"private_iv" text NOT NULL,
|
|
||||||
"private_tag" text NOT NULL,
|
|
||||||
"fingerprint" text NOT NULL,
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_ssh_keys_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_ssh_keys_fingerprint" to table: "ssh_keys"
|
|
||||||
CREATE INDEX "idx_ssh_keys_fingerprint" ON "public"."ssh_keys" ("fingerprint");
|
|
||||||
-- Create index "idx_ssh_keys_organization_id" to table: "ssh_keys"
|
|
||||||
CREATE INDEX "idx_ssh_keys_organization_id" ON "public"."ssh_keys" ("organization_id");
|
|
||||||
-- Create "servers" table
|
|
||||||
CREATE TABLE "public"."servers" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"hostname" text NULL,
|
|
||||||
"public_ip_address" text NULL,
|
|
||||||
"private_ip_address" text NOT NULL,
|
|
||||||
"ssh_user" text NOT NULL,
|
|
||||||
"ssh_key_id" uuid NOT NULL,
|
|
||||||
"role" text NOT NULL,
|
|
||||||
"status" text NULL DEFAULT 'pending',
|
|
||||||
"ssh_host_key" text NULL,
|
|
||||||
"ssh_host_key_algo" text NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_servers_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_servers_ssh_key" FOREIGN KEY ("ssh_key_id") REFERENCES "public"."ssh_keys" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
||||||
);
|
|
||||||
-- Create "domains" table
|
|
||||||
CREATE TABLE "public"."domains" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"domain_name" character varying(253) NOT NULL,
|
|
||||||
"zone_id" character varying(128) NOT NULL DEFAULT '',
|
|
||||||
"status" character varying(20) NOT NULL DEFAULT 'pending',
|
|
||||||
"last_error" text NOT NULL DEFAULT '',
|
|
||||||
"credential_id" uuid NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_domains_credential" FOREIGN KEY ("credential_id") REFERENCES "public"."credentials" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_domains_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_domains_organization_id" to table: "domains"
|
|
||||||
CREATE INDEX "idx_domains_organization_id" ON "public"."domains" ("organization_id");
|
|
||||||
-- Create index "uniq_org_domain" to table: "domains"
|
|
||||||
CREATE UNIQUE INDEX "uniq_org_domain" ON "public"."domains" ("organization_id", "domain_name");
|
|
||||||
-- Create "record_sets" table
|
|
||||||
CREATE TABLE "public"."record_sets" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"domain_id" uuid NOT NULL,
|
|
||||||
"name" character varying(253) NOT NULL,
|
|
||||||
"type" character varying(10) NOT NULL,
|
|
||||||
"ttl" bigint NULL,
|
|
||||||
"values" jsonb NOT NULL DEFAULT '[]',
|
|
||||||
"fingerprint" character(64) NOT NULL,
|
|
||||||
"status" character varying(20) NOT NULL DEFAULT 'pending',
|
|
||||||
"owner" character varying(16) NOT NULL DEFAULT 'unknown',
|
|
||||||
"last_error" text NOT NULL DEFAULT '',
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_record_sets_domain" FOREIGN KEY ("domain_id") REFERENCES "public"."domains" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_record_sets_domain_id" to table: "record_sets"
|
|
||||||
CREATE INDEX "idx_record_sets_domain_id" ON "public"."record_sets" ("domain_id");
|
|
||||||
-- Create index "idx_record_sets_fingerprint" to table: "record_sets"
|
|
||||||
CREATE INDEX "idx_record_sets_fingerprint" ON "public"."record_sets" ("fingerprint");
|
|
||||||
-- Create index "idx_record_sets_type" to table: "record_sets"
|
|
||||||
CREATE INDEX "idx_record_sets_type" ON "public"."record_sets" ("type");
|
|
||||||
-- Create "clusters" table
|
|
||||||
CREATE TABLE "public"."clusters" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"provider" text NULL,
|
|
||||||
"region" text NULL,
|
|
||||||
"status" character varying(20) NOT NULL DEFAULT 'pre_pending',
|
|
||||||
"last_error" text NOT NULL DEFAULT '',
|
|
||||||
"captain_domain_id" uuid NULL,
|
|
||||||
"control_plane_record_set_id" uuid NULL,
|
|
||||||
"apps_load_balancer_id" uuid NULL,
|
|
||||||
"glue_ops_load_balancer_id" uuid NULL,
|
|
||||||
"bastion_server_id" uuid NULL,
|
|
||||||
"random_token" text NULL,
|
|
||||||
"certificate_key" text NULL,
|
|
||||||
"encrypted_kubeconfig" text NULL,
|
|
||||||
"kube_iv" text NULL,
|
|
||||||
"kube_tag" text NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_clusters_apps_load_balancer" FOREIGN KEY ("apps_load_balancer_id") REFERENCES "public"."load_balancers" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_clusters_bastion_server" FOREIGN KEY ("bastion_server_id") REFERENCES "public"."servers" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_clusters_captain_domain" FOREIGN KEY ("captain_domain_id") REFERENCES "public"."domains" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_clusters_control_plane_record_set" FOREIGN KEY ("control_plane_record_set_id") REFERENCES "public"."record_sets" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_clusters_glue_ops_load_balancer" FOREIGN KEY ("glue_ops_load_balancer_id") REFERENCES "public"."load_balancers" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
||||||
CONSTRAINT "fk_clusters_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "node_pools" table
|
|
||||||
CREATE TABLE "public"."node_pools" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"role" text NULL,
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_node_pools_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_node_pools_organization_id" to table: "node_pools"
|
|
||||||
CREATE INDEX "idx_node_pools_organization_id" ON "public"."node_pools" ("organization_id");
|
|
||||||
-- Create "cluster_node_pools" table
|
|
||||||
CREATE TABLE "public"."cluster_node_pools" (
|
|
||||||
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"cluster_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
PRIMARY KEY ("node_pool_id", "cluster_id"),
|
|
||||||
CONSTRAINT "fk_cluster_node_pools_cluster" FOREIGN KEY ("cluster_id") REFERENCES "public"."clusters" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_cluster_node_pools_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "labels" table
|
|
||||||
CREATE TABLE "public"."labels" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"value" text NOT NULL,
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_labels_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create index "idx_labels_organization_id" to table: "labels"
|
|
||||||
CREATE INDEX "idx_labels_organization_id" ON "public"."labels" ("organization_id");
|
|
||||||
-- Create "memberships" table
|
|
||||||
CREATE TABLE "public"."memberships" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"user_id" uuid NOT NULL,
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"role" text NOT NULL DEFAULT 'member',
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_memberships_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_memberships_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
||||||
);
|
|
||||||
-- Create index "idx_memberships_organization_id" to table: "memberships"
|
|
||||||
CREATE INDEX "idx_memberships_organization_id" ON "public"."memberships" ("organization_id");
|
|
||||||
-- Create index "idx_memberships_user_id" to table: "memberships"
|
|
||||||
CREATE INDEX "idx_memberships_user_id" ON "public"."memberships" ("user_id");
|
|
||||||
-- Create "node_annotations" table
|
|
||||||
CREATE TABLE "public"."node_annotations" (
|
|
||||||
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"annotation_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
PRIMARY KEY ("node_pool_id", "annotation_id"),
|
|
||||||
CONSTRAINT "fk_node_annotations_annotation" FOREIGN KEY ("annotation_id") REFERENCES "public"."annotations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_node_annotations_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "node_labels" table
|
|
||||||
CREATE TABLE "public"."node_labels" (
|
|
||||||
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"label_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
PRIMARY KEY ("node_pool_id", "label_id"),
|
|
||||||
CONSTRAINT "fk_node_labels_label" FOREIGN KEY ("label_id") REFERENCES "public"."labels" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_node_labels_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "node_servers" table
|
|
||||||
CREATE TABLE "public"."node_servers" (
|
|
||||||
"server_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
PRIMARY KEY ("server_id", "node_pool_id"),
|
|
||||||
CONSTRAINT "fk_node_servers_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_node_servers_server" FOREIGN KEY ("server_id") REFERENCES "public"."servers" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "taints" table
|
|
||||||
CREATE TABLE "public"."taints" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"value" text NOT NULL,
|
|
||||||
"effect" text NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_taints_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "node_taints" table
|
|
||||||
CREATE TABLE "public"."node_taints" (
|
|
||||||
"taint_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
PRIMARY KEY ("taint_id", "node_pool_id"),
|
|
||||||
CONSTRAINT "fk_node_taints_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_node_taints_taint" FOREIGN KEY ("taint_id") REFERENCES "public"."taints" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "master_keys" table
|
|
||||||
CREATE TABLE "public"."master_keys" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"is_active" boolean NULL DEFAULT true,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
);
|
|
||||||
-- Create "organization_keys" table
|
|
||||||
CREATE TABLE "public"."organization_keys" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"organization_id" uuid NOT NULL,
|
|
||||||
"master_key_id" uuid NOT NULL,
|
|
||||||
"encrypted_key" text NOT NULL,
|
|
||||||
"iv" text NOT NULL,
|
|
||||||
"tag" text NOT NULL,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_organization_keys_master_key" FOREIGN KEY ("master_key_id") REFERENCES "public"."master_keys" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
||||||
CONSTRAINT "fk_organization_keys_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
-- Create "user_emails" table
|
|
||||||
CREATE TABLE "public"."user_emails" (
|
|
||||||
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
||||||
"user_id" uuid NOT NULL,
|
|
||||||
"email" text NOT NULL,
|
|
||||||
"is_verified" boolean NOT NULL DEFAULT false,
|
|
||||||
"is_primary" boolean NOT NULL DEFAULT false,
|
|
||||||
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
||||||
PRIMARY KEY ("id"),
|
|
||||||
CONSTRAINT "fk_user_emails_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
||||||
);
|
|
||||||
-- Create index "idx_user_emails_user_id" to table: "user_emails"
|
|
||||||
CREATE INDEX "idx_user_emails_user_id" ON "public"."user_emails" ("user_id");
|
|
||||||
@@ -1517,6 +1517,9 @@ export const ClustersPage = () => {
|
|||||||
</DialogFooter>
|
</DialogFooter>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
<pre>
|
||||||
|
{JSON.stringify(clustersQ.data, null, 2)}
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user