🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

mygithub.libinneed.workers.dev/stackitcloud/stackit-cli

Package Overview
Dependencies
Versions
178
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mygithub.libinneed.workers.dev/stackitcloud/stackit-cli - go Package Compare versions

Comparing version
v0.26.0
to
v0.27.0
+11
internal/pkg/auth/templates/stackit_nav_logo_light.svg
<svg xmlns="http://www.w3.org/2000/svg" width="134" height="22" viewBox="0 0 134 22" fill="none">
<path d="M51.8688 7.7353H56.5271V19.5377H58.7301V7.7353H63.3701V5.66113H51.8688V7.7353Z" fill="#045462"/>
<path d="M105.743 5.66113H103.179L99.5725 11.7845L99.0287 12.6243L99.5695 13.4324L103.403 19.5377H106.004L101.578 12.5543L105.743 5.66113Z" fill="#045462"/>
<path d="M115.626 5.66113H113.423V19.5377H115.626V5.66113Z" fill="#045462"/>
<path d="M71.6047 5.66113L66.512 19.5377H68.8528L70.4394 15.0946L70.803 14.0035L72.5345 9.30638C72.5588 9.23906 72.5846 9.16482 72.6117 9.08374C72.6387 9.16458 72.6643 9.23857 72.6886 9.30535L76.372 19.5377H78.711L73.6183 5.66113H71.6047Z" fill="#045462"/>
<path d="M43.4819 11.5343L43.4815 11.5342C42.0538 10.9305 40.9263 10.4537 40.9263 9.34981C40.9263 8.48396 41.7711 7.58832 43.185 7.58832C44.6498 7.58832 45.6877 8.55392 45.697 8.56263L46.1236 8.97288L47.2281 7.08866L46.981 6.83397C46.9257 6.77702 45.5991 5.44043 43.185 5.44043C40.6623 5.44043 38.6864 7.17389 38.6864 9.38682C38.6864 11.8048 40.7739 12.7055 42.4515 13.4292C43.9586 14.0795 45.1491 14.593 45.1491 15.8311C45.1491 16.8792 44.2808 17.6111 43.0376 17.6111C41.2408 17.6111 39.9987 16.3496 39.9874 16.338L39.6129 15.945L38.2911 17.6541L38.5447 17.9434C38.6098 18.0175 40.175 19.7588 43.0009 19.7588C45.5846 19.7588 47.3892 18.1285 47.3892 15.7942C47.3892 13.1866 45.2227 12.2705 43.4819 11.5343Z" fill="#045462"/>
<path d="M121.874 5.66113V7.7353H126.532V19.5377H128.735V7.7353H133.375V5.66113H121.874Z" fill="#045462"/>
<path d="M88.7669 7.55261C90.9381 7.55261 92.3296 8.84727 92.3433 8.86016L92.7278 9.23026L93.9343 7.54754L93.6755 7.2652C93.5001 7.07846 91.8703 5.44043 88.7296 5.44043C84.932 5.44043 82.0455 8.28642 81.8569 12.1203H81.8386V12.4623C81.8386 12.4716 81.8399 12.4804 81.8399 12.4897C81.8399 12.499 81.8386 12.5079 81.8386 12.5171V12.8592H81.8569C82.0455 16.693 84.932 19.539 88.7296 19.539C91.8675 19.539 93.4997 17.9012 93.6777 17.712L93.9343 17.4319L92.7275 15.7489L92.3435 16.1192C92.3296 16.1322 90.9381 17.4268 88.7669 17.4268C86.0973 17.4268 84.0837 15.3051 84.0784 12.4897C84.0837 9.67437 86.0973 7.55261 88.7669 7.55261Z" fill="#045462"/>
<path d="M7.67387 0L4.99689 12.5446H11.6895L13.1299 5.79617H28.6337L29.8703 0H7.67387Z" fill="#045462"/>
<path d="M18.2405 9.41699L16.7919 16.2043H1.23623L0 22.0004H22.2476L24.9331 9.41699H18.2405Z" fill="#045462"/>
</svg>
+1
-1

@@ -25,3 +25,3 @@ ## stackit beta sqlserverflex user create

Create a SQLServer Flex user for instance with ID "xxx" and specify the username, role and database
$ stackit beta sqlserverflex user create --instance-id xxx --username johndoe --roles "##STACKIT_DatabaseManager##" --database my-database
$ stackit beta sqlserverflex user create --instance-id xxx --username johndoe --roles "##STACKIT_DatabaseManager##"

@@ -28,0 +28,0 @@ Create a SQLServer Flex user for instance with ID "xxx", specifying multiple roles

+13
-18

@@ -7,3 +7,3 @@ module github.com/stackitcloud/stackit-cli

github.com/fatih/color v1.18.0
github.com/goccy/go-yaml v1.15.23
github.com/goccy/go-yaml v1.16.0
github.com/golang-jwt/jwt/v5 v5.2.1

@@ -18,3 +18,3 @@ github.com/google/go-cmp v0.7.0

github.com/spf13/pflag v1.0.6
github.com/spf13/viper v1.19.0
github.com/spf13/viper v1.20.0
github.com/stackitcloud/stackit-sdk-go/core v0.16.0

@@ -28,3 +28,3 @@ github.com/stackitcloud/stackit-sdk-go/services/authorization v0.6.0

github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.13.0
github.com/stackitcloud/stackit-sdk-go/services/runcommand v0.3.0
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.0.0
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.11.0

@@ -34,3 +34,3 @@ github.com/stackitcloud/stackit-sdk-go/services/serverbackup v0.6.0

github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.6.0
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0
github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0

@@ -48,4 +48,4 @@ github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.0.0

require (
golang.org/x/net v0.30.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/time v0.8.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect

@@ -57,2 +57,3 @@ )

github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect

@@ -66,3 +67,3 @@ github.com/x448/float16 v0.8.4 // indirect

github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fsnotify/fsnotify v1.8.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect

@@ -72,20 +73,16 @@ github.com/godbus/dbus/v5 v5.1.0 // indirect

github.com/google/gofuzz v1.2.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sagikazarmark/locafero v0.7.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v0.18.0
github.com/spf13/afero v1.12.0 // indirect
github.com/spf13/cast v1.7.1 // indirect
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.0.0
github.com/stackitcloud/stackit-sdk-go/services/logme v0.21.0

@@ -99,5 +96,3 @@ github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.21.0

go.uber.org/multierr v1.11.0 // indirect
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect
golang.org/x/sys v0.30.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect

@@ -104,0 +99,0 @@ gopkg.in/yaml.v3 v3.0.1 // indirect

+28
-45

@@ -17,4 +17,4 @@ al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho=

github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=

@@ -30,4 +30,6 @@ github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=

github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
github.com/goccy/go-yaml v1.15.23 h1:WS0GAX1uNPDLUvLkNU2vXq6oTnsmfVFocjQ/4qA48qo=
github.com/goccy/go-yaml v1.15.23/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/goccy/go-yaml v1.16.0 h1:d7m1G7A0t+logajVtklHfDYJs2Et9g3gHwdBNNFou0w=
github.com/goccy/go-yaml v1.16.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=

@@ -53,4 +55,2 @@ github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=

github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=

@@ -76,4 +76,2 @@ github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=

github.com/lmittmann/tint v1.0.7/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=

@@ -87,4 +85,2 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=

github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

@@ -97,4 +93,4 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=

github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

@@ -110,12 +106,10 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=

github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=
github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs=
github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4=
github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=

@@ -125,4 +119,4 @@ github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=

github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY=
github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/stackitcloud/stackit-sdk-go/core v0.16.0 h1:9caGZwGLZDyBBe6ojk9VR4B2m3/0H5It6znBz76sH1w=

@@ -136,4 +130,4 @@ github.com/stackitcloud/stackit-sdk-go/core v0.16.0/go.mod h1:LRheSoXTFRHWAyA8Q9skWtWBp3ZZ+bFAKiKuf4lTDkE=

github.com/stackitcloud/stackit-sdk-go/services/iaas v0.21.1/go.mod h1:9p5IIdOKOM5/DIjbenKrWvz6GlSps4jsPJZkH7QJuRU=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v0.18.0 h1:7nNjIIcBQRDVnW4NL7+R8DaCKEqxxxsmVsgOVe50ZMU=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v0.18.0/go.mod h1:UFujBT+JlNvl6JNrY96UpLGqp+lZTD+JWL7siqhGPlw=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.0.0 h1:z2p0OobEAgSE5bQr+KR+4Y1QTvDbSC2a7w2eCV/oSp4=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.0.0/go.mod h1:x0jgrL+/K2cE4BvcIQByFUf0nOPVZRqq5Z074kjjr64=
github.com/stackitcloud/stackit-sdk-go/services/logme v0.21.0 h1:P7bxaVzkZPGMWItLynKIvc88Xh6jCnK4dPTTT+L607o=

@@ -159,4 +153,4 @@ github.com/stackitcloud/stackit-sdk-go/services/logme v0.21.0/go.mod h1:os4Kp2+jkMUJ2dZtgU9A91N3EJSw3MMh2slxgK1609g=

github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.13.0/go.mod h1:Hs8RwANfF2ZKqOowPBqMQqLoRHcMobiKAihWWirAdEU=
github.com/stackitcloud/stackit-sdk-go/services/runcommand v0.3.0 h1:S1DFVy2wwSiAFgNPpB527Q/YDQpSaduIFOMX988sZOE=
github.com/stackitcloud/stackit-sdk-go/services/runcommand v0.3.0/go.mod h1:1bANbviG6h5XaD3bBnC3v+eDWf5LBYLtLEF/ih+U4kA=
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.0.0 h1:tKUyddNszcif4j2yL6lJd4tDAykcU3shMkAPoM9EzV8=
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.0.0/go.mod h1:5n31cpeYcz2DSax4ygpZICEHDoHCTbWHrNGNYWwlRA8=
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.11.0 h1:PwfpDFGUUJ8+Go5hJf+/hA5CHfY+DPS1cqIUYH+zWtE=

@@ -170,4 +164,4 @@ github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.11.0/go.mod h1:Hb21FmYP95q0fzOb9jk4/9CIxTsHzrSYDQZh6e82XUg=

github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.6.0/go.mod h1:J/Wa67cbDI1wAyxib9PiEbNqGfIoFUH+DSLueVazQx8=
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0 h1:QG+rGBHsyXOlJ3ZIeOgExGqu9PoTlGY1rltW/VpG6lw=
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0/go.mod h1:16dOVT052cMuHhUJ3NIcPuY7TrpCr9QlxmvvfjLZubA=
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0 h1:Xxd5KUSWRt7FytnNWClLEa0n9GM6e5xAKo835ODSpAM=
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0/go.mod h1:EMqjiq/72WKXSwnJGLpumUJS4Uwlyhg5vtNg7qWoGtc=
github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0 h1:3KUVls8zXsbT2tOYRSHyp3/l0Kpjl4f3INmQKYTe65Y=

@@ -178,11 +172,5 @@ github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0/go.mod h1:63IvXpBJTIVONAnGPSDo0sRJ+6n6tzO918OLqfYBxto=

github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=

@@ -203,4 +191,2 @@ github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=

golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=

@@ -214,4 +200,4 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=

golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE=

@@ -234,4 +220,4 @@ golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=

golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

@@ -245,4 +231,4 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=

golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

@@ -253,8 +239,5 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=

gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

@@ -261,0 +244,0 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

@@ -95,6 +95,3 @@ package create

}),
isValid: true,
expectedModel: fixtureInputModel(func(model *inputModel) {
model.Roles = nil
}),
isValid: false,
},

@@ -101,0 +98,0 @@ {

@@ -53,3 +53,3 @@ package create

`Create a SQLServer Flex user for instance with ID "xxx" and specify the username, role and database`,
`$ stackit beta sqlserverflex user create --instance-id xxx --username johndoe --roles "##STACKIT_DatabaseManager##" --database my-database`),
`$ stackit beta sqlserverflex user create --instance-id xxx --username johndoe --roles "##STACKIT_DatabaseManager##"`),
examples.NewExample(

@@ -108,3 +108,3 @@ `Create a SQLServer Flex user for instance with ID "xxx", specifying multiple roles`,

err := flags.MarkFlagsRequired(cmd, instanceIdFlag, usernameFlag)
err := flags.MarkFlagsRequired(cmd, instanceIdFlag, usernameFlag, rolesFlag)
cobra.CheckErr(err)

@@ -111,0 +111,0 @@ }

@@ -18,10 +18,14 @@ package create

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)
type testCtxKey struct{}
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
var testClient = &loadbalancer.APIClient{}
var testProjectId = uuid.NewString()
var testRequestId = xRequestId
var (
testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
testClient = &loadbalancer.APIClient{}
testProjectId = uuid.NewString()
testRequestId = xRequestId
)

@@ -102,3 +106,4 @@ var testPayload = &loadbalancer.CreateLoadBalancerPayload{

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
payloadFlag: `{

@@ -185,2 +190,3 @@ "externalAddress": "",

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -197,3 +203,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiCreateLoadBalancerRequest)) loadbalancer.ApiCreateLoadBalancerRequest {
request := testClient.CreateLoadBalancer(testCtx, testProjectId)
request := testClient.CreateLoadBalancer(testCtx, testProjectId, testRegion)
request = request.CreateLoadBalancerPayload(*testPayload)

@@ -233,3 +239,3 @@ request = request.XRequestID(testRequestId)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -241,3 +247,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -249,3 +255,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -252,0 +258,0 @@ isValid: false,

@@ -98,3 +98,3 @@ package create

s.Start("Creating load balancer")
_, err = wait.CreateLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, *model.Payload.Name).WaitWithContext(ctx)
_, err = wait.CreateLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, model.Region, *model.Payload.Name).WaitWithContext(ctx)
if err != nil {

@@ -159,3 +159,3 @@ return fmt.Errorf("wait for load balancer creation: %w", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiCreateLoadBalancerRequest {
req := apiClient.CreateLoadBalancer(ctx, model.ProjectId)
req := apiClient.CreateLoadBalancer(ctx, model.ProjectId, model.Region)
req = req.CreateLoadBalancerPayload(*model.Payload)

@@ -162,0 +162,0 @@ req = req.XRequestID(xRequestId)

@@ -16,3 +16,5 @@ package delete

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -38,3 +40,4 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -51,2 +54,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -63,3 +67,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiDeleteLoadBalancerRequest)) loadbalancer.ApiDeleteLoadBalancerRequest {
request := testClient.DeleteLoadBalancer(testCtx, testProjectId, testLoadBalancerName)
request := testClient.DeleteLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
for _, mod := range mods {

@@ -108,3 +112,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -117,3 +121,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -126,3 +130,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -129,0 +133,0 @@ isValid: false,

@@ -71,3 +71,3 @@ package delete

s.Start("Deleting load balancer")
_, err = wait.DeleteLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, model.LoadBalancerName).WaitWithContext(ctx)
_, err = wait.DeleteLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.LoadBalancerName).WaitWithContext(ctx)
if err != nil {

@@ -116,4 +116,4 @@ return fmt.Errorf("wait for load balancer deletion: %w", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiDeleteLoadBalancerRequest {
req := apiClient.DeleteLoadBalancer(ctx, model.ProjectId, model.LoadBalancerName)
req := apiClient.DeleteLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
return req
}

@@ -15,3 +15,6 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
testloadBalancerName = "loadBalancer"
)

@@ -23,3 +26,2 @@ type testCtxKey struct{}

var testProjectId = uuid.NewString()
var testloadBalancerName = "loadBalancer"

@@ -38,3 +40,4 @@ func fixtureArgValues(mods ...func(argValues []string)) []string {

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -51,2 +54,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -63,3 +67,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetLoadBalancerRequest)) loadbalancer.ApiGetLoadBalancerRequest {
request := testClient.GetLoadBalancer(testCtx, testProjectId, testloadBalancerName)
request := testClient.GetLoadBalancer(testCtx, testProjectId, testRegion, testloadBalancerName)
for _, mod := range mods {

@@ -108,3 +112,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -117,3 +121,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -126,3 +130,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -129,0 +133,0 @@ isValid: false,

@@ -97,3 +97,3 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetLoadBalancerRequest {
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.LoadBalancerName)
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
return req

@@ -100,0 +100,0 @@ }

@@ -16,3 +16,5 @@ package generatepayload

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -32,5 +34,6 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
loadBalancerNameFlag: testLoadBalancerName,
filePathFlag: testFilePath,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
loadBalancerNameFlag: testLoadBalancerName,
filePathFlag: testFilePath,
}

@@ -47,2 +50,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -60,3 +64,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetLoadBalancerRequest)) loadbalancer.ApiGetLoadBalancerRequest {
request := testClient.GetLoadBalancer(testCtx, testProjectId, testLoadBalancerName)
request := testClient.GetLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
for _, mod := range mods {

@@ -112,3 +116,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -120,3 +124,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -128,3 +132,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -131,0 +135,0 @@ isValid: false,

@@ -211,3 +211,3 @@ package generatepayload

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetLoadBalancerRequest {
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, *model.LoadBalancerName)
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.Region, *model.LoadBalancerName)
return req

@@ -214,0 +214,0 @@ }

@@ -16,3 +16,5 @@ package list

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -27,4 +29,5 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
limitFlag: "10",
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
limitFlag: "10",
}

@@ -41,2 +44,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -53,3 +57,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiListLoadBalancersRequest)) loadbalancer.ApiListLoadBalancersRequest {
request := testClient.ListLoadBalancers(testCtx, testProjectId)
request := testClient.ListLoadBalancers(testCtx, testProjectId, testRegion)
for _, mod := range mods {

@@ -82,3 +86,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -90,3 +94,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -98,3 +102,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -209,2 +213,9 @@ isValid: false,

{
name: "empty loadbalancers slice",
args: args{
loadBalancers: []loadbalancer.LoadBalancer{},
},
wantErr: false,
},
{
name: "empty loadbalancer in loadbalancers slice",

@@ -211,0 +222,0 @@ args: args{

@@ -130,3 +130,3 @@ package list

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiListLoadBalancersRequest {
req := apiClient.ListLoadBalancers(ctx, model.ProjectId)
req := apiClient.ListLoadBalancers(ctx, model.ProjectId, model.Region)
return req

@@ -158,9 +158,17 @@ }

l := loadBalancers[i]
externalAdress := utils.PtrStringDefault(l.ExternalAddress, "-")
var numListeners, numTargetPools int
if l.Listeners != nil {
numListeners = len(*l.Listeners)
}
if l.TargetPools != nil {
numTargetPools = len(*l.TargetPools)
}
externalAddress := utils.PtrStringDefault(l.ExternalAddress, "-")
table.AddRow(
utils.PtrString(l.Name),
utils.PtrString(l.Status),
externalAdress,
len(utils.PtrString(l.Listeners)),
len(utils.PtrString(l.TargetPools)),
externalAddress,
numListeners,
numTargetPools,
)

@@ -167,0 +175,0 @@ }

@@ -16,3 +16,5 @@ package add

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -27,6 +29,7 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
displayNameFlag: "name",
usernameFlag: "username",
passwordFlag: "pwd",
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
displayNameFlag: "name",
usernameFlag: "username",
passwordFlag: "pwd",
}

@@ -43,2 +46,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -57,3 +61,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiCreateCredentialsRequest)) loadbalancer.ApiCreateCredentialsRequest {
request := testClient.CreateCredentials(testCtx, testProjectId)
request := testClient.CreateCredentials(testCtx, testProjectId, testRegion)
request = request.CreateCredentialsPayload(loadbalancer.CreateCredentialsPayload{

@@ -91,3 +95,3 @@ DisplayName: utils.Ptr("name"),

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -99,3 +103,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -107,3 +111,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -110,0 +114,0 @@ isValid: false,

@@ -136,3 +136,3 @@ package add

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiCreateCredentialsRequest {
req := apiClient.CreateCredentials(ctx, model.ProjectId)
req := apiClient.CreateCredentials(ctx, model.ProjectId, model.Region)
req = req.XRequestID(uuid.NewString())

@@ -139,0 +139,0 @@

@@ -16,6 +16,7 @@ package cleanup

const testCredentialsRef = "credentials-1"
const (
testRegion = "eu02"
testCredentialsRef = "credentials-1"
)
var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -29,3 +30,4 @@

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -42,2 +44,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -53,3 +56,3 @@ },

func fixtureDeleteCredentialRequest(mods ...func(request *loadbalancer.ApiDeleteCredentialsRequest)) loadbalancer.ApiDeleteCredentialsRequest {
request := testClient.DeleteCredentials(testCtx, testProjectId, testCredentialsRef)
request := testClient.DeleteCredentials(testCtx, testProjectId, testRegion, testCredentialsRef)
for _, mod := range mods {

@@ -62,3 +65,3 @@ mod(&request)

func fixtureListCredentialsRequest(mods ...func(request *loadbalancer.ApiListCredentialsRequest)) loadbalancer.ApiListCredentialsRequest {
request := testClient.ListCredentials(testCtx, testProjectId)
request := testClient.ListCredentials(testCtx, testProjectId, testRegion)
for _, mod := range mods {

@@ -98,3 +101,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -106,3 +109,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -114,3 +117,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -117,0 +120,0 @@ isValid: false,

@@ -62,3 +62,3 @@ package cleanup

if resp.Credentials != nil && len(*resp.Credentials) > 0 {
credentials, err = utils.FilterCredentials(ctx, apiClient, *resp.Credentials, model.ProjectId, utils.OP_FILTER_UNUSED)
credentials, err = utils.FilterCredentials(ctx, apiClient, *resp.Credentials, model.ProjectId, model.Region, utils.OP_FILTER_UNUSED)
if err != nil {

@@ -134,3 +134,3 @@ return fmt.Errorf("filter Load Balancer observability credentials: %w", err)

func buildDeleteCredentialRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient, credentialsRef string) loadbalancer.ApiDeleteCredentialsRequest {
req := apiClient.DeleteCredentials(ctx, model.ProjectId, credentialsRef)
req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.Region, credentialsRef)
return req

@@ -140,4 +140,4 @@ }

func buildListCredentialsRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiListCredentialsRequest {
req := apiClient.ListCredentials(ctx, model.ProjectId)
req := apiClient.ListCredentials(ctx, model.ProjectId, model.Region)
return req
}

@@ -16,3 +16,6 @@ package delete

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
testCredentialsRef = "credentials-xxx"
)

@@ -25,4 +28,2 @@ type testCtxKey struct{}

const testCredentialsRef = "credentials-xxx"
func fixtureArgValues(mods ...func(argValues []string)) []string {

@@ -40,3 +41,4 @@ argValues := []string{

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -53,2 +55,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -65,3 +68,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiDeleteCredentialsRequest)) loadbalancer.ApiDeleteCredentialsRequest {
request := testClient.DeleteCredentials(testCtx, testProjectId, testCredentialsRef)
request := testClient.DeleteCredentials(testCtx, testProjectId, testRegion, testCredentialsRef)
for _, mod := range mods {

@@ -110,3 +113,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -119,3 +122,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -128,3 +131,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -131,0 +134,0 @@ isValid: false,

@@ -59,3 +59,3 @@ package delete

credentialsLabel, err := loadbalancerUtils.GetCredentialsDisplayName(ctx, apiClient, model.ProjectId, model.CredentialsRef)
credentialsLabel, err := loadbalancerUtils.GetCredentialsDisplayName(ctx, apiClient, model.ProjectId, model.Region, model.CredentialsRef)
if err != nil {

@@ -114,4 +114,4 @@ p.Debug(print.ErrorLevel, "get observability credentials display name: %v", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiDeleteCredentialsRequest {
req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.CredentialsRef)
req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.Region, model.CredentialsRef)
return req
}

@@ -15,3 +15,6 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
testCredentialsRef = "credentials-test"
)

@@ -24,4 +27,2 @@ type testCtxKey struct{}

const testCredentialsRef = "credentials-test"
func fixtureArgValues(mods ...func(argValues []string)) []string {

@@ -39,3 +40,4 @@ argValues := []string{

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -52,2 +54,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -64,3 +67,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetCredentialsRequest)) loadbalancer.ApiGetCredentialsRequest {
request := testClient.GetCredentials(testCtx, testProjectId, testCredentialsRef)
request := testClient.GetCredentials(testCtx, testProjectId, testRegion, testCredentialsRef)
for _, mod := range mods {

@@ -109,3 +112,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -118,3 +121,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -127,3 +130,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -130,0 +133,0 @@ isValid: false,

@@ -94,3 +94,3 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetCredentialsRequest {
req := apiClient.GetCredentials(ctx, model.ProjectId, model.CredentialsRef)
req := apiClient.GetCredentials(ctx, model.ProjectId, model.Region, model.CredentialsRef)
return req

@@ -97,0 +97,0 @@ }

@@ -17,3 +17,5 @@ package list

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -28,4 +30,5 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
limitFlag: "10",
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
limitFlag: "10",
}

@@ -42,2 +45,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -54,3 +58,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiListCredentialsRequest)) loadbalancer.ApiListCredentialsRequest {
request := testClient.ListCredentials(testCtx, testProjectId)
request := testClient.ListCredentials(testCtx, testProjectId, testRegion)
for _, mod := range mods {

@@ -83,3 +87,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -91,3 +95,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -99,3 +103,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -102,0 +106,0 @@ isValid: false,

@@ -95,3 +95,3 @@ package list

}
credentials, err = lbUtils.FilterCredentials(ctx, apiClient, credentials, model.ProjectId, filterOp)
credentials, err = lbUtils.FilterCredentials(ctx, apiClient, credentials, model.ProjectId, model.Region, filterOp)
if err != nil {

@@ -166,3 +166,3 @@ return fmt.Errorf("filter credentials: %w", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiListCredentialsRequest {
req := apiClient.ListCredentials(ctx, model.ProjectId)
req := apiClient.ListCredentials(ctx, model.ProjectId, model.Region)
return req

@@ -169,0 +169,0 @@ }

@@ -18,8 +18,14 @@ package update

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
testCredentialsRef = "credentials-test"
)
type testCtxKey struct{}
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
var testClient = &loadbalancer.APIClient{}
var (
testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
testClient = &loadbalancer.APIClient{}
testProjectId = uuid.NewString()
)

@@ -31,7 +37,7 @@ type loadBalancerClientMocked struct {

func (c *loadBalancerClientMocked) UpdateCredentials(ctx context.Context, projectId, credentialsRef string) loadbalancer.ApiUpdateCredentialsRequest {
return testClient.UpdateCredentials(ctx, projectId, credentialsRef)
func (c *loadBalancerClientMocked) UpdateCredentials(ctx context.Context, projectId, region, credentialsRef string) loadbalancer.ApiUpdateCredentialsRequest {
return testClient.UpdateCredentials(ctx, projectId, region, credentialsRef)
}
func (c *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
func (c *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
if c.getCredentialsError {

@@ -43,6 +49,2 @@ return nil, fmt.Errorf("get credentials failed")

var testProjectId = uuid.NewString()
const testCredentialsRef = "credentials-test"
func fixtureArgValues(mods ...func(argValues []string)) []string {

@@ -60,6 +62,7 @@ argValues := []string{

flagValues := map[string]string{
projectIdFlag: testProjectId,
displayNameFlag: "name",
usernameFlag: "username",
passwordFlag: "pwd",
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
displayNameFlag: "name",
usernameFlag: "username",
passwordFlag: "pwd",
}

@@ -76,2 +79,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -91,3 +95,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiUpdateCredentialsRequest)) loadbalancer.ApiUpdateCredentialsRequest {
request := testClient.UpdateCredentials(testCtx, testProjectId, testCredentialsRef)
request := testClient.UpdateCredentials(testCtx, testProjectId, testRegion, testCredentialsRef)
request = request.UpdateCredentialsPayload(loadbalancer.UpdateCredentialsPayload{

@@ -154,3 +158,3 @@ DisplayName: utils.Ptr("name"),

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -163,3 +167,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -172,3 +176,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -175,0 +179,0 @@ isValid: false,

@@ -30,2 +30,12 @@ package update

// enforce implementation of interfaces
var (
_ loadBalancerClient = &loadbalancer.APIClient{}
)
type loadBalancerClient interface {
UpdateCredentials(ctx context.Context, projectId, region, credentialsRef string) loadbalancer.ApiUpdateCredentialsRequest
GetCredentialsExecute(ctx context.Context, projectId, region, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error)
}
type inputModel struct {

@@ -72,3 +82,3 @@ *globalflags.GlobalFlagModel

credentialsLabel, err := loadBalancerUtils.GetCredentialsDisplayName(ctx, apiClient, model.ProjectId, model.CredentialsRef)
credentialsLabel, err := loadBalancerUtils.GetCredentialsDisplayName(ctx, apiClient, model.ProjectId, model.Region, model.CredentialsRef)
if err != nil {

@@ -142,11 +152,6 @@ p.Debug(print.ErrorLevel, "get credentials display name: %v", err)

type loadBalancerClient interface {
UpdateCredentials(ctx context.Context, instanceId, projectId string) loadbalancer.ApiUpdateCredentialsRequest
GetCredentialsExecute(ctx context.Context, instanceId, projectId string) (*loadbalancer.GetCredentialsResponse, error)
}
func buildRequest(ctx context.Context, model *inputModel, apiClient loadBalancerClient) (loadbalancer.ApiUpdateCredentialsRequest, error) {
req := apiClient.UpdateCredentials(ctx, model.ProjectId, model.CredentialsRef)
req := apiClient.UpdateCredentials(ctx, model.ProjectId, model.Region, model.CredentialsRef)
currentCredentials, err := apiClient.GetCredentialsExecute(ctx, model.ProjectId, model.CredentialsRef)
currentCredentials, err := apiClient.GetCredentialsExecute(ctx, model.ProjectId, model.Region, model.CredentialsRef)
if err != nil {

@@ -153,0 +158,0 @@ return req, fmt.Errorf("get Load Balancer observability credentials: %w", err)

@@ -15,3 +15,5 @@ package quota

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
)

@@ -26,3 +28,4 @@ type testCtxKey struct{}

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -39,2 +42,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -50,3 +54,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetQuotaRequest)) loadbalancer.ApiGetQuotaRequest {
request := testClient.GetQuota(testCtx, testProjectId)
request := testClient.GetQuota(testCtx, testProjectId, testRegion)
for _, mod := range mods {

@@ -74,3 +78,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -82,3 +86,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -90,3 +94,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -93,0 +97,0 @@ isValid: false,

@@ -84,3 +84,3 @@ package quota

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetQuotaRequest {
req := apiClient.GetQuota(ctx, model.ProjectId)
req := apiClient.GetQuota(ctx, model.ProjectId, model.Region)
return req

@@ -87,0 +87,0 @@ }

@@ -18,4 +18,2 @@ package addtarget

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -30,2 +28,3 @@

const (
testRegion = "eu02"
testLBName = "my-load-balancer"

@@ -44,3 +43,3 @@ testTargetPoolName = "target-pool-1"

func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
if m.getCredentialsFails {

@@ -52,3 +51,3 @@ return nil, fmt.Errorf("could not get credentials")

func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _ string) (*loadbalancer.LoadBalancer, error) {
func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _, _ string) (*loadbalancer.LoadBalancer, error) {
if m.getLoadBalancerFails {

@@ -60,7 +59,7 @@ return nil, fmt.Errorf("could not get load balancer")

func (m *loadBalancerClientMocked) UpdateTargetPool(ctx context.Context, projectId, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest {
return testClient.UpdateTargetPool(ctx, projectId, loadBalancerName, targetPoolName)
func (m *loadBalancerClientMocked) UpdateTargetPool(ctx context.Context, projectId, region, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest {
return testClient.UpdateTargetPool(ctx, projectId, region, loadBalancerName, targetPoolName)
}
func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
return nil, nil

@@ -81,6 +80,7 @@ }

flagValues := map[string]string{
projectIdFlag: testProjectId,
lbNameFlag: testLBName,
targetNameFlag: testTargetName,
targetPoolNameFlag: testTargetPoolName,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
lbNameFlag: testLBName,
targetNameFlag: testTargetName,
targetPoolNameFlag: testTargetPoolName,
}

@@ -97,2 +97,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -181,3 +182,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiUpdateTargetPoolRequest)) loadbalancer.ApiUpdateTargetPoolRequest {
request := testClient.UpdateTargetPool(testCtx, testProjectId, testLBName, testTargetPoolName)
request := testClient.UpdateTargetPool(testCtx, testProjectId, testRegion, testLBName, testTargetPoolName)
request = request.UpdateTargetPoolPayload(*fixturePayload())

@@ -215,3 +216,3 @@ for _, mod := range mods {

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -224,3 +225,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -233,3 +234,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -236,0 +237,0 @@ isValid: false,

@@ -127,5 +127,5 @@ package addtarget

func buildRequest(ctx context.Context, model *inputModel, apiClient utils.LoadBalancerClient) (loadbalancer.ApiUpdateTargetPoolRequest, error) {
req := apiClient.UpdateTargetPool(ctx, model.ProjectId, model.LBName, model.TargetPoolName)
req := apiClient.UpdateTargetPool(ctx, model.ProjectId, model.Region, model.LBName, model.TargetPoolName)
targetPool, err := utils.GetLoadBalancerTargetPool(ctx, apiClient, model.ProjectId, model.LBName, model.TargetPoolName)
targetPool, err := utils.GetLoadBalancerTargetPool(ctx, apiClient, model.ProjectId, model.Region, model.LBName, model.TargetPoolName)
if err != nil {

@@ -132,0 +132,0 @@ return req, fmt.Errorf("get load balancer target pool: %w", err)

@@ -15,4 +15,2 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -27,2 +25,3 @@

const (
testRegion = "eu02"
testLoadBalancerName = "my-load-balancer"

@@ -44,4 +43,5 @@ testTargetPoolName = "target-pool-1"

flagValues := map[string]string{
projectIdFlag: testProjectId,
lbNameFlag: testLoadBalancerName,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
lbNameFlag: testLoadBalancerName,
}

@@ -58,2 +58,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -71,3 +72,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetLoadBalancerRequest)) loadbalancer.ApiGetLoadBalancerRequest {
request := testClient.GetLoadBalancer(testCtx, testProjectId, testLoadBalancerName)
request := testClient.GetLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
for _, mod := range mods {

@@ -104,3 +105,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -113,3 +114,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -122,3 +123,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -125,0 +126,0 @@ isValid: false,

@@ -118,3 +118,3 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetLoadBalancerRequest {
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.LBName)
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.Region, model.LBName)
return req

@@ -121,0 +121,0 @@ }

@@ -18,4 +18,2 @@ package removetarget

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -30,5 +28,5 @@

const (
testRegion = "eu02"
testLBName = "my-load-balancer"
testTargetPoolName = "target-pool-1"
testTargetName = "my-target"
testIP = "1.2.3.4"

@@ -44,3 +42,3 @@ )

func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
if m.getCredentialsFails {

@@ -52,3 +50,3 @@ return nil, fmt.Errorf("could not get credentials")

func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _ string) (*loadbalancer.LoadBalancer, error) {
func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _, _ string) (*loadbalancer.LoadBalancer, error) {
if m.getLoadBalancerFails {

@@ -60,7 +58,7 @@ return nil, fmt.Errorf("could not get load balancer")

func (m *loadBalancerClientMocked) UpdateTargetPool(ctx context.Context, projectId, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest {
return testClient.UpdateTargetPool(ctx, projectId, loadBalancerName, targetPoolName)
func (m *loadBalancerClientMocked) UpdateTargetPool(ctx context.Context, projectId, region, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest {
return testClient.UpdateTargetPool(ctx, projectId, region, loadBalancerName, targetPoolName)
}
func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
return nil, nil

@@ -81,5 +79,6 @@ }

flagValues := map[string]string{
projectIdFlag: testProjectId,
lbNameFlag: testLBName,
targetPoolNameFlag: testTargetPoolName,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
lbNameFlag: testLBName,
targetPoolNameFlag: testTargetPoolName,
}

@@ -96,2 +95,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -179,3 +179,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiUpdateTargetPoolRequest)) loadbalancer.ApiUpdateTargetPoolRequest {
request := testClient.UpdateTargetPool(testCtx, testProjectId, testLBName, testTargetPoolName)
request := testClient.UpdateTargetPool(testCtx, testProjectId, testRegion, testLBName, testTargetPoolName)
request = request.UpdateTargetPoolPayload(*fixturePayload())

@@ -213,3 +213,3 @@ for _, mod := range mods {

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -222,3 +222,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -231,3 +231,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -234,0 +234,0 @@ isValid: false,

@@ -59,3 +59,3 @@ package removetarget

targetLabel, err := utils.GetTargetName(ctx, apiClient, model.ProjectId, model.LBName, model.TargetPoolName, model.IP)
targetLabel, err := utils.GetTargetName(ctx, apiClient, model.ProjectId, model.Region, model.LBName, model.TargetPoolName, model.IP)
if err != nil {

@@ -128,5 +128,5 @@ p.Debug(print.ErrorLevel, "get target name: %v", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient utils.LoadBalancerClient) (loadbalancer.ApiUpdateTargetPoolRequest, error) {
req := apiClient.UpdateTargetPool(ctx, model.ProjectId, model.LBName, model.TargetPoolName)
req := apiClient.UpdateTargetPool(ctx, model.ProjectId, model.Region, model.LBName, model.TargetPoolName)
targetPool, err := utils.GetLoadBalancerTargetPool(ctx, apiClient, model.ProjectId, model.LBName, model.TargetPoolName)
targetPool, err := utils.GetLoadBalancerTargetPool(ctx, apiClient, model.ProjectId, model.Region, model.LBName, model.TargetPoolName)
if err != nil {

@@ -133,0 +133,0 @@ return req, fmt.Errorf("get load balancer target pool: %w", err)

@@ -17,3 +17,6 @@ package update

var projectIdFlag = globalflags.ProjectIdFlag
const (
testRegion = "eu02"
testLoadBalancerName = "loadBalancer"
)

@@ -25,3 +28,2 @@ type testCtxKey struct{}

var testProjectId = uuid.NewString()
var testLoadBalancerName = "loadBalancer"

@@ -113,3 +115,4 @@ var testPayload = loadbalancer.UpdateLoadBalancerPayload{

flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
payloadFlag: `

@@ -199,2 +202,3 @@ {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -212,3 +216,3 @@ },

func fixtureRequest(mods ...func(request *loadbalancer.ApiUpdateLoadBalancerRequest)) loadbalancer.ApiUpdateLoadBalancerRequest {
request := testClient.UpdateLoadBalancer(testCtx, testProjectId, testLoadBalancerName)
request := testClient.UpdateLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
request = request.UpdateLoadBalancerPayload(testPayload)

@@ -258,3 +262,3 @@ for _, mod := range mods {

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -267,3 +271,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -276,3 +280,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -279,0 +283,0 @@ isValid: false,

@@ -132,3 +132,3 @@ package update

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiUpdateLoadBalancerRequest {
req := apiClient.UpdateLoadBalancer(ctx, model.ProjectId, model.LoadBalancerName)
req := apiClient.UpdateLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)

@@ -135,0 +135,0 @@ req = req.UpdateLoadBalancerPayload(model.Payload)

@@ -17,4 +17,2 @@ package create

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -28,8 +26,13 @@

const (
testRegion = "eu02"
)
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
flagValues := map[string]string{
projectIdFlag: testProjectId,
serverIdFlag: testServerId,
commandTemplateNameFlag: "RunShellScript",
paramsFlag: `script='echo hello'`,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
serverIdFlag: testServerId,
commandTemplateNameFlag: "RunShellScript",
paramsFlag: `script='echo hello'`,
}

@@ -46,2 +49,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -60,3 +64,3 @@ },

func fixtureRequest(mods ...func(request *runcommand.ApiCreateCommandRequest)) runcommand.ApiCreateCommandRequest {
request := testClient.CreateCommand(testCtx, testProjectId, testServerId)
request := testClient.CreateCommand(testCtx, testProjectId, testServerId, testRegion)
request = request.CreateCommandPayload(fixturePayload())

@@ -107,3 +111,3 @@ for _, mod := range mods {

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -115,3 +119,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -123,3 +127,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -126,0 +130,0 @@ isValid: false,

@@ -145,3 +145,3 @@ package create

func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand.APIClient) (runcommand.ApiCreateCommandRequest, error) {
req := apiClient.CreateCommand(ctx, model.ProjectId, model.ServerId)
req := apiClient.CreateCommand(ctx, model.ProjectId, model.ServerId, model.Region)
req = req.CreateCommandPayload(runcommand.CreateCommandPayload{

@@ -148,0 +148,0 @@ CommandTemplateName: &model.CommandTemplateName,

@@ -16,4 +16,2 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -25,4 +23,8 @@

var testServerId = uuid.NewString()
var testCommandId = "5"
const (
testRegion = "eu02"
testCommandId = "5"
)
func fixtureArgValues(mods ...func(argValues []string)) []string {

@@ -40,4 +42,5 @@ argValues := []string{

flagValues := map[string]string{
projectIdFlag: testProjectId,
serverIdFlag: testServerId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
serverIdFlag: testServerId,
}

@@ -54,2 +57,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -67,3 +71,3 @@ },

func fixtureRequest(mods ...func(request *runcommand.ApiGetCommandRequest)) runcommand.ApiGetCommandRequest {
request := testClient.GetCommand(testCtx, testProjectId, testServerId, testCommandId)
request := testClient.GetCommand(testCtx, testProjectId, testRegion, testServerId, testCommandId)
for _, mod := range mods {

@@ -112,3 +116,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -121,3 +125,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -130,3 +134,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -133,0 +137,0 @@ isValid: false,

@@ -107,3 +107,3 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand.APIClient) runcommand.ApiGetCommandRequest {
req := apiClient.GetCommand(ctx, model.ProjectId, model.ServerId, model.CommandId)
req := apiClient.GetCommand(ctx, model.ProjectId, model.Region, model.ServerId, model.CommandId)
return req

@@ -110,0 +110,0 @@ }

@@ -17,4 +17,2 @@ package list

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -27,7 +25,12 @@

const (
testRegion = "eu02"
)
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
flagValues := map[string]string{
projectIdFlag: testProjectId,
limitFlag: "10",
serverIdFlag: testServerId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
limitFlag: "10",
serverIdFlag: testServerId,
}

@@ -44,2 +47,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -57,3 +61,3 @@ },

func fixtureRequest(mods ...func(request *runcommand.ApiListCommandsRequest)) runcommand.ApiListCommandsRequest {
request := testClient.ListCommands(testCtx, testProjectId, testServerId)
request := testClient.ListCommands(testCtx, testProjectId, testServerId, testRegion)
for _, mod := range mods {

@@ -86,3 +90,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -94,3 +98,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -102,3 +106,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -105,0 +109,0 @@ isValid: false,

@@ -136,3 +136,3 @@ package list

func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand.APIClient) runcommand.ApiListCommandsRequest {
req := apiClient.ListCommands(ctx, model.ProjectId, model.ServerId)
req := apiClient.ListCommands(ctx, model.ProjectId, model.ServerId, model.Region)
return req

@@ -139,0 +139,0 @@ }

@@ -16,4 +16,2 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -25,4 +23,8 @@

var testServerId = uuid.NewString()
var testCommandTemplateName = "RunShellScript"
const (
testCommandTemplateName = "RunShellScript"
testRegion = "eu02"
)
func fixtureArgValues(mods ...func(argValues []string)) []string {

@@ -40,4 +42,5 @@ argValues := []string{

flagValues := map[string]string{
projectIdFlag: testProjectId,
serverIdFlag: testServerId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
serverIdFlag: testServerId,
}

@@ -54,2 +57,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -67,3 +71,3 @@ },

func fixtureRequest(mods ...func(request *runcommand.ApiGetCommandTemplateRequest)) runcommand.ApiGetCommandTemplateRequest {
request := testClient.GetCommandTemplate(testCtx, testProjectId, testServerId, testCommandTemplateName)
request := testClient.GetCommandTemplate(testCtx, testProjectId, testServerId, testCommandTemplateName, testRegion)
for _, mod := range mods {

@@ -112,3 +116,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -121,3 +125,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -130,3 +134,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -133,0 +137,0 @@ isValid: false,

@@ -107,3 +107,3 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand.APIClient) runcommand.ApiGetCommandTemplateRequest {
req := apiClient.GetCommandTemplate(ctx, model.ProjectId, model.ServerId, model.CommandTemplateName)
req := apiClient.GetCommandTemplate(ctx, model.ProjectId, model.ServerId, model.CommandTemplateName, model.Region)
return req

@@ -110,0 +110,0 @@ }

@@ -17,4 +17,2 @@ package list

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -28,4 +26,4 @@

flagValues := map[string]string{
projectIdFlag: testProjectId,
limitFlag: "10",
globalflags.ProjectIdFlag: testProjectId,
limitFlag: "10",
}

@@ -81,3 +79,3 @@ for _, mod := range mods {

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -89,3 +87,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -97,3 +95,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -100,0 +98,0 @@ isValid: false,

@@ -99,3 +99,3 @@ package create

// Check if the project is enabled before trying to create
enabled, err := serviceEnablementUtils.ProjectEnabled(ctx, serviceEnablementApiClient, model.ProjectId)
enabled, err := serviceEnablementUtils.ProjectEnabled(ctx, serviceEnablementApiClient, model.ProjectId, model.Region)
if err != nil {

@@ -102,0 +102,0 @@ return err

@@ -72,3 +72,3 @@ package list

// Check if SKE is enabled for this project
enabled, err := serviceEnablementUtils.ProjectEnabled(ctx, serviceEnablementApiClient, model.ProjectId)
enabled, err := serviceEnablementUtils.ProjectEnabled(ctx, serviceEnablementApiClient, model.ProjectId, model.Region)
if err != nil {

@@ -75,0 +75,0 @@ return err

@@ -18,4 +18,2 @@ package describe

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -26,6 +24,8 @@

var testProjectId = uuid.NewString()
var testRegion = "eu01"
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -42,2 +42,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -52,4 +53,4 @@ },

func fixtureRequest(mods ...func(request *serviceenablement.ApiGetServiceStatusRequest)) serviceenablement.ApiGetServiceStatusRequest {
request := testClient.GetServiceStatus(testCtx, testProjectId, serviceEnablementUtils.SKEServiceId) //nolint:staticcheck //command will be removed in a later update
func fixtureRequest(mods ...func(request *serviceenablement.ApiGetServiceStatusRegionalRequest)) serviceenablement.ApiGetServiceStatusRegionalRequest {
request := testClient.GetServiceStatusRegional(testCtx, testRegion, testProjectId, serviceEnablementUtils.SKEServiceId) //nolint:staticcheck //command will be removed in a later update
for _, mod := range mods {

@@ -82,3 +83,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -90,3 +91,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -98,3 +99,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -156,3 +157,3 @@ isValid: false,

isValid bool
expectedRequest serviceenablement.ApiGetServiceStatusRequest
expectedRequest serviceenablement.ApiGetServiceStatusRegionalRequest
}{

@@ -159,0 +160,0 @@ {

@@ -84,4 +84,4 @@ package describe

func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiGetServiceStatusRequest {
req := apiClient.GetServiceStatus(ctx, model.ProjectId, skeUtils.SKEServiceId)
func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiGetServiceStatusRegionalRequest {
req := apiClient.GetServiceStatusRegional(ctx, model.Region, model.ProjectId, skeUtils.SKEServiceId)
return req

@@ -88,0 +88,0 @@ }

@@ -18,4 +18,2 @@ package disable

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -26,6 +24,8 @@

var testProjectId = uuid.NewString()
var testRegion = "eu01"
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -42,2 +42,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -52,4 +53,4 @@ },

func fixtureRequest(mods ...func(request *serviceenablement.ApiDisableServiceRequest)) serviceenablement.ApiDisableServiceRequest {
request := testClient.DisableService(testCtx, testProjectId, utils.SKEServiceId)
func fixtureRequest(mods ...func(request *serviceenablement.ApiDisableServiceRegionalRequest)) serviceenablement.ApiDisableServiceRegionalRequest {
request := testClient.DisableServiceRegional(testCtx, testRegion, testProjectId, utils.SKEServiceId)
for _, mod := range mods {

@@ -82,3 +83,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -90,3 +91,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -98,3 +99,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -155,3 +156,3 @@ isValid: false,

model *inputModel
expectedRequest serviceenablement.ApiDisableServiceRequest
expectedRequest serviceenablement.ApiDisableServiceRegionalRequest
}{

@@ -158,0 +159,0 @@ {

@@ -75,3 +75,3 @@ package disable

s.Start("Disabling SKE")
_, err = wait.DisableServiceWaitHandler(ctx, apiClient, model.ProjectId, utils.SKEServiceId).WaitWithContext(ctx)
_, err = wait.DisableServiceWaitHandler(ctx, apiClient, model.Region, model.ProjectId, utils.SKEServiceId).WaitWithContext(ctx)
if err != nil {

@@ -116,5 +116,5 @@ return fmt.Errorf("wait for SKE disabling: %w", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiDisableServiceRequest {
req := apiClient.DisableService(ctx, model.ProjectId, utils.SKEServiceId)
func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiDisableServiceRegionalRequest {
req := apiClient.DisableServiceRegional(ctx, model.Region, model.ProjectId, utils.SKEServiceId)
return req
}

@@ -18,4 +18,2 @@ package enable

var projectIdFlag = globalflags.ProjectIdFlag
type testCtxKey struct{}

@@ -26,6 +24,8 @@

var testProjectId = uuid.NewString()
var testRegion = "eu01"
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
flagValues := map[string]string{
projectIdFlag: testProjectId,
globalflags.ProjectIdFlag: testProjectId,
globalflags.RegionFlag: testRegion,
}

@@ -42,2 +42,3 @@ for _, mod := range mods {

ProjectId: testProjectId,
Region: testRegion,
Verbosity: globalflags.VerbosityDefault,

@@ -52,4 +53,4 @@ },

func fixtureRequest(mods ...func(request *serviceenablement.ApiEnableServiceRequest)) serviceenablement.ApiEnableServiceRequest {
request := testClient.EnableService(testCtx, testProjectId, utils.SKEServiceId)
func fixtureRequest(mods ...func(request *serviceenablement.ApiEnableServiceRegionalRequest)) serviceenablement.ApiEnableServiceRegionalRequest {
request := testClient.EnableServiceRegional(testCtx, testRegion, testProjectId, utils.SKEServiceId)
for _, mod := range mods {

@@ -82,3 +83,3 @@ mod(&request)

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
delete(flagValues, projectIdFlag)
delete(flagValues, globalflags.ProjectIdFlag)
}),

@@ -90,3 +91,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = ""
flagValues[globalflags.ProjectIdFlag] = ""
}),

@@ -98,3 +99,3 @@ isValid: false,

flagValues: fixtureFlagValues(func(flagValues map[string]string) {
flagValues[projectIdFlag] = "invalid-uuid"
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
}),

@@ -155,3 +156,3 @@ isValid: false,

model *inputModel
expectedRequest serviceenablement.ApiEnableServiceRequest
expectedRequest serviceenablement.ApiEnableServiceRegionalRequest
}{

@@ -158,0 +159,0 @@ {

@@ -75,3 +75,3 @@ package enable

s.Start("Enabling SKE")
_, err = wait.EnableServiceWaitHandler(ctx, apiClient, model.ProjectId, utils.SKEServiceId).WaitWithContext(ctx)
_, err = wait.EnableServiceWaitHandler(ctx, apiClient, model.Region, model.ProjectId, utils.SKEServiceId).WaitWithContext(ctx)
if err != nil {

@@ -116,5 +116,5 @@ return fmt.Errorf("wait for SKE enabling: %w", err)

func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiEnableServiceRequest {
req := apiClient.EnableService(ctx, model.ProjectId, utils.SKEServiceId)
func buildRequest(ctx context.Context, model *inputModel, apiClient *serviceenablement.APIClient) serviceenablement.ApiEnableServiceRegionalRequest {
req := apiClient.EnableServiceRegional(ctx, model.Region, model.ProjectId, utils.SKEServiceId)
return req
}

@@ -274,3 +274,3 @@ <!DOCTYPE html>

alt="logo"
src="https://cdn.apps.01.cf.eu01.stackit.cloud/assets/img/logo_inverted.svg"
src="data:image/svg+xml;base64,{{.Logo}}"
/>

@@ -277,0 +277,0 @@ </div>

package auth
import (
"embed"
_ "embed"
"encoding/json"

@@ -14,3 +14,2 @@ "errors"

"os/exec"
"path"
"runtime"

@@ -21,2 +20,3 @@ "strconv"

"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
"golang.org/x/oauth2"

@@ -31,6 +31,3 @@

loginSuccessPath = "/login-successful"
stackitLandingPage = "https://www.stackit.de"
htmlTemplatesPath = "templates"
loginSuccessfulHTMLFile = "login-successful.html"
loginSuccessPath = "/login-successful"

@@ -43,7 +40,11 @@ // The IDP doesn't support wildcards for the port,

//go:embed templates/*
var htmlContent embed.FS
//go:embed templates/login-successful.html
var htmlTemplateContent string
type User struct {
//go:embed templates/stackit_nav_logo_light.svg
var logoSvgContent []byte
type InputValues struct {
Email string
Logo string
}

@@ -222,4 +223,5 @@

user := User{
input := InputValues{
Email: email,
Logo: utils.Base64Encode(logoSvgContent),
}

@@ -229,3 +231,3 @@

// See: https://github.com/golang/go/issues/44305#issuecomment-780111748
htmlTemplate, err := template.ParseFS(htmlContent, path.Join(htmlTemplatesPath, loginSuccessfulHTMLFile))
htmlTemplate, err := template.New("loginSuccess").Parse(htmlTemplateContent)
if err != nil {

@@ -235,3 +237,3 @@ errServer = fmt.Errorf("parse html file: %w", err)

err = htmlTemplate.Execute(w, user)
err = htmlTemplate.Execute(w, input)
if err != nil {

@@ -238,0 +240,0 @@ errServer = fmt.Errorf("render page: %w", err)

@@ -130,2 +130,3 @@ package config

viper.SetConfigFile(configFilePath)
viper.SetConfigType(configFileExtension)

@@ -132,0 +133,0 @@ f, err := os.Open(configFilePath)

@@ -30,4 +30,3 @@ package client

} else {
region := viper.GetString(config.RegionKey)
cfgOptions = append(cfgOptions, authCfgOption, sdkConfig.WithRegion(region))
cfgOptions = append(cfgOptions, authCfgOption)
}

@@ -34,0 +33,0 @@

@@ -22,2 +22,3 @@ package utils

const (
testRegion = "eu02"
testCredentialsRef = "credentials-ref"

@@ -37,3 +38,3 @@ testCredentialsDisplayName = "credentials-name"

func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
func (m *loadBalancerClientMocked) GetCredentialsExecute(_ context.Context, _, _, _ string) (*loadbalancer.GetCredentialsResponse, error) {
if m.getCredentialsFails {

@@ -45,3 +46,3 @@ return nil, fmt.Errorf("could not get credentials")

func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _ string) (*loadbalancer.LoadBalancer, error) {
func (m *loadBalancerClientMocked) GetLoadBalancerExecute(_ context.Context, _, _, _ string) (*loadbalancer.LoadBalancer, error) {
if m.getLoadBalancerFails {

@@ -53,3 +54,3 @@ return nil, fmt.Errorf("could not get load balancer")

func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
func (m *loadBalancerClientMocked) ListLoadBalancersExecute(_ context.Context, _, _ string) (*loadbalancer.ListLoadBalancersResponse, error) {
if m.listLoadBalancersFails {

@@ -61,3 +62,3 @@ return nil, fmt.Errorf("could not list load balancers")

func (m *loadBalancerClientMocked) UpdateTargetPool(_ context.Context, _, _, _ string) loadbalancer.ApiUpdateTargetPoolRequest {
func (m *loadBalancerClientMocked) UpdateTargetPool(_ context.Context, _, _, _, _ string) loadbalancer.ApiUpdateTargetPoolRequest {
return loadbalancer.ApiUpdateTargetPoolRequest{}

@@ -198,3 +199,3 @@ }

output, err := GetCredentialsDisplayName(context.Background(), client, testProjectId, testCredentialsRef)
output, err := GetCredentialsDisplayName(context.Background(), client, testProjectId, testRegion, testCredentialsRef)

@@ -279,3 +280,3 @@ if tt.isValid && err != nil {

output, err := GetLoadBalancerTargetPool(context.Background(), client, testProjectId, testLoadBalancerName, tt.targetPoolName)
output, err := GetLoadBalancerTargetPool(context.Background(), client, testProjectId, testRegion, testLoadBalancerName, tt.targetPoolName)

@@ -834,3 +835,3 @@ if tt.isValid && err != nil {

output, err := GetTargetName(context.Background(), client, testProjectId, testLoadBalancerName, tt.targetPoolName, tt.targetIp)
output, err := GetTargetName(context.Background(), client, testProjectId, testRegion, testLoadBalancerName, tt.targetPoolName, tt.targetIp)

@@ -973,3 +974,3 @@ if tt.isValid && err != nil {

output, err := GetUsedObsCredentials(testCtx, client, tt.allCredentials, testProjectId)
output, err := GetUsedObsCredentials(testCtx, client, tt.allCredentials, testProjectId, testRegion)

@@ -1151,3 +1152,3 @@ if tt.isValid && err != nil {

}
filteredCredentials, err := FilterCredentials(testCtx, client, tt.allCredentials, testProjectId, tt.filterOp)
filteredCredentials, err := FilterCredentials(testCtx, client, tt.allCredentials, testProjectId, testRegion, tt.filterOp)
if err != nil {

@@ -1154,0 +1155,0 @@ if !tt.isValid {

@@ -18,11 +18,16 @@ package utils

// enforce implementation of interfaces
var (
_ LoadBalancerClient = &loadbalancer.APIClient{}
)
type LoadBalancerClient interface {
GetCredentialsExecute(ctx context.Context, projectId, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error)
GetLoadBalancerExecute(ctx context.Context, projectId, name string) (*loadbalancer.LoadBalancer, error)
UpdateTargetPool(ctx context.Context, projectId, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest
ListLoadBalancersExecute(ctx context.Context, projectId string) (*loadbalancer.ListLoadBalancersResponse, error)
GetCredentialsExecute(ctx context.Context, projectId, region, credentialsRef string) (*loadbalancer.GetCredentialsResponse, error)
GetLoadBalancerExecute(ctx context.Context, projectId, region, name string) (*loadbalancer.LoadBalancer, error)
UpdateTargetPool(ctx context.Context, projectId, region, loadBalancerName, targetPoolName string) loadbalancer.ApiUpdateTargetPoolRequest
ListLoadBalancersExecute(ctx context.Context, projectId, region string) (*loadbalancer.ListLoadBalancersResponse, error)
}
func GetCredentialsDisplayName(ctx context.Context, apiClient LoadBalancerClient, projectId, credentialsRef string) (string, error) {
resp, err := apiClient.GetCredentialsExecute(ctx, projectId, credentialsRef)
func GetCredentialsDisplayName(ctx context.Context, apiClient LoadBalancerClient, projectId, region, credentialsRef string) (string, error) {
resp, err := apiClient.GetCredentialsExecute(ctx, projectId, region, credentialsRef)
if err != nil {

@@ -34,4 +39,4 @@ return "", fmt.Errorf("get Load Balancer credentials: %w", err)

func GetLoadBalancerTargetPool(ctx context.Context, apiClient LoadBalancerClient, projectId, loadBalancerName, targetPoolName string) (*loadbalancer.TargetPool, error) {
resp, err := apiClient.GetLoadBalancerExecute(ctx, projectId, loadBalancerName)
func GetLoadBalancerTargetPool(ctx context.Context, apiClient LoadBalancerClient, projectId, region, loadBalancerName, targetPoolName string) (*loadbalancer.TargetPool, error) {
resp, err := apiClient.GetLoadBalancerExecute(ctx, projectId, region, loadBalancerName)
if err != nil {

@@ -126,4 +131,4 @@ return nil, fmt.Errorf("get load balancer: %w", err)

func GetTargetName(ctx context.Context, apiClient LoadBalancerClient, projectId, loadBalancerName, targetPoolName, targetIp string) (string, error) {
targetPool, err := GetLoadBalancerTargetPool(ctx, apiClient, projectId, loadBalancerName, targetPoolName)
func GetTargetName(ctx context.Context, apiClient LoadBalancerClient, projectId, region, loadBalancerName, targetPoolName, targetIp string) (string, error) {
targetPool, err := GetLoadBalancerTargetPool(ctx, apiClient, projectId, region, loadBalancerName, targetPoolName)
if err != nil {

@@ -148,6 +153,6 @@ return "", fmt.Errorf("get target pool: %w", err)

// It goes through all load balancers and checks what observability credentials are being used, then returns a list of those credentials.
func GetUsedObsCredentials(ctx context.Context, apiClient LoadBalancerClient, allCredentials []loadbalancer.CredentialsResponse, projectId string) ([]loadbalancer.CredentialsResponse, error) {
func GetUsedObsCredentials(ctx context.Context, apiClient LoadBalancerClient, allCredentials []loadbalancer.CredentialsResponse, projectId, region string) ([]loadbalancer.CredentialsResponse, error) {
var usedCredentialsSlice []loadbalancer.CredentialsResponse
loadBalancers, err := apiClient.ListLoadBalancersExecute(ctx, projectId)
loadBalancers, err := apiClient.ListLoadBalancersExecute(ctx, projectId, region)
if err != nil {

@@ -225,3 +230,3 @@ return nil, fmt.Errorf("list load balancers: %w", err)

// If both used and unused are false, it returns the original list of credentials.
func FilterCredentials(ctx context.Context, client LoadBalancerClient, allCredentials []loadbalancer.CredentialsResponse, projectId string, filterOp int) ([]loadbalancer.CredentialsResponse, error) {
func FilterCredentials(ctx context.Context, client LoadBalancerClient, allCredentials []loadbalancer.CredentialsResponse, projectId, region string, filterOp int) ([]loadbalancer.CredentialsResponse, error) {
// check that filter OP is valid

@@ -236,3 +241,3 @@ if filterOp != OP_FILTER_USED && filterOp != OP_FILTER_UNUSED && filterOp != OP_FILTER_NOP {

usedCredentials, err := GetUsedObsCredentials(ctx, client, allCredentials, projectId)
usedCredentials, err := GetUsedObsCredentials(ctx, client, allCredentials, projectId, region)
if err != nil {

@@ -239,0 +244,0 @@ return nil, fmt.Errorf("get used observability credentials: %w", err)

@@ -30,4 +30,3 @@ package client

} else {
region := viper.GetString(config.RegionKey)
cfgOptions = append(cfgOptions, authCfgOption, sdkConfig.WithRegion(region))
cfgOptions = append(cfgOptions, authCfgOption)
}

@@ -34,0 +33,0 @@

@@ -18,2 +18,3 @@ package utils

testProjectId = uuid.NewString()
testRegion = "eu01"
)

@@ -27,3 +28,3 @@

func (m *serviceEnableClientMocked) GetServiceStatusExecute(_ context.Context, _, _ string) (*serviceenablement.ServiceStatus, error) {
func (m *serviceEnableClientMocked) GetServiceStatusRegionalExecute(_ context.Context, _, _, _ string) (*serviceenablement.ServiceStatus, error) {
if m.getServiceStatusFails {

@@ -92,3 +93,3 @@ return nil, fmt.Errorf("could not get service status")

output, err := ProjectEnabled(context.Background(), client, testProjectId)
output, err := ProjectEnabled(context.Background(), client, testRegion, testProjectId)

@@ -95,0 +96,0 @@ if tt.isValid && err != nil {

@@ -17,7 +17,7 @@ package utils

type ServiceEnablementClient interface {
GetServiceStatusExecute(ctx context.Context, projectId string, serviceId string) (*serviceenablement.ServiceStatus, error)
GetServiceStatusRegionalExecute(ctx context.Context, region, projectId, serviceId string) (*serviceenablement.ServiceStatus, error)
}
func ProjectEnabled(ctx context.Context, apiClient ServiceEnablementClient, projectId string) (bool, error) {
project, err := apiClient.GetServiceStatusExecute(ctx, projectId, SKEServiceId)
func ProjectEnabled(ctx context.Context, apiClient ServiceEnablementClient, projectId, region string) (bool, error) {
project, err := apiClient.GetServiceStatusRegionalExecute(ctx, region, projectId, SKEServiceId)
if err != nil {

@@ -24,0 +24,0 @@ oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped

@@ -24,4 +24,3 @@ package client

}
region := viper.GetString(config.RegionKey)
cfgOptions = append(cfgOptions, authCfgOption, sdkConfig.WithRegion(region))
cfgOptions = append(cfgOptions, authCfgOption)

@@ -28,0 +27,0 @@ customEndpoint := viper.GetString(config.SQLServerFlexCustomEndpointKey)

package utils
import (
"encoding/base64"
"fmt"

@@ -119,1 +120,8 @@ "net/url"

}
// Base64Encode encodes a []byte to a base64 representation as string
func Base64Encode(message []byte) string {
b := make([]byte, base64.StdEncoding.EncodedLen(len(message)))
base64.StdEncoding.Encode(b, message)
return string(b)
}

@@ -23,3 +23,4 @@ <div align="center">

This CLI is in a BETA state. More services and functionality will be supported soon.
Your feedback is appreciated!
Your feedback is appreciated!
Feel free to open [GitHub issues](https://github.com/stackitcloud/stackit-cli) to provide feature requests and bug reports.

@@ -39,2 +40,6 @@ <a name="warning-new-stackit-idp"></a>

## Documentation
There is some [documentation](./docs/stackit.md) available in the markdown format inside the `docs` directory of the repository.
## Usage

@@ -41,0 +46,0 @@