From 1e767d56dca8c83b710eb2ce6d73e65a333c716f Mon Sep 17 00:00:00 2001 From: GokceGK <161626272+GokceGK@users.noreply.github.com> Date: Thu, 1 Aug 2024 08:54:49 +0200 Subject: [PATCH] Fix service enablement custom endpoint (#489) * add service enablement custom endpoint * generate docs --- docs/index.md | 1 + stackit/provider.go | 129 +++++++++++++++++++++++--------------------- 2 files changed, 70 insertions(+), 60 deletions(-) diff --git a/docs/index.md b/docs/index.md index c3d0f46a..b4edde92 100644 --- a/docs/index.md +++ b/docs/index.md @@ -167,6 +167,7 @@ Note: AWS specific checks must be skipped as they do not work on STACKIT. For de - `service_account_key` (String) Service account key used for authentication. If set, the key flow will be used to authenticate all operations. - `service_account_key_path` (String) Path for the service account key used for authentication. If set, the key flow will be used to authenticate all operations. - `service_account_token` (String) Token used for authentication. If set, the token flow will be used to authenticate all operations. +- `service_enablement_custom_endpoint` (String) Custom endpoint for the Service Enablement API - `ske_custom_endpoint` (String) Custom endpoint for the Kubernetes Engine (SKE) service - `sqlserverflex_custom_endpoint` (String) Custom endpoint for the SQL Server Flex service - `token_custom_endpoint` (String) Custom endpoint for the token API, which is used to request access tokens when using the key flow diff --git a/stackit/provider.go b/stackit/provider.go index 2f47c2eb..c8ebfe34 100644 --- a/stackit/provider.go +++ b/stackit/provider.go @@ -79,71 +79,73 @@ func (p *Provider) Metadata(_ context.Context, _ provider.MetadataRequest, resp } type providerModel struct { - CredentialsFilePath types.String `tfsdk:"credentials_path"` - ServiceAccountEmail types.String `tfsdk:"service_account_email"` - ServiceAccountKey types.String `tfsdk:"service_account_key"` - ServiceAccountKeyPath types.String `tfsdk:"service_account_key_path"` - PrivateKey types.String `tfsdk:"private_key"` - PrivateKeyPath types.String `tfsdk:"private_key_path"` - Token types.String `tfsdk:"service_account_token"` - Region types.String `tfsdk:"region"` - ArgusCustomEndpoint types.String `tfsdk:"argus_custom_endpoint"` - DNSCustomEndpoint types.String `tfsdk:"dns_custom_endpoint"` - IaaSCustomEndpoint types.String `tfsdk:"iaas_custom_endpoint"` - PostgreSQLCustomEndpoint types.String `tfsdk:"postgresql_custom_endpoint"` - PostgresFlexCustomEndpoint types.String `tfsdk:"postgresflex_custom_endpoint"` - MongoDBFlexCustomEndpoint types.String `tfsdk:"mongodbflex_custom_endpoint"` - LoadBalancerCustomEndpoint types.String `tfsdk:"loadbalancer_custom_endpoint"` - LogMeCustomEndpoint types.String `tfsdk:"logme_custom_endpoint"` - RabbitMQCustomEndpoint types.String `tfsdk:"rabbitmq_custom_endpoint"` - MariaDBCustomEndpoint types.String `tfsdk:"mariadb_custom_endpoint"` - AuthorizationCustomEndpoint types.String `tfsdk:"authorization_custom_endpoint"` - ObjectStorageCustomEndpoint types.String `tfsdk:"objectstorage_custom_endpoint"` - OpenSearchCustomEndpoint types.String `tfsdk:"opensearch_custom_endpoint"` - RedisCustomEndpoint types.String `tfsdk:"redis_custom_endpoint"` - SecretsManagerCustomEndpoint types.String `tfsdk:"secretsmanager_custom_endpoint"` - SQLServerFlexCustomEndpoint types.String `tfsdk:"sqlserverflex_custom_endpoint"` - SKECustomEndpoint types.String `tfsdk:"ske_custom_endpoint"` - ServerBackupCustomEndpoint types.String `tfsdk:"server_backup_custom_endpoint"` - ResourceManagerCustomEndpoint types.String `tfsdk:"resourcemanager_custom_endpoint"` - TokenCustomEndpoint types.String `tfsdk:"token_custom_endpoint"` - JWKSCustomEndpoint types.String `tfsdk:"jwks_custom_endpoint"` - EnableBetaResources types.Bool `tfsdk:"enable_beta_resources"` + CredentialsFilePath types.String `tfsdk:"credentials_path"` + ServiceAccountEmail types.String `tfsdk:"service_account_email"` + ServiceAccountKey types.String `tfsdk:"service_account_key"` + ServiceAccountKeyPath types.String `tfsdk:"service_account_key_path"` + PrivateKey types.String `tfsdk:"private_key"` + PrivateKeyPath types.String `tfsdk:"private_key_path"` + Token types.String `tfsdk:"service_account_token"` + Region types.String `tfsdk:"region"` + ArgusCustomEndpoint types.String `tfsdk:"argus_custom_endpoint"` + DNSCustomEndpoint types.String `tfsdk:"dns_custom_endpoint"` + IaaSCustomEndpoint types.String `tfsdk:"iaas_custom_endpoint"` + PostgreSQLCustomEndpoint types.String `tfsdk:"postgresql_custom_endpoint"` + PostgresFlexCustomEndpoint types.String `tfsdk:"postgresflex_custom_endpoint"` + MongoDBFlexCustomEndpoint types.String `tfsdk:"mongodbflex_custom_endpoint"` + LoadBalancerCustomEndpoint types.String `tfsdk:"loadbalancer_custom_endpoint"` + LogMeCustomEndpoint types.String `tfsdk:"logme_custom_endpoint"` + RabbitMQCustomEndpoint types.String `tfsdk:"rabbitmq_custom_endpoint"` + MariaDBCustomEndpoint types.String `tfsdk:"mariadb_custom_endpoint"` + AuthorizationCustomEndpoint types.String `tfsdk:"authorization_custom_endpoint"` + ObjectStorageCustomEndpoint types.String `tfsdk:"objectstorage_custom_endpoint"` + OpenSearchCustomEndpoint types.String `tfsdk:"opensearch_custom_endpoint"` + RedisCustomEndpoint types.String `tfsdk:"redis_custom_endpoint"` + SecretsManagerCustomEndpoint types.String `tfsdk:"secretsmanager_custom_endpoint"` + SQLServerFlexCustomEndpoint types.String `tfsdk:"sqlserverflex_custom_endpoint"` + SKECustomEndpoint types.String `tfsdk:"ske_custom_endpoint"` + ServerBackupCustomEndpoint types.String `tfsdk:"server_backup_custom_endpoint"` + ResourceManagerCustomEndpoint types.String `tfsdk:"resourcemanager_custom_endpoint"` + TokenCustomEndpoint types.String `tfsdk:"token_custom_endpoint"` + JWKSCustomEndpoint types.String `tfsdk:"jwks_custom_endpoint"` + EnableBetaResources types.Bool `tfsdk:"enable_beta_resources"` + ServiceEnablementCustomEndpoint types.String `tfsdk:"service_enablement_custom_endpoint"` } // Schema defines the provider-level schema for configuration data. func (p *Provider) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) { descriptions := map[string]string{ - "credentials_path": "Path of JSON from where the credentials are read. Takes precedence over the env var `STACKIT_CREDENTIALS_PATH`. Default value is `~/.stackit/credentials.json`.", - "service_account_token": "Token used for authentication. If set, the token flow will be used to authenticate all operations.", - "service_account_key_path": "Path for the service account key used for authentication. If set, the key flow will be used to authenticate all operations.", - "service_account_key": "Service account key used for authentication. If set, the key flow will be used to authenticate all operations.", - "private_key_path": "Path for the private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key.", - "private_key": "Private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key.", - "service_account_email": "Service account email. It can also be set using the environment variable STACKIT_SERVICE_ACCOUNT_EMAIL. It is required if you want to use the resource manager project resource.", - "region": "Region will be used as the default location for regional services. Not all services require a region, some are global", - "argus_custom_endpoint": "Custom endpoint for the Argus service", - "dns_custom_endpoint": "Custom endpoint for the DNS service", - "iaas_custom_endpoint": "Custom endpoint for the IaaS service", - "mongodbflex_custom_endpoint": "Custom endpoint for the MongoDB Flex service", - "loadbalancer_custom_endpoint": "Custom endpoint for the Load Balancer service", - "logme_custom_endpoint": "Custom endpoint for the LogMe service", - "rabbitmq_custom_endpoint": "Custom endpoint for the RabbitMQ service", - "mariadb_custom_endpoint": "Custom endpoint for the MariaDB service", - "authorization_custom_endpoint": "Custom endpoint for the Membership service", - "objectstorage_custom_endpoint": "Custom endpoint for the Object Storage service", - "opensearch_custom_endpoint": "Custom endpoint for the OpenSearch service", - "postgresql_custom_endpoint": "Custom endpoint for the PostgreSQL service", - "postgresflex_custom_endpoint": "Custom endpoint for the PostgresFlex service", - "redis_custom_endpoint": "Custom endpoint for the Redis service", - "server_backup_custom_endpoint": "Custom endpoint for the Server Backup service", - "resourcemanager_custom_endpoint": "Custom endpoint for the Resource Manager service", - "secretsmanager_custom_endpoint": "Custom endpoint for the Secrets Manager service", - "sqlserverflex_custom_endpoint": "Custom endpoint for the SQL Server Flex service", - "ske_custom_endpoint": "Custom endpoint for the Kubernetes Engine (SKE) service", - "token_custom_endpoint": "Custom endpoint for the token API, which is used to request access tokens when using the key flow", - "jwks_custom_endpoint": "Custom endpoint for the jwks API, which is used to get the json web key sets (jwks) to validate tokens when using the key flow", - "enable_beta_resources": "Enable beta resources. Default is false.", + "credentials_path": "Path of JSON from where the credentials are read. Takes precedence over the env var `STACKIT_CREDENTIALS_PATH`. Default value is `~/.stackit/credentials.json`.", + "service_account_token": "Token used for authentication. If set, the token flow will be used to authenticate all operations.", + "service_account_key_path": "Path for the service account key used for authentication. If set, the key flow will be used to authenticate all operations.", + "service_account_key": "Service account key used for authentication. If set, the key flow will be used to authenticate all operations.", + "private_key_path": "Path for the private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key.", + "private_key": "Private RSA key used for authentication, relevant for the key flow. It takes precedence over the private key that is included in the service account key.", + "service_account_email": "Service account email. It can also be set using the environment variable STACKIT_SERVICE_ACCOUNT_EMAIL. It is required if you want to use the resource manager project resource.", + "region": "Region will be used as the default location for regional services. Not all services require a region, some are global", + "argus_custom_endpoint": "Custom endpoint for the Argus service", + "dns_custom_endpoint": "Custom endpoint for the DNS service", + "iaas_custom_endpoint": "Custom endpoint for the IaaS service", + "mongodbflex_custom_endpoint": "Custom endpoint for the MongoDB Flex service", + "loadbalancer_custom_endpoint": "Custom endpoint for the Load Balancer service", + "logme_custom_endpoint": "Custom endpoint for the LogMe service", + "rabbitmq_custom_endpoint": "Custom endpoint for the RabbitMQ service", + "mariadb_custom_endpoint": "Custom endpoint for the MariaDB service", + "authorization_custom_endpoint": "Custom endpoint for the Membership service", + "objectstorage_custom_endpoint": "Custom endpoint for the Object Storage service", + "opensearch_custom_endpoint": "Custom endpoint for the OpenSearch service", + "postgresql_custom_endpoint": "Custom endpoint for the PostgreSQL service", + "postgresflex_custom_endpoint": "Custom endpoint for the PostgresFlex service", + "redis_custom_endpoint": "Custom endpoint for the Redis service", + "server_backup_custom_endpoint": "Custom endpoint for the Server Backup service", + "resourcemanager_custom_endpoint": "Custom endpoint for the Resource Manager service", + "secretsmanager_custom_endpoint": "Custom endpoint for the Secrets Manager service", + "sqlserverflex_custom_endpoint": "Custom endpoint for the SQL Server Flex service", + "ske_custom_endpoint": "Custom endpoint for the Kubernetes Engine (SKE) service", + "service_enablement_custom_endpoint": "Custom endpoint for the Service Enablement API", + "token_custom_endpoint": "Custom endpoint for the token API, which is used to request access tokens when using the key flow", + "jwks_custom_endpoint": "Custom endpoint for the jwks API, which is used to get the json web key sets (jwks) to validate tokens when using the key flow", + "enable_beta_resources": "Enable beta resources. Default is false.", } resp.Schema = schema.Schema{ @@ -256,6 +258,10 @@ func (p *Provider) Schema(_ context.Context, _ provider.SchemaRequest, resp *pro Optional: true, Description: descriptions["server_backup_custom_endpoint"], }, + "service_enablement_custom_endpoint": schema.StringAttribute{ + Optional: true, + Description: descriptions["service_enablement_custom_endpoint"], + }, "token_custom_endpoint": schema.StringAttribute{ Optional: true, Description: descriptions["token_custom_endpoint"], @@ -365,6 +371,9 @@ func (p *Provider) Configure(ctx context.Context, req provider.ConfigureRequest, if !(providerConfig.SKECustomEndpoint.IsUnknown() || providerConfig.SKECustomEndpoint.IsNull()) { providerData.SKECustomEndpoint = providerConfig.SKECustomEndpoint.ValueString() } + if !(providerConfig.ServiceEnablementCustomEndpoint.IsUnknown() || providerConfig.ServiceEnablementCustomEndpoint.IsNull()) { + providerData.ServiceEnablementCustomEndpoint = providerConfig.ServiceEnablementCustomEndpoint.ValueString() + } if !(providerConfig.TokenCustomEndpoint.IsUnknown() || providerConfig.TokenCustomEndpoint.IsNull()) { sdkConfig.TokenCustomUrl = providerConfig.TokenCustomEndpoint.ValueString() }