Skip to content

Commit e1d7e05

Browse files
committed
STS | Azure backing and namespace store CLI changes
Signed-off-by: Naveen Paul <napaul@redhat.com>
1 parent dd1cf76 commit e1d7e05

3 files changed

Lines changed: 27 additions & 19 deletions

File tree

pkg/backingstore/backingstore.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -579,24 +579,27 @@ func RunCreateAzureSTS(cmd *cobra.Command, args []string) {
579579
log.Fatalf(`❌ Missing expected arguments: <backing-store-name> %s`, cmd.UsageString())
580580
}
581581
createCommon(cmd, args, nbv1.StoreTypeAzureBlob, func(backStore *nbv1.BackingStore, secret *corev1.Secret) {
582-
targetBlobContainer := util.GetFlagStringOrPrompt(cmd, "target-blob-container")
583-
azureSTSAccountName := util.GetFlagStringOrPromptPassword(cmd, "account-name")
584-
azureSTSTenantID := util.GetFlagStringOrPrompt(cmd, "tenant-id")
585-
azureSTSClientID := util.GetFlagStringOrPrompt(cmd, "client-id")
586-
if err := validations.ValidateAzureSTSCredsPresent(&targetBlobContainer, &azureSTSAccountName, &azureSTSTenantID, &azureSTSClientID); err != nil {
587-
log.Fatalf(`❌ %v %s`, err, cmd.UsageString())
588-
}
589-
secretName, _ := cmd.Flags().GetString("secret-name")
590-
mandatoryProperties := []string{"AccountName", "azure_tenant_id", "azure_client_id"}
591582

583+
secretName, _ := cmd.Flags().GetString("secret-name")
584+
targetBlobContainer := util.GetFlagStringOrPrompt(cmd, "target-blob-container")
585+
azureSTSClientID := ""
592586
if secretName == "" {
587+
azureSTSAccountName := util.GetFlagStringOrPromptPassword(cmd, "account-name")
588+
azureSTSTenantID := util.GetFlagStringOrPrompt(cmd, "tenant-id")
589+
azureSTSClientID = util.GetFlagStringOrPrompt(cmd, "client-id")
590+
if err := validations.ValidateAzureSTSCredsPresent(&targetBlobContainer, &azureSTSAccountName, &azureSTSTenantID, &azureSTSClientID); err != nil {
591+
log.Fatalf(`❌ %v %s`, err, cmd.UsageString())
592+
}
593593
secret.StringData["AccountName"] = azureSTSAccountName
594594
secret.StringData["azure_tenant_id"] = azureSTSTenantID
595595
secret.StringData["azure_client_id"] = azureSTSClientID
596596
} else {
597+
mandatoryProperties := []string{"AccountName", "azure_tenant_id", "azure_client_id"}
597598
util.VerifyCredsInSecret(secretName, options.Namespace, mandatoryProperties)
598599
secret.Name = secretName
599600
secret.Namespace = options.Namespace
601+
util.KubeCheck(secret)
602+
azureSTSClientID = secret.StringData["azure_client_id"]
600603
}
601604

602605
backStore.Spec.AzureBlob = &nbv1.AzureBlobSpec{

pkg/namespacestore/namespacestore.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ func createCommon(cmd *cobra.Command, args []string, storeType nbv1.NSType, popu
429429
log.Fatalf(`❌ %s %s`, validationErr, cmd.UsageString())
430430
}
431431

432-
// Create namespace store CR
432+
// Create namespace store CR
433433
util.Panic(controllerutil.SetControllerReference(sys, namespaceStore, scheme.Scheme))
434434
if !util.KubeCreateFailExisting(namespaceStore) {
435435
log.Fatalf(`❌ Could not create NamespaceStore %q in Namespace %q (conflict)`, namespaceStore.Name, namespaceStore.Namespace)
@@ -703,20 +703,22 @@ func RunCreateAzureSTSBlob(cmd *cobra.Command, args []string) {
703703
log.Fatalf(`❌ Missing expected arguments: <namespace-store-name> %s`, cmd.UsageString())
704704
}
705705
createCommon(cmd, args, nbv1.NSStoreTypeAzureBlob, func(namespaceStore *nbv1.NamespaceStore, secret *corev1.Secret) {
706-
targetBlobContainer := util.GetFlagStringOrPrompt(cmd, "target-blob-container")
707-
azureSTSClientID := util.GetFlagStringOrPrompt(cmd, "client-id")
708-
azureSTSTenantID := util.GetFlagStringOrPrompt(cmd, "tenant-id")
709-
if err := validations.ValidateAzureSTSRequiredFlags(targetBlobContainer, azureSTSClientID, azureSTSTenantID); err != nil {
710-
log.Fatalf(`❌ %s %s`, err, cmd.UsageString())
711-
}
712706
secretName, _ := cmd.Flags().GetString("secret-name")
713-
accountName, _ := cmd.Flags().GetString("account-name")
714-
707+
targetBlobContainer := util.GetFlagStringOrPrompt(cmd, "target-blob-container")
708+
azureSTSClientID := ""
715709
if secretName != "" {
716710
util.VerifyCredsInSecret(secretName, options.Namespace, []string{"azure_tenant_id", "azure_client_id"})
717711
secret.Name = secretName
718712
secret.Namespace = options.Namespace
713+
util.KubeCheck(secret)
714+
azureSTSClientID = secret.StringData["azure_client_id"]
719715
} else {
716+
azureSTSClientID = util.GetFlagStringOrPrompt(cmd, "client-id")
717+
azureSTSTenantID := strings.TrimSpace(util.GetFlagStringOrPrompt(cmd, "tenant-id"))
718+
accountName := util.GetFlagStringOrPrompt(cmd, "account-name")
719+
if err := validations.ValidateAzureSTSRequiredFlags(targetBlobContainer, azureSTSClientID, azureSTSTenantID, accountName); err != nil {
720+
log.Fatalf(`❌ %s %s`, err, cmd.UsageString())
721+
}
720722
secret.StringData["azure_tenant_id"] = strings.TrimSpace(azureSTSTenantID)
721723
secret.StringData["azure_client_id"] = strings.TrimSpace(azureSTSClientID)
722724
if strings.TrimSpace(accountName) != "" {

pkg/validations/namespacestore_validations.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func ValidateNsStoreAzureBlob(nsStore *nbv1.NamespaceStore) error {
207207
}
208208

209209
// ValidateAzureSTSRequiredFlags validates that required Azure STS CLI/flag values are non-empty (target blob container, client ID, tenant ID).
210-
func ValidateAzureSTSRequiredFlags(targetBlobContainer, clientID, tenantID string) error {
210+
func ValidateAzureSTSRequiredFlags(targetBlobContainer, clientID, tenantID, accountName string) error {
211211
if strings.TrimSpace(targetBlobContainer) == "" {
212212
return util.ValidationError{Msg: "target-blob-container is required and must be non-empty"}
213213
}
@@ -217,6 +217,9 @@ func ValidateAzureSTSRequiredFlags(targetBlobContainer, clientID, tenantID strin
217217
if strings.TrimSpace(tenantID) == "" {
218218
return util.ValidationError{Msg: "tenant-id is required and must be non-empty"}
219219
}
220+
if strings.TrimSpace(accountName) == "" {
221+
return util.ValidationError{Msg: "account-name is required and must be non-empty"}
222+
}
220223
return nil
221224
}
222225

0 commit comments

Comments
 (0)