diff --git a/controllers/keystoneapi_controller.go b/controllers/keystoneapi_controller.go index 49b8e58b..bd59b33b 100644 --- a/controllers/keystoneapi_controller.go +++ b/controllers/keystoneapi_controller.go @@ -1280,8 +1280,10 @@ func (r *KeystoneAPIReconciler) reconcileCloudConfig( if err != nil { return err } + cloudrc := keystone.GenerateCloudrc(&openStackConfigSecret, &openStackConfig) secretString := map[string]string{ "secure.yaml": string(secretVal), + "cloudrc": string(cloudrc), } secrets := []util.Template{ diff --git a/pkg/keystone/cloudconfig.go b/pkg/keystone/cloudconfig.go index d4b9534f..0ea21f47 100644 --- a/pkg/keystone/cloudconfig.go +++ b/pkg/keystone/cloudconfig.go @@ -16,6 +16,8 @@ limitations under the License. package keystone +import "fmt" + // OpenStackConfig type type OpenStackConfig struct { Clouds struct { @@ -42,3 +44,17 @@ type OpenStackConfigSecret struct { } } } + +// generateCloudrc - generate file contents of a cloudrc file for the clients +// until there is parity with openstackclient. +func GenerateCloudrc(secret *OpenStackConfigSecret, config *OpenStackConfig) string { + auth := config.Clouds.Default.Auth + val := fmt.Sprintf( + "export OS_AUTH_URL=" + auth.AuthURL + + "\nexport OS_USERNAME=" + auth.UserName + + "\nexport OS_PROJECT_NAME=" + auth.ProjectName + + "\nexport OS_PROJECT_DOMAIN_NAME=" + auth.ProjectDomainName + + "\nexport OS_USER_DOMAIN_NAME=" + auth.UserDomainName + + "\nexport OS_PASSWORD=" + secret.Clouds.Default.Auth.Password) + return val +}