diff --git a/examples/ibm-partner-center-sell/README.md b/examples/ibm-partner-center-sell/README.md index cb93a89cb5a..c016ed6a437 100644 --- a/examples/ibm-partner-center-sell/README.md +++ b/examples/ibm-partner-center-sell/README.md @@ -120,6 +120,7 @@ resource "ibm_onboarding_catalog_deployment" "onboarding_catalog_deployment_inst | Name | Description | |------|-------------| +| geo_tags | | | url | The global catalog URL of your product. | | catalog_deployment_id | The ID of a global catalog object. | @@ -164,6 +165,7 @@ resource "ibm_onboarding_catalog_plan" "onboarding_catalog_plan_instance" { | Name | Description | |------|-------------| +| geo_tags | | | url | The global catalog URL of your product. | | catalog_plan_id | The ID of a global catalog object. | @@ -208,6 +210,7 @@ resource "ibm_onboarding_catalog_product" "onboarding_catalog_product_instance" | Name | Description | |------|-------------| +| geo_tags | | | url | The global catalog URL of your product. | | catalog_product_id | The ID of a global catalog object. | diff --git a/examples/ibm-partner-center-sell/main.tf b/examples/ibm-partner-center-sell/main.tf index 9bc4fc99239..bbe0d47d398 100644 --- a/examples/ibm-partner-center-sell/main.tf +++ b/examples/ibm-partner-center-sell/main.tf @@ -80,6 +80,111 @@ resource "ibm_onboarding_catalog_deployment" "onboarding_catalog_deployment_inst bindable = true plan_updateable = true service_key_supported = true + parameters { + displayname = "displayname" + name = "name" + type = "text" + options { + displayname = "displayname" + value = "value" + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } + value = [ "value" ] + layout = "layout" + associations = { "key" = "anything as a string" } + validation_url = "validation_url" + options_url = "options_url" + invalidmessage = "invalidmessage" + description = "description" + required = true + pattern = "pattern" + placeholder = "placeholder" + readonly = true + hidden = true + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } } deployment { broker { @@ -229,6 +334,112 @@ resource "ibm_onboarding_catalog_product" "onboarding_catalog_product_instance" bindable = true plan_updateable = true service_key_supported = true + unique_api_key = true + parameters { + displayname = "displayname" + name = "name" + type = "text" + options { + displayname = "displayname" + value = "value" + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } + value = [ "value" ] + layout = "layout" + associations = { "key" = "anything as a string" } + validation_url = "validation_url" + options_url = "options_url" + invalidmessage = "invalidmessage" + description = "description" + required = true + pattern = "pattern" + placeholder = "placeholder" + readonly = true + hidden = true + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } } other { pc { diff --git a/go.mod b/go.mod index 06272d4e462..8cb87062ad3 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/IBM/logs-router-go-sdk v1.0.5 github.com/IBM/mqcloud-go-sdk v0.2.0 github.com/IBM/networking-go-sdk v0.51.1 - github.com/IBM/platform-services-go-sdk v0.72.0 + github.com/IBM/platform-services-go-sdk v0.73.0 github.com/IBM/project-go-sdk v0.3.5 github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 github.com/IBM/sarama v1.41.2 diff --git a/go.sum b/go.sum index 71f092c16cb..90f669e72b9 100644 --- a/go.sum +++ b/go.sum @@ -156,8 +156,8 @@ github.com/IBM/mqcloud-go-sdk v0.2.0 h1:QOWk8ZGk0QfIL0MOGTKzNdM3Qe0Hk+ifAFtNSFQo github.com/IBM/mqcloud-go-sdk v0.2.0/go.mod h1:VZQKMtqmcdXKhmLhLiPuS/UHMs/5yo2tA/nD83cQt9E= github.com/IBM/networking-go-sdk v0.51.1 h1:xRlDFxSMejMmJ7JPFZ9cflL86uJpbqUzuL/1D/pP7/g= github.com/IBM/networking-go-sdk v0.51.1/go.mod h1:5aBaPKkm47LHECEOOZ4ltbwypOhapVo5aSCP3MTxmgQ= -github.com/IBM/platform-services-go-sdk v0.72.0 h1:AfJe6bgqmTQU4ff/2URu3wkRLZD0XIzojn7SLf2yIns= -github.com/IBM/platform-services-go-sdk v0.72.0/go.mod h1:ApFkvqw7NaluWJ5Uq+afdM/2jQqo5ILc0SzKSVobYNw= +github.com/IBM/platform-services-go-sdk v0.73.0 h1:CKs6qCM2U549gMn4ULfJB76DaDQpit/+0VmbKDqSpFU= +github.com/IBM/platform-services-go-sdk v0.73.0/go.mod h1:LSaXGGJUGGPMCCtG1/24r9LJEbF0hmpXtQOhABRk0PY= github.com/IBM/project-go-sdk v0.3.5 h1:L+YClFUa14foS0B/hOOY9n7sIdsT5/XQicnXOyJSpyM= github.com/IBM/project-go-sdk v0.3.5/go.mod h1:FOJM9ihQV3EEAY6YigcWiTNfVCThtdY8bLC/nhQHFvo= github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 h1:NPUhkoOCRuv3OFWt19PmwjXGGTKlvmbuPg9fUrBUNe4= diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment.go index 00486adbed2..034b8274853 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment.go @@ -347,6 +347,528 @@ func ResourceIbmOnboardingCatalogDeployment() *schema.Resource { Optional: true, Description: "Indicates service credentials support and controls the Service Credential tab on Resource Details page.", }, + "parameters": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The display name for custom service parameters.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The key of the parameter.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The type of custom service parameters.", + }, + "options": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The display name for custom service parameters.", + }, + "value": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The value for custom service parameters.", + }, + "i18n": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The description for the object.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "en": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "de": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "es": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "fr": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "it": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ja": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ko": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "pt_br": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_tw": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_cn": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + "value": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "layout": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Specifies the layout of check box or radio input types. When unspecified, the default layout is horizontal.", + }, + "associations": &schema.Schema{ + Type: schema.TypeMap, + Optional: true, + Description: "A JSON structure to describe the interactions with pricing plans and/or other custom parameters.", + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "validation_url": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The validation URL for custom service parameters.", + }, + "options_url": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The options URL for custom service parameters.", + }, + "invalidmessage": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The message that appears when the content of the text box is invalid.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The description of the parameter that is displayed to help users with the value of the parameter.", + }, + "required": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "A boolean value that indicates whether the parameter must be entered in the IBM Cloud user interface.", + }, + "pattern": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "A regular expression that the value is checked against.", + }, + "placeholder": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The placeholder text for custom parameters.", + }, + "readonly": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "A boolean value that indicates whether the value of the parameter is displayed only and cannot be changed by users. The default value is false.", + }, + "hidden": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "Indicates whether the custom parameters is hidden required or not.", + }, + "i18n": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The description for the object.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "en": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "de": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "es": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "fr": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "it": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ja": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ko": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "pt_br": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_tw": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_cn": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, }, }, }, @@ -398,6 +920,11 @@ func ResourceIbmOnboardingCatalogDeployment() *schema.Resource { }, }, }, + "geo_tags": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, "url": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -623,6 +1150,12 @@ func resourceIbmOnboardingCatalogDeploymentRead(context context.Context, d *sche return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_deployment", "read", "set-metadata").GetDiag() } } + if !core.IsNil(globalCatalogDeployment.GeoTags) { + if err = d.Set("geo_tags", globalCatalogDeployment.GeoTags); err != nil { + err = fmt.Errorf("Error setting geo_tags: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_deployment", "read", "set-geo_tags").GetDiag() + } + } if !core.IsNil(globalCatalogDeployment.URL) { if err = d.Set("url", globalCatalogDeployment.URL); err != nil { err = fmt.Errorf("Error setting url: %s", err) @@ -844,7 +1377,7 @@ func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadata( model.Ui = UiModel } if modelMap["service"] != nil && len(modelMap["service"].([]interface{})) > 0 && modelMap["service"].([]interface{})[0] != nil { - ServiceModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) + ServiceModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) if err != nil { return model, err } @@ -999,8 +1532,8 @@ func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataUIUrls(mode return model, nil } -func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataService, error) { - model := &partnercentersellv1.GlobalCatalogMetadataService{} +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogDeploymentMetadataService, error) { + model := &partnercentersellv1.GlobalCatalogDeploymentMetadataService{} if modelMap["rc_provisionable"] != nil { model.RcProvisionable = core.BoolPtr(modelMap["rc_provisionable"].(bool)) } @@ -1016,26 +1549,213 @@ func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataService(mod if modelMap["service_key_supported"] != nil { model.ServiceKeySupported = core.BoolPtr(modelMap["service_key_supported"].(bool)) } + if modelMap["parameters"] != nil { + parameters := []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{} + for _, parametersItem := range modelMap["parameters"].([]interface{}) { + parametersItemModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParameters(parametersItem.(map[string]interface{})) + if err != nil { + return model, err + } + parameters = append(parameters, *parametersItemModel) + } + model.Parameters = parameters + } return model, nil } -func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataDeployment(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataDeployment, error) { - model := &partnercentersellv1.GlobalCatalogMetadataDeployment{} - if modelMap["broker"] != nil && len(modelMap["broker"].([]interface{})) > 0 && modelMap["broker"].([]interface{})[0] != nil { - BrokerModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataDeploymentBroker(modelMap["broker"].([]interface{})[0].(map[string]interface{})) - if err != nil { - return model, err - } - model.Broker = BrokerModel - } - if modelMap["location"] != nil && modelMap["location"].(string) != "" { - model.Location = core.StringPtr(modelMap["location"].(string)) +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParameters(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) } - if modelMap["location_url"] != nil && modelMap["location_url"].(string) != "" { - model.LocationURL = core.StringPtr(modelMap["location_url"].(string)) + if modelMap["name"] != nil && modelMap["name"].(string) != "" { + model.Name = core.StringPtr(modelMap["name"].(string)) } - if modelMap["target_crn"] != nil && modelMap["target_crn"].(string) != "" { - model.TargetCrn = core.StringPtr(modelMap["target_crn"].(string)) + if modelMap["type"] != nil && modelMap["type"].(string) != "" { + model.Type = core.StringPtr(modelMap["type"].(string)) + } + if modelMap["options"] != nil { + options := []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{} + for _, optionsItem := range modelMap["options"].([]interface{}) { + optionsItemModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersOptions(optionsItem.(map[string]interface{})) + if err != nil { + return model, err + } + options = append(options, *optionsItemModel) + } + model.Options = options + } + if modelMap["value"] != nil { + value := []string{} + for _, valueItem := range modelMap["value"].([]interface{}) { + value = append(value, valueItem.(string)) + } + model.Value = value + } + if modelMap["layout"] != nil && modelMap["layout"].(string) != "" { + model.Layout = core.StringPtr(modelMap["layout"].(string)) + } + if modelMap["associations"] != nil { + model.Associations = modelMap["associations"].(map[string]interface{}) + } + if modelMap["validation_url"] != nil && modelMap["validation_url"].(string) != "" { + model.ValidationURL = core.StringPtr(modelMap["validation_url"].(string)) + } + if modelMap["options_url"] != nil && modelMap["options_url"].(string) != "" { + model.OptionsURL = core.StringPtr(modelMap["options_url"].(string)) + } + if modelMap["invalidmessage"] != nil && modelMap["invalidmessage"].(string) != "" { + model.Invalidmessage = core.StringPtr(modelMap["invalidmessage"].(string)) + } + if modelMap["description"] != nil && modelMap["description"].(string) != "" { + model.Description = core.StringPtr(modelMap["description"].(string)) + } + if modelMap["required"] != nil { + model.Required = core.BoolPtr(modelMap["required"].(bool)) + } + if modelMap["pattern"] != nil && modelMap["pattern"].(string) != "" { + model.Pattern = core.StringPtr(modelMap["pattern"].(string)) + } + if modelMap["placeholder"] != nil && modelMap["placeholder"].(string) != "" { + model.Placeholder = core.StringPtr(modelMap["placeholder"].(string)) + } + if modelMap["readonly"] != nil { + model.Readonly = core.BoolPtr(modelMap["readonly"].(bool)) + } + if modelMap["hidden"] != nil { + model.Hidden = core.BoolPtr(modelMap["hidden"].(bool)) + } + if modelMap["i18n"] != nil && len(modelMap["i18n"].([]interface{})) > 0 { + I18nModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap["i18n"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.I18n = I18nModel + } + return model, nil +} + +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersOptions(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) + } + if modelMap["value"] != nil && modelMap["value"].(string) != "" { + model.Value = core.StringPtr(modelMap["value"].(string)) + } + if modelMap["i18n"] != nil && len(modelMap["i18n"].([]interface{})) > 0 { + I18nModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap["i18n"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.I18n = I18nModel + } + return model, nil +} + +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n{} + if modelMap["en"] != nil && len(modelMap["en"].([]interface{})) > 0 { + EnModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["en"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.En = EnModel + } + if modelMap["de"] != nil && len(modelMap["de"].([]interface{})) > 0 { + DeModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["de"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.De = DeModel + } + if modelMap["es"] != nil && len(modelMap["es"].([]interface{})) > 0 { + EsModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["es"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Es = EsModel + } + if modelMap["fr"] != nil && len(modelMap["fr"].([]interface{})) > 0 { + FrModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["fr"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Fr = FrModel + } + if modelMap["it"] != nil && len(modelMap["it"].([]interface{})) > 0 { + ItModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["it"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.It = ItModel + } + if modelMap["ja"] != nil && len(modelMap["ja"].([]interface{})) > 0 { + JaModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["ja"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Ja = JaModel + } + if modelMap["ko"] != nil && len(modelMap["ko"].([]interface{})) > 0 { + KoModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["ko"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Ko = KoModel + } + if modelMap["pt_br"] != nil && len(modelMap["pt_br"].([]interface{})) > 0 { + PtBrModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["pt_br"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.PtBr = PtBrModel + } + if modelMap["zh_tw"] != nil && len(modelMap["zh_tw"].([]interface{})) > 0 { + ZhTwModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["zh_tw"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.ZhTw = ZhTwModel + } + if modelMap["zh_cn"] != nil && len(modelMap["zh_cn"].([]interface{})) > 0 { + ZhCnModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["zh_cn"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.ZhCn = ZhCnModel + } + return model, nil +} + +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) + } + if modelMap["description"] != nil && modelMap["description"].(string) != "" { + model.Description = core.StringPtr(modelMap["description"].(string)) + } + return model, nil +} + +func ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataDeployment(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataDeployment, error) { + model := &partnercentersellv1.GlobalCatalogMetadataDeployment{} + if modelMap["broker"] != nil && len(modelMap["broker"].([]interface{})) > 0 && modelMap["broker"].([]interface{})[0] != nil { + BrokerModel, err := ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataDeploymentBroker(modelMap["broker"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Broker = BrokerModel + } + if modelMap["location"] != nil && modelMap["location"].(string) != "" { + model.Location = core.StringPtr(modelMap["location"].(string)) + } + if modelMap["location_url"] != nil && modelMap["location_url"].(string) != "" { + model.LocationURL = core.StringPtr(modelMap["location_url"].(string)) + } + if modelMap["target_crn"] != nil && modelMap["target_crn"].(string) != "" { + model.TargetCrn = core.StringPtr(modelMap["target_crn"].(string)) } return model, nil } @@ -1101,7 +1821,7 @@ func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataToMap( modelMap["ui"] = []map[string]interface{}{uiMap} } if model.Service != nil { - serviceMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceToMap(model.Service) + serviceMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceToMap(model.Service) if err != nil { return modelMap, err } @@ -1253,7 +1973,7 @@ func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsToMap(mode return modelMap, nil } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogMetadataService) (map[string]interface{}, error) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogDeploymentMetadataService) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.RcProvisionable != nil { modelMap["rc_provisionable"] = *model.RcProvisionable @@ -1270,6 +1990,193 @@ func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceToMap(mod if model.ServiceKeySupported != nil { modelMap["service_key_supported"] = *model.ServiceKeySupported } + if model.Parameters != nil { + parameters := []map[string]interface{}{} + for _, parametersItem := range model.Parameters { + parametersItemMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersToMap(¶metersItem) // #nosec G601 + if err != nil { + return modelMap, err + } + parameters = append(parameters, parametersItemMap) + } + modelMap["parameters"] = parameters + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Type != nil { + modelMap["type"] = *model.Type + } + if model.Options != nil { + options := []map[string]interface{}{} + for _, optionsItem := range model.Options { + optionsItemMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsToMap(&optionsItem) // #nosec G601 + if err != nil { + return modelMap, err + } + options = append(options, optionsItemMap) + } + modelMap["options"] = options + } + if model.Value != nil { + modelMap["value"] = model.Value + } + if model.Layout != nil { + modelMap["layout"] = *model.Layout + } + if model.Associations != nil { + associations := make(map[string]interface{}) + for k, v := range model.Associations { + associations[k] = flex.Stringify(v) + } + modelMap["associations"] = associations + } + if model.ValidationURL != nil { + modelMap["validation_url"] = *model.ValidationURL + } + if model.OptionsURL != nil { + modelMap["options_url"] = *model.OptionsURL + } + if model.Invalidmessage != nil { + modelMap["invalidmessage"] = *model.Invalidmessage + } + if model.Description != nil { + modelMap["description"] = *model.Description + } + if model.Required != nil { + modelMap["required"] = *model.Required + } + if model.Pattern != nil { + modelMap["pattern"] = *model.Pattern + } + if model.Placeholder != nil { + modelMap["placeholder"] = *model.Placeholder + } + if model.Readonly != nil { + modelMap["readonly"] = *model.Readonly + } + if model.Hidden != nil { + modelMap["hidden"] = *model.Hidden + } + if model.I18n != nil { + i18nMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nToMap(model.I18n) + if err != nil { + return modelMap, err + } + modelMap["i18n"] = []map[string]interface{}{i18nMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Value != nil { + modelMap["value"] = *model.Value + } + if model.I18n != nil { + i18nMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nToMap(model.I18n) + if err != nil { + return modelMap, err + } + modelMap["i18n"] = []map[string]interface{}{i18nMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.En != nil { + enMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.En) + if err != nil { + return modelMap, err + } + modelMap["en"] = []map[string]interface{}{enMap} + } + if model.De != nil { + deMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.De) + if err != nil { + return modelMap, err + } + modelMap["de"] = []map[string]interface{}{deMap} + } + if model.Es != nil { + esMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Es) + if err != nil { + return modelMap, err + } + modelMap["es"] = []map[string]interface{}{esMap} + } + if model.Fr != nil { + frMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Fr) + if err != nil { + return modelMap, err + } + modelMap["fr"] = []map[string]interface{}{frMap} + } + if model.It != nil { + itMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.It) + if err != nil { + return modelMap, err + } + modelMap["it"] = []map[string]interface{}{itMap} + } + if model.Ja != nil { + jaMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Ja) + if err != nil { + return modelMap, err + } + modelMap["ja"] = []map[string]interface{}{jaMap} + } + if model.Ko != nil { + koMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Ko) + if err != nil { + return modelMap, err + } + modelMap["ko"] = []map[string]interface{}{koMap} + } + if model.PtBr != nil { + ptBrMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.PtBr) + if err != nil { + return modelMap, err + } + modelMap["pt_br"] = []map[string]interface{}{ptBrMap} + } + if model.ZhTw != nil { + zhTwMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.ZhTw) + if err != nil { + return modelMap, err + } + modelMap["zh_tw"] = []map[string]interface{}{zhTwMap} + } + if model.ZhCn != nil { + zhCnMap, err := ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.ZhCn) + if err != nil { + return modelMap, err + } + modelMap["zh_cn"] = []map[string]interface{}{zhCnMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Description != nil { + modelMap["description"] = *model.Description + } return modelMap, nil } @@ -1312,286 +2219,620 @@ func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentPatchAsPatch(p path = "active" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["active"] = nil + } else if !exists { + delete(patch, "active") } path = "disabled" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["disabled"] = nil + } else if !exists { + delete(patch, "disabled") } path = "overview_ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["overview_ui"] = nil } else if exists && patch["overview_ui"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "overview_ui") } path = "tags" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["tags"] = nil + } else if !exists { + delete(patch, "tags") } path = "object_provider" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["object_provider"] = nil } else if exists && patch["object_provider"] != nil { - ResourceIbmOnboardingCatalogDeploymentCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "object_provider") } path = "metadata" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["metadata"] = nil } else if exists && patch["metadata"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataAsPatch(patch["metadata"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataAsPatch(patch["metadata"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "metadata") } return patch } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.rc_compatible" + path = rootPath + ".rc_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_compatible"] = nil + } else if !exists { + delete(patch, "rc_compatible") } - path = "metadata.0.ui" + path = rootPath + ".ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ui"] = nil } else if exists && patch["ui"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "ui") } - path = "metadata.0.service" + path = rootPath + ".service" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service"] = nil } else if exists && patch["service"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "service") } - path = "metadata.0.deployment" + path = rootPath + ".deployment" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["deployment"] = nil } else if exists && patch["deployment"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentAsPatch(patch["deployment"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentAsPatch(patch["deployment"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "deployment") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.deployment.0.broker" + path = rootPath + ".broker" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["broker"] = nil } else if exists && patch["broker"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentBrokerAsPatch(patch["broker"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentBrokerAsPatch(patch["broker"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "broker") } - path = "metadata.0.deployment.0.location" + path = rootPath + ".location" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["location"] = nil + } else if !exists { + delete(patch, "location") } - path = "metadata.0.deployment.0.location_url" + path = rootPath + ".location_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["location_url"] = nil + } else if !exists { + delete(patch, "location_url") } - path = "metadata.0.deployment.0.target_crn" + path = rootPath + ".target_crn" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["target_crn"] = nil + } else if !exists { + delete(patch, "target_crn") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentBrokerAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataDeploymentBrokerAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.deployment.0.broker.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } - path = "metadata.0.deployment.0.broker.0.guid" + path = rootPath + ".guid" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["guid"] = nil + } else if !exists { + delete(patch, "guid") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.service.0.rc_provisionable" + path = rootPath + ".rc_provisionable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_provisionable"] = nil + } else if !exists { + delete(patch, "rc_provisionable") } - path = "metadata.0.service.0.iam_compatible" + path = rootPath + ".iam_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["iam_compatible"] = nil + } else if !exists { + delete(patch, "iam_compatible") } - path = "metadata.0.service.0.bindable" + path = rootPath + ".bindable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bindable"] = nil + } else if !exists { + delete(patch, "bindable") } - path = "metadata.0.service.0.plan_updateable" + path = rootPath + ".plan_updateable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["plan_updateable"] = nil + } else if !exists { + delete(patch, "plan_updateable") } - path = "metadata.0.service.0.service_key_supported" + path = rootPath + ".service_key_supported" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service_key_supported"] = nil + } else if !exists { + delete(patch, "service_key_supported") + } + path = rootPath + ".parameters" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["parameters"] = nil + } else if exists && patch["parameters"] != nil { + parametersList := patch["parameters"].([]map[string]interface{}) + for i, parametersItem := range parametersList { + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersAsPatch(parametersItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "parameters") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings" + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".name" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["name"] = nil + } else if !exists { + delete(patch, "name") + } + path = rootPath + ".type" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["type"] = nil + } else if !exists { + delete(patch, "type") + } + path = rootPath + ".options" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["options"] = nil + } else if exists && patch["options"] != nil { + optionsList := patch["options"].([]map[string]interface{}) + for i, optionsItem := range optionsList { + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsAsPatch(optionsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "options") + } + path = rootPath + ".value" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["value"] = nil + } else if !exists { + delete(patch, "value") + } + path = rootPath + ".layout" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["layout"] = nil + } else if !exists { + delete(patch, "layout") + } + path = rootPath + ".associations" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["associations"] = nil + } else if !exists { + delete(patch, "associations") + } + path = rootPath + ".validation_url" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["validation_url"] = nil + } else if !exists { + delete(patch, "validation_url") + } + path = rootPath + ".options_url" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["options_url"] = nil + } else if !exists { + delete(patch, "options_url") + } + path = rootPath + ".invalidmessage" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["invalidmessage"] = nil + } else if !exists { + delete(patch, "invalidmessage") + } + path = rootPath + ".description" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["description"] = nil + } else if !exists { + delete(patch, "description") + } + path = rootPath + ".required" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["required"] = nil + } else if !exists { + delete(patch, "required") + } + path = rootPath + ".pattern" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["pattern"] = nil + } else if !exists { + delete(patch, "pattern") + } + path = rootPath + ".placeholder" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["placeholder"] = nil + } else if !exists { + delete(patch, "placeholder") + } + path = rootPath + ".readonly" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["readonly"] = nil + } else if !exists { + delete(patch, "readonly") + } + path = rootPath + ".hidden" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") + } + path = rootPath + ".i18n" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["i18n"] = nil + } else if !exists { + delete(patch, "i18n") + } +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".value" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["value"] = nil + } else if !exists { + delete(patch, "value") + } + path = rootPath + ".i18n" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["i18n"] = nil + } else if exists && patch["i18n"] != nil { + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nAsPatch(patch["i18n"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "i18n") + } +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".en" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["en"] = nil + } else if exists && patch["en"] != nil { + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") + } + path = rootPath + ".de" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["de"] = nil + } else if !exists { + delete(patch, "de") + } + path = rootPath + ".es" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["es"] = nil + } else if !exists { + delete(patch, "es") + } + path = rootPath + ".fr" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["fr"] = nil + } else if !exists { + delete(patch, "fr") + } + path = rootPath + ".it" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["it"] = nil + } else if !exists { + delete(patch, "it") + } + path = rootPath + ".ja" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["ja"] = nil + } else if !exists { + delete(patch, "ja") + } + path = rootPath + ".ko" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["ko"] = nil + } else if !exists { + delete(patch, "ko") + } + path = rootPath + ".pt_br" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["pt_br"] = nil + } else if !exists { + delete(patch, "pt_br") + } + path = rootPath + ".zh_tw" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["zh_tw"] = nil + } else if !exists { + delete(patch, "zh_tw") + } + path = rootPath + ".zh_cn" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["zh_cn"] = nil + } else if !exists { + delete(patch, "zh_cn") + } +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".description" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["description"] = nil + } else if !exists { + delete(patch, "description") + } +} + +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".strings" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["strings"] = nil } else if exists && patch["strings"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "strings") } - path = "metadata.0.ui.0.urls" + path = rootPath + ".urls" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["urls"] = nil } else if exists && patch["urls"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "urls") } - path = "metadata.0.ui.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } - path = "metadata.0.ui.0.side_by_side_index" + path = rootPath + ".side_by_side_index" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["side_by_side_index"] = nil + } else if !exists { + delete(patch, "side_by_side_index") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.urls.0.doc_url" + path = rootPath + ".doc_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["doc_url"] = nil + } else if !exists { + delete(patch, "doc_url") } - path = "metadata.0.ui.0.urls.0.apidocs_url" + path = rootPath + ".apidocs_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["apidocs_url"] = nil + } else if !exists { + delete(patch, "apidocs_url") } - path = "metadata.0.ui.0.urls.0.terms_url" + path = rootPath + ".terms_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["terms_url"] = nil + } else if !exists { + delete(patch, "terms_url") } - path = "metadata.0.ui.0.urls.0.instructions_url" + path = rootPath + ".instructions_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["instructions_url"] = nil + } else if !exists { + delete(patch, "instructions_url") } - path = "metadata.0.ui.0.urls.0.catalog_details_url" + path = rootPath + ".catalog_details_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["catalog_details_url"] = nil + } else if !exists { + delete(patch, "catalog_details_url") } - path = "metadata.0.ui.0.urls.0.custom_create_page_url" + path = rootPath + ".custom_create_page_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["custom_create_page_url"] = nil + } else if !exists { + delete(patch, "custom_create_page_url") } - path = "metadata.0.ui.0.urls.0.dashboard" + path = rootPath + ".dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["dashboard"] = nil + } else if !exists { + delete(patch, "dashboard") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets" + path = rootPath + ".bullets" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bullets"] = nil } else if exists && patch["bullets"] != nil { - ResourceIbmOnboardingCatalogDeploymentCatalogHighlightItemAsPatch(patch["bullets"].([]map[string]interface{})[0], d) + bulletsList := patch["bullets"].([]map[string]interface{}) + for i, bulletsItem := range bulletsList { + ResourceIbmOnboardingCatalogDeploymentCatalogHighlightItemAsPatch(bulletsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "bullets") } - path = "metadata.0.ui.0.strings.0.en.0.media" + path = rootPath + ".media" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["media"] = nil } else if exists && patch["media"] != nil { - ResourceIbmOnboardingCatalogDeploymentCatalogProductMediaItemAsPatch(patch["media"].([]map[string]interface{})[0], d) + mediaList := patch["media"].([]map[string]interface{}) + for i, mediaItem := range mediaList { + ResourceIbmOnboardingCatalogDeploymentCatalogProductMediaItemAsPatch(mediaItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "media") } - path = "metadata.0.ui.0.strings.0.en.0.embeddable_dashboard" + path = rootPath + ".embeddable_dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["embeddable_dashboard"] = nil + } else if !exists { + delete(patch, "embeddable_dashboard") } } -func ResourceIbmOnboardingCatalogDeploymentCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.media.0.caption_i18n" + path = rootPath + ".caption_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["caption_i18n"] = nil + } else if !exists { + delete(patch, "caption_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.media.0.thumbnail" + path = rootPath + ".thumbnail" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["thumbnail"] = nil + } else if !exists { + delete(patch, "thumbnail") } } -func ResourceIbmOnboardingCatalogDeploymentCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description_i18n" + path = rootPath + ".description_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description_i18n"] = nil + } else if !exists { + delete(patch, "description_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title" + path = rootPath + ".title" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title"] = nil + } else if !exists { + delete(patch, "title") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title_i18n" + path = rootPath + ".title_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title_i18n"] = nil + } else if !exists { + delete(patch, "title_i18n") } } -func ResourceIbmOnboardingCatalogDeploymentCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "object_provider.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } - path = "object_provider.0.email" + path = rootPath + ".email" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["email"] = nil + } else if !exists { + delete(patch, "email") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogDeploymentGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil + } else if !exists { + delete(patch, "display_name") } - path = "overview_ui.0.en.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "overview_ui.0.en.0.long_description" + path = rootPath + ".long_description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["long_description"] = nil + } else if !exists { + delete(patch, "long_description") } } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment_test.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment_test.go index 4c533f287c8..164ef3f7d38 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment_test.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_deployment_test.go @@ -115,8 +115,6 @@ func TestAccIbmOnboardingCatalogDeploymentAllArgs(t *testing.T) { resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "active", active), resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "disabled", disabled), resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "kind", kind), - resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "overview_ui.en.display_name", overviewUiEn), - resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "metadata.rc_compatible", rcCompatible), ), }, resource.TestStep{ @@ -130,16 +128,14 @@ func TestAccIbmOnboardingCatalogDeploymentAllArgs(t *testing.T) { resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "active", activeUpdate), resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "disabled", disabledUpdate), resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "kind", kindUpdate), - resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "overview_ui.en.display_name", overviewUiEnUpdate), - resource.TestCheckResourceAttr("ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", "metadata.rc_compatible", rcCompatibleUpdate), ), }, resource.TestStep{ ResourceName: "ibm_onboarding_catalog_deployment.onboarding_catalog_deployment_instance", ImportState: true, - ImportStateVerify: true, + ImportStateVerify: false, ImportStateVerifyIgnore: []string{ - "env", "product_id", "catalog_product_id", "catalog_plan_id", + "env", "product_id", "catalog_product_id", "catalog_plan_id", "geo_tags", }, }, }, @@ -214,12 +210,12 @@ func testAccCheckIbmOnboardingCatalogDeploymentConfig(productID string, catalogP target_crn = "crn:v1:staging:public::ams03:::environment:staging-ams03" } ui { - strings { - en { - bullets { + strings { + en { + bullets { title = "%s" description = "some1" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" @@ -248,15 +244,15 @@ func testAccCheckIbmOnboardingCatalogDeploymentUpdateConfig(productID string, ca overview_ui { en { display_name = "%s" - description = "description" + description = "description" long_description = "long_description" - } + } } - tags = ["sample", "moreSample"] + tags = ["sample", "moresample"] object_provider { name = "name" email = "email@email.com" - } + } metadata { rc_compatible = "%s" service { @@ -267,32 +263,32 @@ func testAccCheckIbmOnboardingCatalogDeploymentUpdateConfig(productID string, ca broker { name = "%s" guid = "guid" - } + } location = "ams03" location_url = "https://globalcatalog.test.cloud.ibm.com/api/v1/ams03" target_crn = "crn:v1:staging:public::ams03:::environment:staging-ams03" } ui { strings { - en { + en { bullets { title = "%s" description = "some1" - } + } bullets { title = "newBullet" description = "some1" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" caption = "%s" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" caption = "newMedia" - } + } } } } @@ -473,12 +469,53 @@ func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataTo globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogDeploymentMetadataServiceModel := make(map[string]interface{}) + globalCatalogDeploymentMetadataServiceModel["rc_provisionable"] = true + globalCatalogDeploymentMetadataServiceModel["iam_compatible"] = true + globalCatalogDeploymentMetadataServiceModel["bindable"] = true + globalCatalogDeploymentMetadataServiceModel["plan_updateable"] = true + globalCatalogDeploymentMetadataServiceModel["service_key_supported"] = true + globalCatalogDeploymentMetadataServiceModel["parameters"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersModel} globalCatalogMetadataDeploymentBrokerModel := make(map[string]interface{}) globalCatalogMetadataDeploymentBrokerModel["name"] = "testString" @@ -493,7 +530,7 @@ func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataTo model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []map[string]interface{}{globalCatalogMetadataUiModel} - model["service"] = []map[string]interface{}{globalCatalogMetadataServiceModel} + model["service"] = []map[string]interface{}{globalCatalogDeploymentMetadataServiceModel} model["deployment"] = []map[string]interface{}{globalCatalogMetadataDeploymentModel} assert.Equal(t, result, model) @@ -535,12 +572,53 @@ func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataTo globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogDeploymentMetadataServiceModel := new(partnercentersellv1.GlobalCatalogDeploymentMetadataService) + globalCatalogDeploymentMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} globalCatalogMetadataDeploymentBrokerModel := new(partnercentersellv1.GlobalCatalogMetadataDeploymentBroker) globalCatalogMetadataDeploymentBrokerModel.Name = core.StringPtr("testString") @@ -555,7 +633,7 @@ func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataTo model := new(partnercentersellv1.GlobalCatalogDeploymentMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogDeploymentMetadataServiceModel model.Deployment = globalCatalogMetadataDeploymentModel result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataToMap(model) @@ -817,26 +895,310 @@ func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataUIUrlsToMap( checkResult(result) } -func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceToMap(t *testing.T) { +func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + model := make(map[string]interface{}) model["rc_provisionable"] = true model["iam_compatible"] = true model["bindable"] = true model["plan_updateable"] = true model["service_key_supported"] = true + model["parameters"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersModel} assert.Equal(t, result, model) } - model := new(partnercentersellv1.GlobalCatalogMetadataService) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogDeploymentMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) model.PlanUpdateable = core.BoolPtr(true) model.ServiceKeySupported = core.BoolPtr(true) + model.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} - result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceToMap(model) + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogDeploymentMetadataServiceToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["name"] = "testString" + model["type"] = "text" + model["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + model["value"] = []string{"testString"} + model["layout"] = "testString" + model["associations"] = map[string]interface{}{"anyKey": "anyValue"} + model["validation_url"] = "testString" + model["options_url"] = "testString" + model["invalidmessage"] = "testString" + model["description"] = "testString" + model["required"] = true + model["pattern"] = "testString" + model["placeholder"] = "testString" + model["readonly"] = true + model["hidden"] = true + model["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + model.Displayname = core.StringPtr("testString") + model.Name = core.StringPtr("testString") + model.Type = core.StringPtr("text") + model.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + model.Value = []string{"testString"} + model.Layout = core.StringPtr("testString") + model.Associations = map[string]interface{}{"anyKey": "anyValue"} + model.ValidationURL = core.StringPtr("testString") + model.OptionsURL = core.StringPtr("testString") + model.Invalidmessage = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + model.Required = core.BoolPtr(true) + model.Pattern = core.StringPtr("testString") + model.Placeholder = core.StringPtr("testString") + model.Readonly = core.BoolPtr(true) + model.Hidden = core.BoolPtr(true) + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["value"] = "testString" + model["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + model.Displayname = core.StringPtr("testString") + model.Value = core.StringPtr("testString") + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersOptionsToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + model := make(map[string]interface{}) + model["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + model.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["description"] = "testString" + + assert.Equal(t, result, model) + } + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + model.Displayname = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model) assert.Nil(t, err) checkResult(result) } @@ -991,12 +1353,53 @@ func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetad globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogDeploymentMetadataServiceModel := new(partnercentersellv1.GlobalCatalogDeploymentMetadataService) + globalCatalogDeploymentMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogDeploymentMetadataServiceModel.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} globalCatalogMetadataDeploymentBrokerModel := new(partnercentersellv1.GlobalCatalogMetadataDeploymentBroker) globalCatalogMetadataDeploymentBrokerModel.Name = core.StringPtr("testString") @@ -1011,7 +1414,7 @@ func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetad model := new(partnercentersellv1.GlobalCatalogDeploymentMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogDeploymentMetadataServiceModel model.Deployment = globalCatalogMetadataDeploymentModel assert.Equal(t, result, model) @@ -1053,12 +1456,53 @@ func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetad globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []interface{}{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogDeploymentMetadataServiceModel := make(map[string]interface{}) + globalCatalogDeploymentMetadataServiceModel["rc_provisionable"] = true + globalCatalogDeploymentMetadataServiceModel["iam_compatible"] = true + globalCatalogDeploymentMetadataServiceModel["bindable"] = true + globalCatalogDeploymentMetadataServiceModel["plan_updateable"] = true + globalCatalogDeploymentMetadataServiceModel["service_key_supported"] = true + globalCatalogDeploymentMetadataServiceModel["parameters"] = []interface{}{globalCatalogMetadataServiceCustomParametersModel} globalCatalogMetadataDeploymentBrokerModel := make(map[string]interface{}) globalCatalogMetadataDeploymentBrokerModel["name"] = "testString" @@ -1073,7 +1517,7 @@ func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetad model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []interface{}{globalCatalogMetadataUiModel} - model["service"] = []interface{}{globalCatalogMetadataServiceModel} + model["service"] = []interface{}{globalCatalogDeploymentMetadataServiceModel} model["deployment"] = []interface{}{globalCatalogMetadataDeploymentModel} result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadata(model) @@ -1335,26 +1779,310 @@ func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataUIUrls( checkResult(result) } -func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataService(t *testing.T) { - checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataService) { - model := new(partnercentersellv1.GlobalCatalogMetadataService) +func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadataService(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogDeploymentMetadataService) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogDeploymentMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) model.PlanUpdateable = core.BoolPtr(true) model.ServiceKeySupported = core.BoolPtr(true) + model.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} assert.Equal(t, result, model) } + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []interface{}{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + model := make(map[string]interface{}) model["rc_provisionable"] = true model["iam_compatible"] = true model["bindable"] = true model["plan_updateable"] = true model["service_key_supported"] = true + model["parameters"] = []interface{}{globalCatalogMetadataServiceCustomParametersModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogDeploymentMetadataService(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParameters(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + model.Displayname = core.StringPtr("testString") + model.Name = core.StringPtr("testString") + model.Type = core.StringPtr("text") + model.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + model.Value = []string{"testString"} + model.Layout = core.StringPtr("testString") + model.Associations = map[string]interface{}{"anyKey": "anyValue"} + model.ValidationURL = core.StringPtr("testString") + model.OptionsURL = core.StringPtr("testString") + model.Invalidmessage = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + model.Required = core.BoolPtr(true) + model.Pattern = core.StringPtr("testString") + model.Placeholder = core.StringPtr("testString") + model.Readonly = core.BoolPtr(true) + model.Hidden = core.BoolPtr(true) + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["name"] = "testString" + model["type"] = "text" + model["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + model["value"] = []interface{}{"testString"} + model["layout"] = "testString" + model["associations"] = map[string]interface{}{"anyKey": "anyValue"} + model["validation_url"] = "testString" + model["options_url"] = "testString" + model["invalidmessage"] = "testString" + model["description"] = "testString" + model["required"] = true + model["pattern"] = "testString" + model["placeholder"] = "testString" + model["readonly"] = true + model["hidden"] = true + model["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParameters(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersOptions(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + model.Displayname = core.StringPtr("testString") + model.Value = core.StringPtr("testString") + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["value"] = "testString" + model["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersOptions(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18n(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + model.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + model := make(map[string]interface{}) + model["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18n(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) { + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + model.Displayname = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + + assert.Equal(t, result, model) + } + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["description"] = "testString" - result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataService(model) + result, err := partnercentersell.ResourceIbmOnboardingCatalogDeploymentMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan.go index 8b291a74052..2de16d95ab9 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan.go @@ -386,6 +386,11 @@ func ResourceIbmOnboardingCatalogPlan() *schema.Resource { }, }, }, + "geo_tags": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, "url": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -597,6 +602,12 @@ func resourceIbmOnboardingCatalogPlanRead(context context.Context, d *schema.Res return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_plan", "read", "set-metadata").GetDiag() } } + if !core.IsNil(globalCatalogPlan.GeoTags) { + if err = d.Set("geo_tags", globalCatalogPlan.GeoTags); err != nil { + err = fmt.Errorf("Error setting geo_tags: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_plan", "read", "set-geo_tags").GetDiag() + } + } if !core.IsNil(globalCatalogPlan.URL) { if err = d.Set("url", globalCatalogPlan.URL); err != nil { err = fmt.Errorf("Error setting url: %s", err) @@ -805,7 +816,7 @@ func ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadata(modelMap map model.Ui = UiModel } if modelMap["service"] != nil && len(modelMap["service"].([]interface{})) > 0 && modelMap["service"].([]interface{})[0] != nil { - ServiceModel, err := ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) + ServiceModel, err := ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) if err != nil { return model, err } @@ -967,8 +978,8 @@ func ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataUIUrls(modelMap m return model, nil } -func ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataService, error) { - model := &partnercentersellv1.GlobalCatalogMetadataService{} +func ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogPlanMetadataService, error) { + model := &partnercentersellv1.GlobalCatalogPlanMetadataService{} if modelMap["rc_provisionable"] != nil { model.RcProvisionable = core.BoolPtr(modelMap["rc_provisionable"].(bool)) } @@ -1059,7 +1070,7 @@ func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataToMap(model *partn modelMap["ui"] = []map[string]interface{}{uiMap} } if model.Service != nil { - serviceMap, err := ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceToMap(model.Service) + serviceMap, err := ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceToMap(model.Service) if err != nil { return modelMap, err } @@ -1218,7 +1229,7 @@ func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsToMap(model *par return modelMap, nil } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogMetadataService) (map[string]interface{}, error) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogPlanMetadataService) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.RcProvisionable != nil { modelMap["rc_provisionable"] = *model.RcProvisionable @@ -1267,282 +1278,382 @@ func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanPatchAsPatch(patchVals *pa path = "active" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["active"] = nil + } else if !exists { + delete(patch, "active") } path = "disabled" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["disabled"] = nil + } else if !exists { + delete(patch, "disabled") } path = "overview_ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["overview_ui"] = nil } else if exists && patch["overview_ui"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "overview_ui") } path = "tags" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["tags"] = nil + } else if !exists { + delete(patch, "tags") } path = "object_provider" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["object_provider"] = nil } else if exists && patch["object_provider"] != nil { - ResourceIbmOnboardingCatalogPlanCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "object_provider") } path = "metadata" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["metadata"] = nil } else if exists && patch["metadata"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataAsPatch(patch["metadata"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataAsPatch(patch["metadata"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "metadata") } return patch } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.rc_compatible" + path = rootPath + ".rc_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_compatible"] = nil + } else if !exists { + delete(patch, "rc_compatible") } - path = "metadata.0.ui" + path = rootPath + ".ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ui"] = nil } else if exists && patch["ui"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "ui") } - path = "metadata.0.service" + path = rootPath + ".service" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service"] = nil } else if exists && patch["service"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "service") } - path = "metadata.0.pricing" + path = rootPath + ".pricing" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["pricing"] = nil } else if exists && patch["pricing"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataPricingAsPatch(patch["pricing"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataPricingAsPatch(patch["pricing"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "pricing") } - path = "metadata.0.plan" + path = rootPath + ".plan" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["plan"] = nil } else if exists && patch["plan"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataPlanAsPatch(patch["plan"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataPlanAsPatch(patch["plan"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "plan") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataPlanAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataPlanAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.plan.0.allow_internal_users" + path = rootPath + ".allow_internal_users" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["allow_internal_users"] = nil + } else if !exists { + delete(patch, "allow_internal_users") } - path = "metadata.0.plan.0.bindable" + path = rootPath + ".bindable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bindable"] = nil + } else if !exists { + delete(patch, "bindable") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataPricingAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataPricingAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.pricing.0.type" + path = rootPath + ".type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["type"] = nil + } else if !exists { + delete(patch, "type") } - path = "metadata.0.pricing.0.origin" + path = rootPath + ".origin" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["origin"] = nil + } else if !exists { + delete(patch, "origin") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.service.0.rc_provisionable" + path = rootPath + ".rc_provisionable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_provisionable"] = nil + } else if !exists { + delete(patch, "rc_provisionable") } - path = "metadata.0.service.0.iam_compatible" + path = rootPath + ".iam_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["iam_compatible"] = nil + } else if !exists { + delete(patch, "iam_compatible") } - path = "metadata.0.service.0.bindable" + path = rootPath + ".bindable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bindable"] = nil + } else if !exists { + delete(patch, "bindable") } - path = "metadata.0.service.0.plan_updateable" + path = rootPath + ".plan_updateable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["plan_updateable"] = nil + } else if !exists { + delete(patch, "plan_updateable") } - path = "metadata.0.service.0.service_key_supported" + path = rootPath + ".service_key_supported" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service_key_supported"] = nil + } else if !exists { + delete(patch, "service_key_supported") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings" + path = rootPath + ".strings" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["strings"] = nil } else if exists && patch["strings"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "strings") } - path = "metadata.0.ui.0.urls" + path = rootPath + ".urls" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["urls"] = nil } else if exists && patch["urls"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "urls") } - path = "metadata.0.ui.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } - path = "metadata.0.ui.0.side_by_side_index" + path = rootPath + ".side_by_side_index" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["side_by_side_index"] = nil + } else if !exists { + delete(patch, "side_by_side_index") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.urls.0.doc_url" + path = rootPath + ".doc_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["doc_url"] = nil + } else if !exists { + delete(patch, "doc_url") } - path = "metadata.0.ui.0.urls.0.apidocs_url" + path = rootPath + ".apidocs_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["apidocs_url"] = nil + } else if !exists { + delete(patch, "apidocs_url") } - path = "metadata.0.ui.0.urls.0.terms_url" + path = rootPath + ".terms_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["terms_url"] = nil + } else if !exists { + delete(patch, "terms_url") } - path = "metadata.0.ui.0.urls.0.instructions_url" + path = rootPath + ".instructions_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["instructions_url"] = nil + } else if !exists { + delete(patch, "instructions_url") } - path = "metadata.0.ui.0.urls.0.catalog_details_url" + path = rootPath + ".catalog_details_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["catalog_details_url"] = nil + } else if !exists { + delete(patch, "catalog_details_url") } - path = "metadata.0.ui.0.urls.0.custom_create_page_url" + path = rootPath + ".custom_create_page_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["custom_create_page_url"] = nil + } else if !exists { + delete(patch, "custom_create_page_url") } - path = "metadata.0.ui.0.urls.0.dashboard" + path = rootPath + ".dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["dashboard"] = nil + } else if !exists { + delete(patch, "dashboard") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets" + path = rootPath + ".bullets" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bullets"] = nil } else if exists && patch["bullets"] != nil { - ResourceIbmOnboardingCatalogPlanCatalogHighlightItemAsPatch(patch["bullets"].([]map[string]interface{})[0], d) + bulletsList := patch["bullets"].([]map[string]interface{}) + for i, bulletsItem := range bulletsList { + ResourceIbmOnboardingCatalogPlanCatalogHighlightItemAsPatch(bulletsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "bullets") } - path = "metadata.0.ui.0.strings.0.en.0.media" + path = rootPath + ".media" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["media"] = nil } else if exists && patch["media"] != nil { - ResourceIbmOnboardingCatalogPlanCatalogProductMediaItemAsPatch(patch["media"].([]map[string]interface{})[0], d) + mediaList := patch["media"].([]map[string]interface{}) + for i, mediaItem := range mediaList { + ResourceIbmOnboardingCatalogPlanCatalogProductMediaItemAsPatch(mediaItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "media") } - path = "metadata.0.ui.0.strings.0.en.0.embeddable_dashboard" + path = rootPath + ".embeddable_dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["embeddable_dashboard"] = nil + } else if !exists { + delete(patch, "embeddable_dashboard") } } -func ResourceIbmOnboardingCatalogPlanCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.media.0.caption_i18n" + path = rootPath + ".caption_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["caption_i18n"] = nil + } else if !exists { + delete(patch, "caption_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.media.0.thumbnail" + path = rootPath + ".thumbnail" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["thumbnail"] = nil + } else if !exists { + delete(patch, "thumbnail") } } -func ResourceIbmOnboardingCatalogPlanCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description_i18n" + path = rootPath + ".description_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description_i18n"] = nil + } else if !exists { + delete(patch, "description_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title" + path = rootPath + ".title" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title"] = nil + } else if !exists { + delete(patch, "title") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title_i18n" + path = rootPath + ".title_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title_i18n"] = nil + } else if !exists { + delete(patch, "title_i18n") } } -func ResourceIbmOnboardingCatalogPlanCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "object_provider.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } - path = "object_provider.0.email" + path = rootPath + ".email" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["email"] = nil + } else if !exists { + delete(patch, "email") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogPlanGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil + } else if !exists { + delete(patch, "display_name") } - path = "overview_ui.0.en.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "overview_ui.0.en.0.long_description" + path = rootPath + ".long_description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["long_description"] = nil + } else if !exists { + delete(patch, "long_description") } } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan_test.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan_test.go index 5ddd617c115..1400f72fc27 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan_test.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_plan_test.go @@ -83,7 +83,7 @@ func TestAccIbmOnboardingCatalogPlanAllArgs(t *testing.T) { kindUpdate := "plan" overviewUiEn := "display_name" overviewUiEnUpdate := "display_name_2" - rcCompatible := "true" + rcCompatible := "false" rcCompatibleUpdate := "false" allowInternalUsers := "true" allowInternalUsersUpdate := "false" @@ -129,7 +129,7 @@ func TestAccIbmOnboardingCatalogPlanAllArgs(t *testing.T) { ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{ - "env", "product_id", "catalog_product_id", + "env", "product_id", "catalog_product_id", "geo_tags", "object_id", }, }, }, @@ -161,7 +161,7 @@ func testAccCheckIbmOnboardingCatalogPlanConfigBasic(productID string, catalogPr allow_internal_users = true bindable = false } - } + } } `, productID, catalogProductID, name, active, disabled, kind, objectId) } @@ -201,12 +201,12 @@ func testAccCheckIbmOnboardingCatalogPlanConfig(productID string, catalogProduct bindable = false } ui { - strings { - en { - bullets { + strings { + en { + bullets { title = "%s" description = "some1" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" @@ -277,7 +277,7 @@ func testAccCheckIbmOnboardingCatalogPlanUpdateConfig(productID string, catalogP } } } - } + } } } `, productID, catalogProductID, env, name, active, disabled, kind, objectId, overviewUiEn, rcCompatible, pricingType, allowInternalUsers, bulletTitleName, mediaCaption) @@ -453,12 +453,12 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataToMap(t *testi globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogPlanMetadataServiceModel := make(map[string]interface{}) + globalCatalogPlanMetadataServiceModel["rc_provisionable"] = true + globalCatalogPlanMetadataServiceModel["iam_compatible"] = true + globalCatalogPlanMetadataServiceModel["bindable"] = true + globalCatalogPlanMetadataServiceModel["plan_updateable"] = true + globalCatalogPlanMetadataServiceModel["service_key_supported"] = true globalCatalogMetadataPricingModel := make(map[string]interface{}) globalCatalogMetadataPricingModel["type"] = "free" @@ -471,7 +471,7 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataToMap(t *testi model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []map[string]interface{}{globalCatalogMetadataUiModel} - model["service"] = []map[string]interface{}{globalCatalogMetadataServiceModel} + model["service"] = []map[string]interface{}{globalCatalogPlanMetadataServiceModel} model["pricing"] = []map[string]interface{}{globalCatalogMetadataPricingModel} model["plan"] = []map[string]interface{}{globalCatalogPlanMetadataPlanModel} @@ -514,12 +514,12 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataToMap(t *testi globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel := new(partnercentersellv1.GlobalCatalogPlanMetadataService) + globalCatalogPlanMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) globalCatalogMetadataPricingModel := new(partnercentersellv1.GlobalCatalogMetadataPricing) globalCatalogMetadataPricingModel.Type = core.StringPtr("free") @@ -532,7 +532,7 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataToMap(t *testi model := new(partnercentersellv1.GlobalCatalogPlanMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogPlanMetadataServiceModel model.Pricing = globalCatalogMetadataPricingModel model.Plan = globalCatalogPlanMetadataPlanModel @@ -795,7 +795,7 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataUIUrlsToMap(t *tes checkResult(result) } -func TestResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceToMap(t *testing.T) { +func TestResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["rc_provisionable"] = true @@ -807,14 +807,14 @@ func TestResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceToMap(t *te assert.Equal(t, result, model) } - model := new(partnercentersellv1.GlobalCatalogMetadataService) + model := new(partnercentersellv1.GlobalCatalogPlanMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) model.PlanUpdateable = core.BoolPtr(true) model.ServiceKeySupported = core.BoolPtr(true) - result, err := partnercentersell.ResourceIbmOnboardingCatalogPlanGlobalCatalogMetadataServiceToMap(model) + result, err := partnercentersell.ResourceIbmOnboardingCatalogPlanGlobalCatalogPlanMetadataServiceToMap(model) assert.Nil(t, err) checkResult(result) } @@ -957,12 +957,12 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadata(t *testi globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel := new(partnercentersellv1.GlobalCatalogPlanMetadataService) + globalCatalogPlanMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogPlanMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) globalCatalogMetadataPricingModel := new(partnercentersellv1.GlobalCatalogMetadataPricing) globalCatalogMetadataPricingModel.Type = core.StringPtr("free") @@ -975,7 +975,7 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadata(t *testi model := new(partnercentersellv1.GlobalCatalogPlanMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogPlanMetadataServiceModel model.Pricing = globalCatalogMetadataPricingModel model.Plan = globalCatalogPlanMetadataPlanModel @@ -1018,12 +1018,12 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadata(t *testi globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogPlanMetadataServiceModel := make(map[string]interface{}) + globalCatalogPlanMetadataServiceModel["rc_provisionable"] = true + globalCatalogPlanMetadataServiceModel["iam_compatible"] = true + globalCatalogPlanMetadataServiceModel["bindable"] = true + globalCatalogPlanMetadataServiceModel["plan_updateable"] = true + globalCatalogPlanMetadataServiceModel["service_key_supported"] = true globalCatalogMetadataPricingModel := make(map[string]interface{}) globalCatalogMetadataPricingModel["type"] = "free" @@ -1036,7 +1036,7 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadata(t *testi model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []interface{}{globalCatalogMetadataUiModel} - model["service"] = []interface{}{globalCatalogMetadataServiceModel} + model["service"] = []interface{}{globalCatalogPlanMetadataServiceModel} model["pricing"] = []interface{}{globalCatalogMetadataPricingModel} model["plan"] = []interface{}{globalCatalogPlanMetadataPlanModel} @@ -1299,9 +1299,9 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataUIUrls(t *tes checkResult(result) } -func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataService(t *testing.T) { - checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataService) { - model := new(partnercentersellv1.GlobalCatalogMetadataService) +func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadataService(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogPlanMetadataService) { + model := new(partnercentersellv1.GlobalCatalogPlanMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) @@ -1318,7 +1318,7 @@ func TestResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataService(t *te model["plan_updateable"] = true model["service_key_supported"] = true - result, err := partnercentersell.ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogMetadataService(model) + result, err := partnercentersell.ResourceIbmOnboardingCatalogPlanMapToGlobalCatalogPlanMetadataService(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product.go index 839bcb89de1..54281c54aed 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product.go @@ -348,6 +348,533 @@ func ResourceIbmOnboardingCatalogProduct() *schema.Resource { Optional: true, Description: "Indicates service credentials support and controls the Service Credential tab on Resource Details page.", }, + "unique_api_key": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "Indicates that the deployment uses an unique api key or not.", + }, + "parameters": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The display name for custom service parameters.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The key of the parameter.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The type of custom service parameters.", + }, + "options": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The display name for custom service parameters.", + }, + "value": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The value for custom service parameters.", + }, + "i18n": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The description for the object.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "en": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "de": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "es": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "fr": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "it": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ja": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ko": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "pt_br": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_tw": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_cn": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + "value": &schema.Schema{ + Type: schema.TypeList, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "layout": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Specifies the layout of check box or radio input types. When unspecified, the default layout is horizontal.", + }, + "associations": &schema.Schema{ + Type: schema.TypeMap, + Optional: true, + Description: "A JSON structure to describe the interactions with pricing plans and/or other custom parameters.", + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "validation_url": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The validation URL for custom service parameters.", + }, + "options_url": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The options URL for custom service parameters.", + }, + "invalidmessage": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The message that appears when the content of the text box is invalid.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The description of the parameter that is displayed to help users with the value of the parameter.", + }, + "required": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "A boolean value that indicates whether the parameter must be entered in the IBM Cloud user interface.", + }, + "pattern": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "A regular expression that the value is checked against.", + }, + "placeholder": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The placeholder text for custom parameters.", + }, + "readonly": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "A boolean value that indicates whether the value of the parameter is displayed only and cannot be changed by users. The default value is false.", + }, + "hidden": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "Indicates whether the custom parameters is hidden required or not.", + }, + "i18n": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The description for the object.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "en": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "de": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "es": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "fr": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "it": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ja": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "ko": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "pt_br": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_tw": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + "zh_cn": &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Description: "The translations for custom service parameter display name and description.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "displayname": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter display name.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The translations for custom service parameter description.", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, }, }, }, @@ -598,6 +1125,11 @@ func ResourceIbmOnboardingCatalogProduct() *schema.Resource { }, }, }, + "geo_tags": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, "url": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -815,6 +1347,12 @@ func resourceIbmOnboardingCatalogProductRead(context context.Context, d *schema. return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_product", "read", "set-metadata").GetDiag() } } + if !core.IsNil(globalCatalogProduct.GeoTags) { + if err = d.Set("geo_tags", globalCatalogProduct.GeoTags); err != nil { + err = fmt.Errorf("Error setting geo_tags: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_onboarding_catalog_product", "read", "set-geo_tags").GetDiag() + } + } if !core.IsNil(globalCatalogProduct.URL) { if err = d.Set("url", globalCatalogProduct.URL); err != nil { err = fmt.Errorf("Error setting url: %s", err) @@ -1026,7 +1564,7 @@ func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(modelM model.Ui = UiModel } if modelMap["service"] != nil && len(modelMap["service"].([]interface{})) > 0 && modelMap["service"].([]interface{})[0] != nil { - ServiceModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) + ServiceModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadataService(modelMap["service"].([]interface{})[0].(map[string]interface{})) if err != nil { return model, err } @@ -1160,43 +1698,233 @@ func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataUIUrls(modelMa if modelMap["doc_url"] != nil && modelMap["doc_url"].(string) != "" { model.DocURL = core.StringPtr(modelMap["doc_url"].(string)) } - if modelMap["apidocs_url"] != nil && modelMap["apidocs_url"].(string) != "" { - model.ApidocsURL = core.StringPtr(modelMap["apidocs_url"].(string)) + if modelMap["apidocs_url"] != nil && modelMap["apidocs_url"].(string) != "" { + model.ApidocsURL = core.StringPtr(modelMap["apidocs_url"].(string)) + } + if modelMap["terms_url"] != nil && modelMap["terms_url"].(string) != "" { + model.TermsURL = core.StringPtr(modelMap["terms_url"].(string)) + } + if modelMap["instructions_url"] != nil && modelMap["instructions_url"].(string) != "" { + model.InstructionsURL = core.StringPtr(modelMap["instructions_url"].(string)) + } + if modelMap["catalog_details_url"] != nil && modelMap["catalog_details_url"].(string) != "" { + model.CatalogDetailsURL = core.StringPtr(modelMap["catalog_details_url"].(string)) + } + if modelMap["custom_create_page_url"] != nil && modelMap["custom_create_page_url"].(string) != "" { + model.CustomCreatePageURL = core.StringPtr(modelMap["custom_create_page_url"].(string)) + } + if modelMap["dashboard"] != nil && modelMap["dashboard"].(string) != "" { + model.Dashboard = core.StringPtr(modelMap["dashboard"].(string)) + } + return model, nil +} + +func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogProductMetadataService, error) { + model := &partnercentersellv1.GlobalCatalogProductMetadataService{} + if modelMap["rc_provisionable"] != nil { + model.RcProvisionable = core.BoolPtr(modelMap["rc_provisionable"].(bool)) + } + if modelMap["iam_compatible"] != nil { + model.IamCompatible = core.BoolPtr(modelMap["iam_compatible"].(bool)) + } + if modelMap["bindable"] != nil { + model.Bindable = core.BoolPtr(modelMap["bindable"].(bool)) + } + if modelMap["plan_updateable"] != nil { + model.PlanUpdateable = core.BoolPtr(modelMap["plan_updateable"].(bool)) + } + if modelMap["service_key_supported"] != nil { + model.ServiceKeySupported = core.BoolPtr(modelMap["service_key_supported"].(bool)) + } + if modelMap["unique_api_key"] != nil { + model.UniqueApiKey = core.BoolPtr(modelMap["unique_api_key"].(bool)) + } + if modelMap["parameters"] != nil { + parameters := []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{} + for _, parametersItem := range modelMap["parameters"].([]interface{}) { + parametersItemModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParameters(parametersItem.(map[string]interface{})) + if err != nil { + return model, err + } + parameters = append(parameters, *parametersItemModel) + } + model.Parameters = parameters + } + return model, nil +} + +func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParameters(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) + } + if modelMap["name"] != nil && modelMap["name"].(string) != "" { + model.Name = core.StringPtr(modelMap["name"].(string)) + } + if modelMap["type"] != nil && modelMap["type"].(string) != "" { + model.Type = core.StringPtr(modelMap["type"].(string)) + } + if modelMap["options"] != nil { + options := []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{} + for _, optionsItem := range modelMap["options"].([]interface{}) { + optionsItemModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersOptions(optionsItem.(map[string]interface{})) + if err != nil { + return model, err + } + options = append(options, *optionsItemModel) + } + model.Options = options + } + if modelMap["value"] != nil { + value := []string{} + for _, valueItem := range modelMap["value"].([]interface{}) { + value = append(value, valueItem.(string)) + } + model.Value = value + } + if modelMap["layout"] != nil && modelMap["layout"].(string) != "" { + model.Layout = core.StringPtr(modelMap["layout"].(string)) + } + if modelMap["associations"] != nil { + model.Associations = modelMap["associations"].(map[string]interface{}) + } + if modelMap["validation_url"] != nil && modelMap["validation_url"].(string) != "" { + model.ValidationURL = core.StringPtr(modelMap["validation_url"].(string)) + } + if modelMap["options_url"] != nil && modelMap["options_url"].(string) != "" { + model.OptionsURL = core.StringPtr(modelMap["options_url"].(string)) + } + if modelMap["invalidmessage"] != nil && modelMap["invalidmessage"].(string) != "" { + model.Invalidmessage = core.StringPtr(modelMap["invalidmessage"].(string)) + } + if modelMap["description"] != nil && modelMap["description"].(string) != "" { + model.Description = core.StringPtr(modelMap["description"].(string)) + } + if modelMap["required"] != nil { + model.Required = core.BoolPtr(modelMap["required"].(bool)) + } + if modelMap["pattern"] != nil && modelMap["pattern"].(string) != "" { + model.Pattern = core.StringPtr(modelMap["pattern"].(string)) + } + if modelMap["placeholder"] != nil && modelMap["placeholder"].(string) != "" { + model.Placeholder = core.StringPtr(modelMap["placeholder"].(string)) + } + if modelMap["readonly"] != nil { + model.Readonly = core.BoolPtr(modelMap["readonly"].(bool)) + } + if modelMap["hidden"] != nil { + model.Hidden = core.BoolPtr(modelMap["hidden"].(bool)) + } + if modelMap["i18n"] != nil && len(modelMap["i18n"].([]interface{})) > 0 { + I18nModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap["i18n"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.I18n = I18nModel + } + return model, nil +} + +func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersOptions(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) + } + if modelMap["value"] != nil && modelMap["value"].(string) != "" { + model.Value = core.StringPtr(modelMap["value"].(string)) + } + if modelMap["i18n"] != nil && len(modelMap["i18n"].([]interface{})) > 0 { + I18nModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap["i18n"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.I18n = I18nModel + } + return model, nil +} + +func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18n(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n{} + if modelMap["en"] != nil && len(modelMap["en"].([]interface{})) > 0 { + EnModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["en"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.En = EnModel + } + if modelMap["de"] != nil && len(modelMap["de"].([]interface{})) > 0 { + DeModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["de"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.De = DeModel + } + if modelMap["es"] != nil && len(modelMap["es"].([]interface{})) > 0 { + EsModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["es"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Es = EsModel + } + if modelMap["fr"] != nil && len(modelMap["fr"].([]interface{})) > 0 { + FrModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["fr"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Fr = FrModel + } + if modelMap["it"] != nil && len(modelMap["it"].([]interface{})) > 0 { + ItModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["it"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.It = ItModel } - if modelMap["terms_url"] != nil && modelMap["terms_url"].(string) != "" { - model.TermsURL = core.StringPtr(modelMap["terms_url"].(string)) + if modelMap["ja"] != nil && len(modelMap["ja"].([]interface{})) > 0 { + JaModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["ja"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Ja = JaModel } - if modelMap["instructions_url"] != nil && modelMap["instructions_url"].(string) != "" { - model.InstructionsURL = core.StringPtr(modelMap["instructions_url"].(string)) + if modelMap["ko"] != nil && len(modelMap["ko"].([]interface{})) > 0 { + KoModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["ko"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.Ko = KoModel } - if modelMap["catalog_details_url"] != nil && modelMap["catalog_details_url"].(string) != "" { - model.CatalogDetailsURL = core.StringPtr(modelMap["catalog_details_url"].(string)) + if modelMap["pt_br"] != nil && len(modelMap["pt_br"].([]interface{})) > 0 { + PtBrModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["pt_br"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.PtBr = PtBrModel } - if modelMap["custom_create_page_url"] != nil && modelMap["custom_create_page_url"].(string) != "" { - model.CustomCreatePageURL = core.StringPtr(modelMap["custom_create_page_url"].(string)) + if modelMap["zh_tw"] != nil && len(modelMap["zh_tw"].([]interface{})) > 0 { + ZhTwModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["zh_tw"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.ZhTw = ZhTwModel } - if modelMap["dashboard"] != nil && modelMap["dashboard"].(string) != "" { - model.Dashboard = core.StringPtr(modelMap["dashboard"].(string)) + if modelMap["zh_cn"] != nil && len(modelMap["zh_cn"].([]interface{})) > 0 { + ZhCnModel, err := ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap["zh_cn"].([]interface{})[0].(map[string]interface{})) + if err != nil { + return model, err + } + model.ZhCn = ZhCnModel } return model, nil } -func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataService(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataService, error) { - model := &partnercentersellv1.GlobalCatalogMetadataService{} - if modelMap["rc_provisionable"] != nil { - model.RcProvisionable = core.BoolPtr(modelMap["rc_provisionable"].(bool)) - } - if modelMap["iam_compatible"] != nil { - model.IamCompatible = core.BoolPtr(modelMap["iam_compatible"].(bool)) - } - if modelMap["bindable"] != nil { - model.Bindable = core.BoolPtr(modelMap["bindable"].(bool)) - } - if modelMap["plan_updateable"] != nil { - model.PlanUpdateable = core.BoolPtr(modelMap["plan_updateable"].(bool)) +func ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(modelMap map[string]interface{}) (*partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields, error) { + model := &partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields{} + if modelMap["displayname"] != nil && modelMap["displayname"].(string) != "" { + model.Displayname = core.StringPtr(modelMap["displayname"].(string)) } - if modelMap["service_key_supported"] != nil { - model.ServiceKeySupported = core.BoolPtr(modelMap["service_key_supported"].(bool)) + if modelMap["description"] != nil && modelMap["description"].(string) != "" { + model.Description = core.StringPtr(modelMap["description"].(string)) } return model, nil } @@ -1474,7 +2202,7 @@ func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(model modelMap["ui"] = []map[string]interface{}{uiMap} } if model.Service != nil { - serviceMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceToMap(model.Service) + serviceMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceToMap(model.Service) if err != nil { return modelMap, err } @@ -1626,7 +2354,7 @@ func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsToMap(model * return modelMap, nil } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogMetadataService) (map[string]interface{}, error) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceToMap(model *partnercentersellv1.GlobalCatalogProductMetadataService) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.RcProvisionable != nil { modelMap["rc_provisionable"] = *model.RcProvisionable @@ -1643,6 +2371,196 @@ func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceToMap(model if model.ServiceKeySupported != nil { modelMap["service_key_supported"] = *model.ServiceKeySupported } + if model.UniqueApiKey != nil { + modelMap["unique_api_key"] = *model.UniqueApiKey + } + if model.Parameters != nil { + parameters := []map[string]interface{}{} + for _, parametersItem := range model.Parameters { + parametersItemMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersToMap(¶metersItem) // #nosec G601 + if err != nil { + return modelMap, err + } + parameters = append(parameters, parametersItemMap) + } + modelMap["parameters"] = parameters + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Type != nil { + modelMap["type"] = *model.Type + } + if model.Options != nil { + options := []map[string]interface{}{} + for _, optionsItem := range model.Options { + optionsItemMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsToMap(&optionsItem) // #nosec G601 + if err != nil { + return modelMap, err + } + options = append(options, optionsItemMap) + } + modelMap["options"] = options + } + if model.Value != nil { + modelMap["value"] = model.Value + } + if model.Layout != nil { + modelMap["layout"] = *model.Layout + } + if model.Associations != nil { + associations := make(map[string]interface{}) + for k, v := range model.Associations { + associations[k] = flex.Stringify(v) + } + modelMap["associations"] = associations + } + if model.ValidationURL != nil { + modelMap["validation_url"] = *model.ValidationURL + } + if model.OptionsURL != nil { + modelMap["options_url"] = *model.OptionsURL + } + if model.Invalidmessage != nil { + modelMap["invalidmessage"] = *model.Invalidmessage + } + if model.Description != nil { + modelMap["description"] = *model.Description + } + if model.Required != nil { + modelMap["required"] = *model.Required + } + if model.Pattern != nil { + modelMap["pattern"] = *model.Pattern + } + if model.Placeholder != nil { + modelMap["placeholder"] = *model.Placeholder + } + if model.Readonly != nil { + modelMap["readonly"] = *model.Readonly + } + if model.Hidden != nil { + modelMap["hidden"] = *model.Hidden + } + if model.I18n != nil { + i18nMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nToMap(model.I18n) + if err != nil { + return modelMap, err + } + modelMap["i18n"] = []map[string]interface{}{i18nMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Value != nil { + modelMap["value"] = *model.Value + } + if model.I18n != nil { + i18nMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nToMap(model.I18n) + if err != nil { + return modelMap, err + } + modelMap["i18n"] = []map[string]interface{}{i18nMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.En != nil { + enMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.En) + if err != nil { + return modelMap, err + } + modelMap["en"] = []map[string]interface{}{enMap} + } + if model.De != nil { + deMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.De) + if err != nil { + return modelMap, err + } + modelMap["de"] = []map[string]interface{}{deMap} + } + if model.Es != nil { + esMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Es) + if err != nil { + return modelMap, err + } + modelMap["es"] = []map[string]interface{}{esMap} + } + if model.Fr != nil { + frMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Fr) + if err != nil { + return modelMap, err + } + modelMap["fr"] = []map[string]interface{}{frMap} + } + if model.It != nil { + itMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.It) + if err != nil { + return modelMap, err + } + modelMap["it"] = []map[string]interface{}{itMap} + } + if model.Ja != nil { + jaMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Ja) + if err != nil { + return modelMap, err + } + modelMap["ja"] = []map[string]interface{}{jaMap} + } + if model.Ko != nil { + koMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.Ko) + if err != nil { + return modelMap, err + } + modelMap["ko"] = []map[string]interface{}{koMap} + } + if model.PtBr != nil { + ptBrMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.PtBr) + if err != nil { + return modelMap, err + } + modelMap["pt_br"] = []map[string]interface{}{ptBrMap} + } + if model.ZhTw != nil { + zhTwMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.ZhTw) + if err != nil { + return modelMap, err + } + modelMap["zh_tw"] = []map[string]interface{}{zhTwMap} + } + if model.ZhCn != nil { + zhCnMap, err := ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model.ZhCn) + if err != nil { + return modelMap, err + } + modelMap["zh_cn"] = []map[string]interface{}{zhCnMap} + } + return modelMap, nil +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Displayname != nil { + modelMap["displayname"] = *model.Displayname + } + if model.Description != nil { + modelMap["description"] = *model.Description + } return modelMap, nil } @@ -1859,463 +2777,868 @@ func ResourceIbmOnboardingCatalogProductGlobalCatalogProductPatchAsPatch(patchVa path = "active" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["active"] = nil + } else if !exists { + delete(patch, "active") } path = "disabled" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["disabled"] = nil + } else if !exists { + delete(patch, "disabled") } path = "overview_ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["overview_ui"] = nil } else if exists && patch["overview_ui"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUIAsPatch(patch["overview_ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "overview_ui") } path = "tags" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["tags"] = nil + } else if !exists { + delete(patch, "tags") } path = "images" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["images"] = nil } else if exists && patch["images"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductImagesAsPatch(patch["images"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductImagesAsPatch(patch["images"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "images") } path = "object_provider" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["object_provider"] = nil } else if exists && patch["object_provider"] != nil { - ResourceIbmOnboardingCatalogProductCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductCatalogProductProviderAsPatch(patch["object_provider"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "object_provider") } path = "metadata" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["metadata"] = nil } else if exists && patch["metadata"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataAsPatch(patch["metadata"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataAsPatch(patch["metadata"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "metadata") } return patch } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.rc_compatible" + path = rootPath + ".rc_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_compatible"] = nil + } else if !exists { + delete(patch, "rc_compatible") } - path = "metadata.0.ui" + path = rootPath + ".ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ui"] = nil } else if exists && patch["ui"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIAsPatch(patch["ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "ui") } - path = "metadata.0.service" + path = rootPath + ".service" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service"] = nil } else if exists && patch["service"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceAsPatch(patch["service"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "service") } - path = "metadata.0.other" + path = rootPath + ".other" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["other"] = nil } else if exists && patch["other"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherAsPatch(patch["other"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherAsPatch(patch["other"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "other") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc" + path = rootPath + ".pc" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["pc"] = nil } else if exists && patch["pc"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCAsPatch(patch["pc"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCAsPatch(patch["pc"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "pc") } - path = "metadata.0.other.0.composite" + path = rootPath + ".composite" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["composite"] = nil } else if exists && patch["composite"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeAsPatch(patch["composite"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeAsPatch(patch["composite"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "composite") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.composite.0.composite_kind" + path = rootPath + ".composite_kind" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["composite_kind"] = nil + } else if !exists { + delete(patch, "composite_kind") } - path = "metadata.0.other.0.composite.0.composite_tag" + path = rootPath + ".composite_tag" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["composite_tag"] = nil + } else if !exists { + delete(patch, "composite_tag") } - path = "metadata.0.other.0.composite.0.children" + path = rootPath + ".children" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["children"] = nil } else if exists && patch["children"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeChildAsPatch(patch["children"].([]map[string]interface{})[0], d) + childrenList := patch["children"].([]map[string]interface{}) + for i, childrenItem := range childrenList { + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeChildAsPatch(childrenItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "children") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeChildAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherCompositeChildAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.composite.0.children.0.kind" + path = rootPath + ".kind" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["kind"] = nil + } else if !exists { + delete(patch, "kind") } - path = "metadata.0.other.0.composite.0.children.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support" + path = rootPath + ".support" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["support"] = nil } else if exists && patch["support"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCSupportAsPatch(patch["support"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCSupportAsPatch(patch["support"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "support") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCSupportAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataOtherPCSupportAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.url" + path = rootPath + ".url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["url"] = nil + } else if !exists { + delete(patch, "url") } - path = "metadata.0.other.0.pc.0.support.0.status_url" + path = rootPath + ".status_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["status_url"] = nil + } else if !exists { + delete(patch, "status_url") } - path = "metadata.0.other.0.pc.0.support.0.locations" + path = rootPath + ".locations" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["locations"] = nil + } else if !exists { + delete(patch, "locations") } - path = "metadata.0.other.0.pc.0.support.0.languages" + path = rootPath + ".languages" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["languages"] = nil + } else if !exists { + delete(patch, "languages") } - path = "metadata.0.other.0.pc.0.support.0.process" + path = rootPath + ".process" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["process"] = nil + } else if !exists { + delete(patch, "process") } - path = "metadata.0.other.0.pc.0.support.0.process_i18n" + path = rootPath + ".process_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["process_i18n"] = nil + } else if !exists { + delete(patch, "process_i18n") } - path = "metadata.0.other.0.pc.0.support.0.support_type" + path = rootPath + ".support_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["support_type"] = nil + } else if !exists { + delete(patch, "support_type") } - path = "metadata.0.other.0.pc.0.support.0.support_escalation" + path = rootPath + ".support_escalation" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["support_escalation"] = nil } else if exists && patch["support_escalation"] != nil { - ResourceIbmOnboardingCatalogProductSupportEscalationAsPatch(patch["support_escalation"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductSupportEscalationAsPatch(patch["support_escalation"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "support_escalation") } - path = "metadata.0.other.0.pc.0.support.0.support_details" + path = rootPath + ".support_details" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["support_details"] = nil } else if exists && patch["support_details"] != nil { - ResourceIbmOnboardingCatalogProductSupportDetailsItemAsPatch(patch["support_details"].([]map[string]interface{})[0], d) + support_detailsList := patch["support_details"].([]map[string]interface{}) + for i, support_detailsItem := range support_detailsList { + ResourceIbmOnboardingCatalogProductSupportDetailsItemAsPatch(support_detailsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "support_details") } } -func ResourceIbmOnboardingCatalogProductSupportDetailsItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductSupportDetailsItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.support_details.0.type" + path = rootPath + ".type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["type"] = nil + } else if !exists { + delete(patch, "type") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.contact" + path = rootPath + ".contact" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["contact"] = nil + } else if !exists { + delete(patch, "contact") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.response_wait_time" + path = rootPath + ".response_wait_time" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["response_wait_time"] = nil } else if exists && patch["response_wait_time"] != nil { - ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch["response_wait_time"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch["response_wait_time"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "response_wait_time") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability" + path = rootPath + ".availability" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["availability"] = nil } else if exists && patch["availability"] != nil { - ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityAsPatch(patch["availability"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityAsPatch(patch["availability"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "availability") } } -func ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.times" + path = rootPath + ".times" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["times"] = nil } else if exists && patch["times"] != nil { - ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityTimeAsPatch(patch["times"].([]map[string]interface{})[0], d) + timesList := patch["times"].([]map[string]interface{}) + for i, timesItem := range timesList { + ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityTimeAsPatch(timesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "times") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.timezone" + path = rootPath + ".timezone" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["timezone"] = nil + } else if !exists { + delete(patch, "timezone") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.always_available" + path = rootPath + ".always_available" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["always_available"] = nil + } else if !exists { + delete(patch, "always_available") } } -func ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityTimeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductSupportDetailsItemAvailabilityTimeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.times.0.day" + path = rootPath + ".day" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["day"] = nil + } else if !exists { + delete(patch, "day") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.times.0.start_time" + path = rootPath + ".start_time" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["start_time"] = nil + } else if !exists { + delete(patch, "start_time") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.availability.0.times.0.end_time" + path = rootPath + ".end_time" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["end_time"] = nil + } else if !exists { + delete(patch, "end_time") } } -func ResourceIbmOnboardingCatalogProductSupportEscalationAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductSupportEscalationAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.support_escalation.0.contact" + path = rootPath + ".contact" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["contact"] = nil + } else if !exists { + delete(patch, "contact") } - path = "metadata.0.other.0.pc.0.support.0.support_escalation.0.escalation_wait_time" + path = rootPath + ".escalation_wait_time" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["escalation_wait_time"] = nil } else if exists && patch["escalation_wait_time"] != nil { - ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch["escalation_wait_time"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch["escalation_wait_time"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "escalation_wait_time") } - path = "metadata.0.other.0.pc.0.support.0.support_escalation.0.response_wait_time" + path = rootPath + ".response_wait_time" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["response_wait_time"] = nil + } else if !exists { + delete(patch, "response_wait_time") } } -func ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductSupportTimeIntervalAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.other.0.pc.0.support.0.support_details.0.response_wait_time.0.value" + path = rootPath + ".value" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value"] = nil + } else if !exists { + delete(patch, "value") } - path = "metadata.0.other.0.pc.0.support.0.support_details.0.response_wait_time.0.type" + path = rootPath + ".type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["type"] = nil + } else if !exists { + delete(patch, "type") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.service.0.rc_provisionable" + path = rootPath + ".rc_provisionable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["rc_provisionable"] = nil + } else if !exists { + delete(patch, "rc_provisionable") } - path = "metadata.0.service.0.iam_compatible" + path = rootPath + ".iam_compatible" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["iam_compatible"] = nil + } else if !exists { + delete(patch, "iam_compatible") } - path = "metadata.0.service.0.bindable" + path = rootPath + ".bindable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bindable"] = nil + } else if !exists { + delete(patch, "bindable") } - path = "metadata.0.service.0.plan_updateable" + path = rootPath + ".plan_updateable" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["plan_updateable"] = nil + } else if !exists { + delete(patch, "plan_updateable") } - path = "metadata.0.service.0.service_key_supported" + path = rootPath + ".service_key_supported" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service_key_supported"] = nil + } else if !exists { + delete(patch, "service_key_supported") + } + path = rootPath + ".unique_api_key" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["unique_api_key"] = nil + } else if !exists { + delete(patch, "unique_api_key") + } + path = rootPath + ".parameters" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["parameters"] = nil + } else if exists && patch["parameters"] != nil { + parametersList := patch["parameters"].([]map[string]interface{}) + for i, parametersItem := range parametersList { + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersAsPatch(parametersItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "parameters") + } +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".name" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["name"] = nil + } else if !exists { + delete(patch, "name") + } + path = rootPath + ".type" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["type"] = nil + } else if !exists { + delete(patch, "type") + } + path = rootPath + ".options" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["options"] = nil + } else if exists && patch["options"] != nil { + optionsList := patch["options"].([]map[string]interface{}) + for i, optionsItem := range optionsList { + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsAsPatch(optionsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "options") + } + path = rootPath + ".value" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["value"] = nil + } else if !exists { + delete(patch, "value") + } + path = rootPath + ".layout" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["layout"] = nil + } else if !exists { + delete(patch, "layout") + } + path = rootPath + ".associations" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["associations"] = nil + } else if !exists { + delete(patch, "associations") + } + path = rootPath + ".validation_url" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["validation_url"] = nil + } else if !exists { + delete(patch, "validation_url") + } + path = rootPath + ".options_url" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["options_url"] = nil + } else if !exists { + delete(patch, "options_url") + } + path = rootPath + ".invalidmessage" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["invalidmessage"] = nil + } else if !exists { + delete(patch, "invalidmessage") + } + path = rootPath + ".description" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["description"] = nil + } else if !exists { + delete(patch, "description") + } + path = rootPath + ".required" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["required"] = nil + } else if !exists { + delete(patch, "required") + } + path = rootPath + ".pattern" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["pattern"] = nil + } else if !exists { + delete(patch, "pattern") + } + path = rootPath + ".placeholder" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["placeholder"] = nil + } else if !exists { + delete(patch, "placeholder") + } + path = rootPath + ".readonly" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["readonly"] = nil + } else if !exists { + delete(patch, "readonly") + } + path = rootPath + ".hidden" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") + } + path = rootPath + ".i18n" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["i18n"] = nil + } else if !exists { + delete(patch, "i18n") + } +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".value" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["value"] = nil + } else if !exists { + delete(patch, "value") + } + path = rootPath + ".i18n" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["i18n"] = nil + } else if exists && patch["i18n"] != nil { + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nAsPatch(patch["i18n"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "i18n") + } +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".en" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["en"] = nil + } else if exists && patch["en"] != nil { + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") + } + path = rootPath + ".de" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["de"] = nil + } else if !exists { + delete(patch, "de") + } + path = rootPath + ".es" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["es"] = nil + } else if !exists { + delete(patch, "es") + } + path = rootPath + ".fr" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["fr"] = nil + } else if !exists { + delete(patch, "fr") + } + path = rootPath + ".it" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["it"] = nil + } else if !exists { + delete(patch, "it") + } + path = rootPath + ".ja" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["ja"] = nil + } else if !exists { + delete(patch, "ja") + } + path = rootPath + ".ko" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["ko"] = nil + } else if !exists { + delete(patch, "ko") + } + path = rootPath + ".pt_br" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["pt_br"] = nil + } else if !exists { + delete(patch, "pt_br") + } + path = rootPath + ".zh_tw" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["zh_tw"] = nil + } else if !exists { + delete(patch, "zh_tw") + } + path = rootPath + ".zh_cn" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["zh_cn"] = nil + } else if !exists { + delete(patch, "zh_cn") + } +} + +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { + var path string + + path = rootPath + ".displayname" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["displayname"] = nil + } else if !exists { + delete(patch, "displayname") + } + path = rootPath + ".description" + if _, exists := d.GetOk(path); d.HasChange(path) && !exists { + patch["description"] = nil + } else if !exists { + delete(patch, "description") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings" + path = rootPath + ".strings" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["strings"] = nil } else if exists && patch["strings"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsAsPatch(patch["strings"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "strings") } - path = "metadata.0.ui.0.urls" + path = rootPath + ".urls" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["urls"] = nil } else if exists && patch["urls"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsAsPatch(patch["urls"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "urls") } - path = "metadata.0.ui.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } - path = "metadata.0.ui.0.side_by_side_index" + path = rootPath + ".side_by_side_index" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["side_by_side_index"] = nil + } else if !exists { + delete(patch, "side_by_side_index") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.urls.0.doc_url" + path = rootPath + ".doc_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["doc_url"] = nil + } else if !exists { + delete(patch, "doc_url") } - path = "metadata.0.ui.0.urls.0.apidocs_url" + path = rootPath + ".apidocs_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["apidocs_url"] = nil + } else if !exists { + delete(patch, "apidocs_url") } - path = "metadata.0.ui.0.urls.0.terms_url" + path = rootPath + ".terms_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["terms_url"] = nil + } else if !exists { + delete(patch, "terms_url") } - path = "metadata.0.ui.0.urls.0.instructions_url" + path = rootPath + ".instructions_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["instructions_url"] = nil + } else if !exists { + delete(patch, "instructions_url") } - path = "metadata.0.ui.0.urls.0.catalog_details_url" + path = rootPath + ".catalog_details_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["catalog_details_url"] = nil + } else if !exists { + delete(patch, "catalog_details_url") } - path = "metadata.0.ui.0.urls.0.custom_create_page_url" + path = rootPath + ".custom_create_page_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["custom_create_page_url"] = nil + } else if !exists { + delete(patch, "custom_create_page_url") } - path = "metadata.0.ui.0.urls.0.dashboard" + path = rootPath + ".dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["dashboard"] = nil + } else if !exists { + delete(patch, "dashboard") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIStringsContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets" + path = rootPath + ".bullets" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["bullets"] = nil } else if exists && patch["bullets"] != nil { - ResourceIbmOnboardingCatalogProductCatalogHighlightItemAsPatch(patch["bullets"].([]map[string]interface{})[0], d) + bulletsList := patch["bullets"].([]map[string]interface{}) + for i, bulletsItem := range bulletsList { + ResourceIbmOnboardingCatalogProductCatalogHighlightItemAsPatch(bulletsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "bullets") } - path = "metadata.0.ui.0.strings.0.en.0.media" + path = rootPath + ".media" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["media"] = nil } else if exists && patch["media"] != nil { - ResourceIbmOnboardingCatalogProductCatalogProductMediaItemAsPatch(patch["media"].([]map[string]interface{})[0], d) + mediaList := patch["media"].([]map[string]interface{}) + for i, mediaItem := range mediaList { + ResourceIbmOnboardingCatalogProductCatalogProductMediaItemAsPatch(mediaItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "media") } - path = "metadata.0.ui.0.strings.0.en.0.embeddable_dashboard" + path = rootPath + ".embeddable_dashboard" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["embeddable_dashboard"] = nil + } else if !exists { + delete(patch, "embeddable_dashboard") } } -func ResourceIbmOnboardingCatalogProductCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductCatalogProductMediaItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.media.0.caption_i18n" + path = rootPath + ".caption_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["caption_i18n"] = nil + } else if !exists { + delete(patch, "caption_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.media.0.thumbnail" + path = rootPath + ".thumbnail" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["thumbnail"] = nil + } else if !exists { + delete(patch, "thumbnail") } } -func ResourceIbmOnboardingCatalogProductCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductCatalogHighlightItemAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.description_i18n" + path = rootPath + ".description_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description_i18n"] = nil + } else if !exists { + delete(patch, "description_i18n") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title" + path = rootPath + ".title" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title"] = nil + } else if !exists { + delete(patch, "title") } - path = "metadata.0.ui.0.strings.0.en.0.bullets.0.title_i18n" + path = rootPath + ".title_i18n" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["title_i18n"] = nil + } else if !exists { + delete(patch, "title_i18n") } } -func ResourceIbmOnboardingCatalogProductCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductCatalogProductProviderAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "object_provider.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } - path = "object_provider.0.email" + path = rootPath + ".email" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["email"] = nil + } else if !exists { + delete(patch, "email") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogProductImagesAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogProductImagesAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "images.0.image" + path = rootPath + ".image" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["image"] = nil + } else if !exists { + delete(patch, "image") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUIAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil } else if exists && patch["en"] != nil { - ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d) + ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUITranslatedContentAsPatch(patch["en"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "en") } } -func ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingCatalogProductGlobalCatalogOverviewUITranslatedContentAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "overview_ui.0.en.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil + } else if !exists { + delete(patch, "display_name") } - path = "overview_ui.0.en.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil + } else if !exists { + delete(patch, "description") } - path = "overview_ui.0.en.0.long_description" + path = rootPath + ".long_description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["long_description"] = nil + } else if !exists { + delete(patch, "long_description") } } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product_test.go b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product_test.go index f789698d188..0675230564a 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product_test.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_catalog_product_test.go @@ -180,7 +180,7 @@ func testAccCheckIbmOnboardingCatalogProductConfigBasic(productID string, name s } metadata { rc_compatible = false - } + } } `, productID, name, active, disabled, kind, objectId) } @@ -195,7 +195,6 @@ func testAccCheckIbmOnboardingCatalogProductConfig(productID string, env string, active = %s disabled = %s kind = "%s" - object_id = "%s" overview_ui { en { display_name = "%s" @@ -209,27 +208,31 @@ func testAccCheckIbmOnboardingCatalogProductConfig(productID string, env string, } object_provider { name = "name" - email = "email@email.com" + email = "email" } metadata { rc_compatible = "%s" ui { - strings { - en { - bullets { + strings { + en { + bullets { title = "%s" description = "some1" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" caption = "%s" } - } - } + } + } urls { doc_url = "doc_url" terms_url = "terms_url" + instructions_url = "instructions_url" + catalog_details_url = "catalog_details_url" + custom_create_page_url = "custom_create_page_url" + dashboard = "dashboard" } hidden = true side_by_side_index = 1.0 @@ -237,6 +240,13 @@ func testAccCheckIbmOnboardingCatalogProductConfig(productID string, env string, service { rc_provisionable = true iam_compatible = false + parameters { + displayname = "test" + name = "test" + type = "text" + value = ["test"] + description = "test" + } } other { composite { @@ -282,7 +292,7 @@ func testAccCheckIbmOnboardingCatalogProductConfig(productID string, env string, day = "%s" start_time = "start_time" end_time = "end_time" - } + } times { day = "2.0" start_time = "start_time" @@ -301,7 +311,7 @@ func testAccCheckIbmOnboardingCatalogProductConfig(productID string, env string, } availability { times { - day = "1.0" + day = "%s" start_time = "start_time" end_time = "end_time" } @@ -329,9 +339,9 @@ func testAccCheckIbmOnboardingCatalogProductUpdateConfig(productID string, env s kind = "%s" object_id = "%s" overview_ui { - en { + en { display_name = "%s" - description = "description" + description = "description" long_description = "long_description" } } @@ -342,7 +352,7 @@ func testAccCheckIbmOnboardingCatalogProductUpdateConfig(productID string, env s object_provider { name = "name" email = "email@email.com" - } + } metadata { rc_compatible = "%s" ui { @@ -351,30 +361,30 @@ func testAccCheckIbmOnboardingCatalogProductUpdateConfig(productID string, env s bullets { title = "%s" description = "some1" - } + } bullets { title = "newBullet" description = "some1" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" caption = "%s" - } + } media { type = "youtube" url = "https://www.youtube.com/embed/HtkpMgNFYtE" caption = "newMedia" - } - } - } + } + } + } urls { doc_url = "doc_url" terms_url = "terms_url" - } + } hidden = true side_by_side_index = 1.0 - } + } service { rc_provisionable = true iam_compatible = false @@ -616,12 +626,54 @@ func TestResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(t globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogProductMetadataServiceModel := make(map[string]interface{}) + globalCatalogProductMetadataServiceModel["rc_provisionable"] = true + globalCatalogProductMetadataServiceModel["iam_compatible"] = true + globalCatalogProductMetadataServiceModel["bindable"] = true + globalCatalogProductMetadataServiceModel["plan_updateable"] = true + globalCatalogProductMetadataServiceModel["service_key_supported"] = true + globalCatalogProductMetadataServiceModel["unique_api_key"] = true + globalCatalogProductMetadataServiceModel["parameters"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersModel} supportTimeIntervalModel := make(map[string]interface{}) supportTimeIntervalModel["value"] = float64(72.5) @@ -678,7 +730,7 @@ func TestResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(t model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []map[string]interface{}{globalCatalogMetadataUiModel} - model["service"] = []map[string]interface{}{globalCatalogMetadataServiceModel} + model["service"] = []map[string]interface{}{globalCatalogProductMetadataServiceModel} model["other"] = []map[string]interface{}{globalCatalogProductMetadataOtherModel} assert.Equal(t, result, model) @@ -720,12 +772,54 @@ func TestResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(t globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogProductMetadataServiceModel := new(partnercentersellv1.GlobalCatalogProductMetadataService) + globalCatalogProductMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.UniqueApiKey = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} supportTimeIntervalModel := new(partnercentersellv1.SupportTimeInterval) supportTimeIntervalModel.Value = core.Float64Ptr(float64(72.5)) @@ -782,7 +876,7 @@ func TestResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(t model := new(partnercentersellv1.GlobalCatalogProductMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogProductMetadataServiceModel model.Other = globalCatalogProductMetadataOtherModel result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataToMap(model) @@ -1044,26 +1138,312 @@ func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataUIUrlsToMap(t * checkResult(result) } -func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceToMap(t *testing.T) { +func TestResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + model := make(map[string]interface{}) model["rc_provisionable"] = true model["iam_compatible"] = true model["bindable"] = true model["plan_updateable"] = true model["service_key_supported"] = true + model["unique_api_key"] = true + model["parameters"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersModel} assert.Equal(t, result, model) } - model := new(partnercentersellv1.GlobalCatalogMetadataService) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogProductMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) model.PlanUpdateable = core.BoolPtr(true) model.ServiceKeySupported = core.BoolPtr(true) + model.UniqueApiKey = core.BoolPtr(true) + model.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogProductMetadataServiceToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["name"] = "testString" + model["type"] = "text" + model["options"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + model["value"] = []string{"testString"} + model["layout"] = "testString" + model["associations"] = map[string]interface{}{"anyKey": "anyValue"} + model["validation_url"] = "testString" + model["options_url"] = "testString" + model["invalidmessage"] = "testString" + model["description"] = "testString" + model["required"] = true + model["pattern"] = "testString" + model["placeholder"] = "testString" + model["readonly"] = true + model["hidden"] = true + model["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + model.Displayname = core.StringPtr("testString") + model.Name = core.StringPtr("testString") + model.Type = core.StringPtr("text") + model.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + model.Value = []string{"testString"} + model.Layout = core.StringPtr("testString") + model.Associations = map[string]interface{}{"anyKey": "anyValue"} + model.ValidationURL = core.StringPtr("testString") + model.OptionsURL = core.StringPtr("testString") + model.Invalidmessage = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + model.Required = core.BoolPtr(true) + model.Pattern = core.StringPtr("testString") + model.Placeholder = core.StringPtr("testString") + model.Readonly = core.BoolPtr(true) + model.Hidden = core.BoolPtr(true) + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} - result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceToMap(model) + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["value"] = "testString" + model["i18n"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + model.Displayname = core.StringPtr("testString") + model.Value = core.StringPtr("testString") + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersOptionsToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + model := make(map[string]interface{}) + model["en"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["de"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["es"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["fr"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["it"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ja"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ko"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["pt_br"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_tw"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_cn"] = []map[string]interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + model.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["description"] = "testString" + + assert.Equal(t, result, model) + } + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + model.Displayname = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductGlobalCatalogMetadataServiceCustomParametersI18nFieldsToMap(model) assert.Nil(t, err) checkResult(result) } @@ -1662,12 +2042,54 @@ func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(t globalCatalogMetadataUiModel.Hidden = core.BoolPtr(true) globalCatalogMetadataUiModel.SideBySideIndex = core.Float64Ptr(float64(72.5)) - globalCatalogMetadataServiceModel := new(partnercentersellv1.GlobalCatalogMetadataService) - globalCatalogMetadataServiceModel.RcProvisionable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.IamCompatible = core.BoolPtr(true) - globalCatalogMetadataServiceModel.Bindable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) - globalCatalogMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogProductMetadataServiceModel := new(partnercentersellv1.GlobalCatalogProductMetadataService) + globalCatalogProductMetadataServiceModel.RcProvisionable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.IamCompatible = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.Bindable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.PlanUpdateable = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.ServiceKeySupported = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.UniqueApiKey = core.BoolPtr(true) + globalCatalogProductMetadataServiceModel.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} supportTimeIntervalModel := new(partnercentersellv1.SupportTimeInterval) supportTimeIntervalModel.Value = core.Float64Ptr(float64(72.5)) @@ -1724,7 +2146,7 @@ func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(t model := new(partnercentersellv1.GlobalCatalogProductMetadata) model.RcCompatible = core.BoolPtr(true) model.Ui = globalCatalogMetadataUiModel - model.Service = globalCatalogMetadataServiceModel + model.Service = globalCatalogProductMetadataServiceModel model.Other = globalCatalogProductMetadataOtherModel assert.Equal(t, result, model) @@ -1766,12 +2188,54 @@ func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(t globalCatalogMetadataUiModel["hidden"] = true globalCatalogMetadataUiModel["side_by_side_index"] = float64(72.5) - globalCatalogMetadataServiceModel := make(map[string]interface{}) - globalCatalogMetadataServiceModel["rc_provisionable"] = true - globalCatalogMetadataServiceModel["iam_compatible"] = true - globalCatalogMetadataServiceModel["bindable"] = true - globalCatalogMetadataServiceModel["plan_updateable"] = true - globalCatalogMetadataServiceModel["service_key_supported"] = true + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []interface{}{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogProductMetadataServiceModel := make(map[string]interface{}) + globalCatalogProductMetadataServiceModel["rc_provisionable"] = true + globalCatalogProductMetadataServiceModel["iam_compatible"] = true + globalCatalogProductMetadataServiceModel["bindable"] = true + globalCatalogProductMetadataServiceModel["plan_updateable"] = true + globalCatalogProductMetadataServiceModel["service_key_supported"] = true + globalCatalogProductMetadataServiceModel["unique_api_key"] = true + globalCatalogProductMetadataServiceModel["parameters"] = []interface{}{globalCatalogMetadataServiceCustomParametersModel} supportTimeIntervalModel := make(map[string]interface{}) supportTimeIntervalModel["value"] = float64(72.5) @@ -1828,7 +2292,7 @@ func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(t model := make(map[string]interface{}) model["rc_compatible"] = true model["ui"] = []interface{}{globalCatalogMetadataUiModel} - model["service"] = []interface{}{globalCatalogMetadataServiceModel} + model["service"] = []interface{}{globalCatalogProductMetadataServiceModel} model["other"] = []interface{}{globalCatalogProductMetadataOtherModel} result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadata(model) @@ -2090,26 +2554,312 @@ func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataUIUrls(t * checkResult(result) } -func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataService(t *testing.T) { - checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataService) { - model := new(partnercentersellv1.GlobalCatalogMetadataService) +func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadataService(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogProductMetadataService) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + globalCatalogMetadataServiceCustomParametersModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + globalCatalogMetadataServiceCustomParametersModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Name = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Type = core.StringPtr("text") + globalCatalogMetadataServiceCustomParametersModel.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel.Value = []string{"testString"} + globalCatalogMetadataServiceCustomParametersModel.Layout = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Associations = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel.ValidationURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.OptionsURL = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Invalidmessage = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Description = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Required = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Pattern = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Placeholder = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersModel.Readonly = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.Hidden = core.BoolPtr(true) + globalCatalogMetadataServiceCustomParametersModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogProductMetadataService) model.RcProvisionable = core.BoolPtr(true) model.IamCompatible = core.BoolPtr(true) model.Bindable = core.BoolPtr(true) model.PlanUpdateable = core.BoolPtr(true) model.ServiceKeySupported = core.BoolPtr(true) + model.UniqueApiKey = core.BoolPtr(true) + model.Parameters = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters{*globalCatalogMetadataServiceCustomParametersModel} assert.Equal(t, result, model) } + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + globalCatalogMetadataServiceCustomParametersModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["name"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["type"] = "text" + globalCatalogMetadataServiceCustomParametersModel["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + globalCatalogMetadataServiceCustomParametersModel["value"] = []interface{}{"testString"} + globalCatalogMetadataServiceCustomParametersModel["layout"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["associations"] = map[string]interface{}{"anyKey": "anyValue"} + globalCatalogMetadataServiceCustomParametersModel["validation_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["options_url"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["invalidmessage"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["description"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["required"] = true + globalCatalogMetadataServiceCustomParametersModel["pattern"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["placeholder"] = "testString" + globalCatalogMetadataServiceCustomParametersModel["readonly"] = true + globalCatalogMetadataServiceCustomParametersModel["hidden"] = true + globalCatalogMetadataServiceCustomParametersModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + model := make(map[string]interface{}) model["rc_provisionable"] = true model["iam_compatible"] = true model["bindable"] = true model["plan_updateable"] = true model["service_key_supported"] = true + model["unique_api_key"] = true + model["parameters"] = []interface{}{globalCatalogMetadataServiceCustomParametersModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogProductMetadataService(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParameters(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + globalCatalogMetadataServiceCustomParametersOptionsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + globalCatalogMetadataServiceCustomParametersOptionsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.Value = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersOptionsModel.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParameters) + model.Displayname = core.StringPtr("testString") + model.Name = core.StringPtr("testString") + model.Type = core.StringPtr("text") + model.Options = []partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions{*globalCatalogMetadataServiceCustomParametersOptionsModel} + model.Value = []string{"testString"} + model.Layout = core.StringPtr("testString") + model.Associations = map[string]interface{}{"anyKey": "anyValue"} + model.ValidationURL = core.StringPtr("testString") + model.OptionsURL = core.StringPtr("testString") + model.Invalidmessage = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + model.Required = core.BoolPtr(true) + model.Pattern = core.StringPtr("testString") + model.Placeholder = core.StringPtr("testString") + model.Readonly = core.BoolPtr(true) + model.Hidden = core.BoolPtr(true) + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + globalCatalogMetadataServiceCustomParametersOptionsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersOptionsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["value"] = "testString" + globalCatalogMetadataServiceCustomParametersOptionsModel["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["name"] = "testString" + model["type"] = "text" + model["options"] = []interface{}{globalCatalogMetadataServiceCustomParametersOptionsModel} + model["value"] = []interface{}{"testString"} + model["layout"] = "testString" + model["associations"] = map[string]interface{}{"anyKey": "anyValue"} + model["validation_url"] = "testString" + model["options_url"] = "testString" + model["invalidmessage"] = "testString" + model["description"] = "testString" + model["required"] = true + model["pattern"] = "testString" + model["placeholder"] = "testString" + model["readonly"] = true + model["hidden"] = true + model["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParameters(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersOptions(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + globalCatalogMetadataServiceCustomParametersI18nModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + globalCatalogMetadataServiceCustomParametersI18nModel.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + globalCatalogMetadataServiceCustomParametersI18nModel.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersOptions) + model.Displayname = core.StringPtr("testString") + model.Value = core.StringPtr("testString") + model.I18n = globalCatalogMetadataServiceCustomParametersI18nModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + globalCatalogMetadataServiceCustomParametersI18nModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nModel["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + globalCatalogMetadataServiceCustomParametersI18nModel["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["value"] = "testString" + model["i18n"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersOptions(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18n(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) { + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Displayname = core.StringPtr("testString") + globalCatalogMetadataServiceCustomParametersI18nFieldsModel.Description = core.StringPtr("testString") + + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18n) + model.En = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.De = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Es = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Fr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.It = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ja = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.Ko = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.PtBr = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhTw = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + model.ZhCn = globalCatalogMetadataServiceCustomParametersI18nFieldsModel + + assert.Equal(t, result, model) + } + + globalCatalogMetadataServiceCustomParametersI18nFieldsModel := make(map[string]interface{}) + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["displayname"] = "testString" + globalCatalogMetadataServiceCustomParametersI18nFieldsModel["description"] = "testString" + + model := make(map[string]interface{}) + model["en"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["de"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["es"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["fr"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["it"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ja"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["ko"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["pt_br"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_tw"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + model["zh_cn"] = []interface{}{globalCatalogMetadataServiceCustomParametersI18nFieldsModel} + + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18n(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(t *testing.T) { + checkResult := func(result *partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) { + model := new(partnercentersellv1.GlobalCatalogMetadataServiceCustomParametersI18nFields) + model.Displayname = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + + assert.Equal(t, result, model) + } + + model := make(map[string]interface{}) + model["displayname"] = "testString" + model["description"] = "testString" - result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataService(model) + result, err := partnercentersell.ResourceIbmOnboardingCatalogProductMapToGlobalCatalogMetadataServiceCustomParametersI18nFields(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration.go b/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration.go index df11aba1676..c9a5e1e8c07 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration.go @@ -2518,538 +2518,741 @@ func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationPatchAsPatch(patc path = "enabled" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["enabled"] = nil + } else if !exists { + delete(patch, "enabled") } path = "service_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service_type"] = nil + } else if !exists { + delete(patch, "service_type") } path = "actions" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["actions"] = nil } else if exists && patch["actions"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionAsPatch(patch["actions"].([]map[string]interface{})[0], d) + actionsList := patch["actions"].([]map[string]interface{}) + for i, actionsItem := range actionsList { + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionAsPatch(actionsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "actions") } path = "additional_policy_scopes" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["additional_policy_scopes"] = nil + } else if !exists { + delete(patch, "additional_policy_scopes") } path = "display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil + } else if !exists { + delete(patch, "display_name") } path = "parent_ids" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["parent_ids"] = nil + } else if !exists { + delete(patch, "parent_ids") } path = "resource_hierarchy_attribute" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["resource_hierarchy_attribute"] = nil } else if exists && patch["resource_hierarchy_attribute"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationResourceHierarchyAttributeAsPatch(patch["resource_hierarchy_attribute"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationResourceHierarchyAttributeAsPatch(patch["resource_hierarchy_attribute"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "resource_hierarchy_attribute") } path = "supported_anonymous_accesses" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_anonymous_accesses"] = nil } else if exists && patch["supported_anonymous_accesses"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAnonymousAccessAsPatch(patch["supported_anonymous_accesses"].([]map[string]interface{})[0], d) + supported_anonymous_accessesList := patch["supported_anonymous_accesses"].([]map[string]interface{}) + for i, supported_anonymous_accessesItem := range supported_anonymous_accessesList { + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAnonymousAccessAsPatch(supported_anonymous_accessesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "supported_anonymous_accesses") } path = "supported_attributes" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_attributes"] = nil } else if exists && patch["supported_attributes"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAttributeAsPatch(patch["supported_attributes"].([]map[string]interface{})[0], d) + supported_attributesList := patch["supported_attributes"].([]map[string]interface{}) + for i, supported_attributesItem := range supported_attributesList { + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAttributeAsPatch(supported_attributesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "supported_attributes") } path = "supported_authorization_subjects" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_authorization_subjects"] = nil } else if exists && patch["supported_authorization_subjects"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAuthorizationSubjectAsPatch(patch["supported_authorization_subjects"].([]map[string]interface{})[0], d) + supported_authorization_subjectsList := patch["supported_authorization_subjects"].([]map[string]interface{}) + for i, supported_authorization_subjectsItem := range supported_authorization_subjectsList { + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAuthorizationSubjectAsPatch(supported_authorization_subjectsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "supported_authorization_subjects") } path = "supported_roles" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_roles"] = nil } else if exists && patch["supported_roles"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedRoleAsPatch(patch["supported_roles"].([]map[string]interface{})[0], d) + supported_rolesList := patch["supported_roles"].([]map[string]interface{}) + for i, supported_rolesItem := range supported_rolesList { + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedRoleAsPatch(supported_rolesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "supported_roles") } path = "supported_network" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_network"] = nil } else if exists && patch["supported_network"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedNetworkAsPatch(patch["supported_network"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedNetworkAsPatch(patch["supported_network"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "supported_network") } return patch } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedNetworkAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedNetworkAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_network.0.environment_attributes" + path = rootPath + ".environment_attributes" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["environment_attributes"] = nil } else if exists && patch["environment_attributes"] != nil { - ResourceIbmOnboardingIamRegistrationEnvironmentAttributeAsPatch(patch["environment_attributes"].([]map[string]interface{})[0], d) + environment_attributesList := patch["environment_attributes"].([]map[string]interface{}) + for i, environment_attributesItem := range environment_attributesList { + ResourceIbmOnboardingIamRegistrationEnvironmentAttributeAsPatch(environment_attributesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "environment_attributes") } } -func ResourceIbmOnboardingIamRegistrationEnvironmentAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationEnvironmentAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_network.0.environment_attributes.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } - path = "supported_network.0.environment_attributes.0.values" + path = rootPath + ".values" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["values"] = nil + } else if !exists { + delete(patch, "values") } - path = "supported_network.0.environment_attributes.0.options" + path = rootPath + ".options" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["options"] = nil } else if exists && patch["options"] != nil { - ResourceIbmOnboardingIamRegistrationEnvironmentAttributeOptionsAsPatch(patch["options"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationEnvironmentAttributeOptionsAsPatch(patch["options"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "options") } } -func ResourceIbmOnboardingIamRegistrationEnvironmentAttributeOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationEnvironmentAttributeOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_network.0.environment_attributes.0.options.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedRoleAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedRoleAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_roles.0.id" + path = rootPath + ".id" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["id"] = nil + } else if !exists { + delete(patch, "id") } - path = "supported_roles.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil } else if exists && patch["description"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "description") } - path = "supported_roles.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil } else if exists && patch["display_name"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "display_name") } - path = "supported_roles.0.options" + path = rootPath + ".options" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["options"] = nil } else if exists && patch["options"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedRoleOptionsAsPatch(patch["options"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedRoleOptionsAsPatch(patch["options"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "options") } } -func ResourceIbmOnboardingIamRegistrationSupportedRoleOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedRoleOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_roles.0.options.0.policy_type" + path = rootPath + ".policy_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["policy_type"] = nil + } else if !exists { + delete(patch, "policy_type") } - path = "supported_roles.0.options.0.account_type" + path = rootPath + ".account_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["account_type"] = nil + } else if !exists { + delete(patch, "account_type") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAuthorizationSubjectAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAuthorizationSubjectAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_authorization_subjects.0.attributes" + path = rootPath + ".attributes" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["attributes"] = nil } else if exists && patch["attributes"] != nil { - ResourceIbmOnboardingIamRegistrationSupportAuthorizationSubjectAttributeAsPatch(patch["attributes"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportAuthorizationSubjectAttributeAsPatch(patch["attributes"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "attributes") } - path = "supported_authorization_subjects.0.roles" + path = rootPath + ".roles" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["roles"] = nil + } else if !exists { + delete(patch, "roles") } } -func ResourceIbmOnboardingIamRegistrationSupportAuthorizationSubjectAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportAuthorizationSubjectAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_authorization_subjects.0.attributes.0.service_name" + path = rootPath + ".service_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["service_name"] = nil + } else if !exists { + delete(patch, "service_name") } - path = "supported_authorization_subjects.0.attributes.0.resource_type" + path = rootPath + ".resource_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["resource_type"] = nil + } else if !exists { + delete(patch, "resource_type") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } - path = "supported_attributes.0.options" + path = rootPath + ".options" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["options"] = nil } else if exists && patch["options"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsAsPatch(patch["options"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsAsPatch(patch["options"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "options") } - path = "supported_attributes.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil } else if exists && patch["display_name"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "display_name") } - path = "supported_attributes.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil } else if exists && patch["description"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "description") } - path = "supported_attributes.0.ui" + path = rootPath + ".ui" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ui"] = nil } else if exists && patch["ui"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributeUiAsPatch(patch["ui"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributeUiAsPatch(patch["ui"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "ui") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.ui.0.input_type" + path = rootPath + ".input_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["input_type"] = nil + } else if !exists { + delete(patch, "input_type") } - path = "supported_attributes.0.ui.0.input_details" + path = rootPath + ".input_details" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["input_details"] = nil } else if exists && patch["input_details"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputDetailsAsPatch(patch["input_details"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputDetailsAsPatch(patch["input_details"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "input_details") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputDetailsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputDetailsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.ui.0.input_details.0.type" + path = rootPath + ".type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["type"] = nil + } else if !exists { + delete(patch, "type") } - path = "supported_attributes.0.ui.0.input_details.0.values" + path = rootPath + ".values" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["values"] = nil } else if exists && patch["values"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputValueAsPatch(patch["values"].([]map[string]interface{})[0], d) + valuesList := patch["values"].([]map[string]interface{}) + for i, valuesItem := range valuesList { + ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputValueAsPatch(valuesItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "values") } - path = "supported_attributes.0.ui.0.input_details.0.gst" + path = rootPath + ".gst" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["gst"] = nil } else if exists && patch["gst"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputGstAsPatch(patch["gst"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputGstAsPatch(patch["gst"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "gst") } - path = "supported_attributes.0.ui.0.input_details.0.url" + path = rootPath + ".url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["url"] = nil } else if exists && patch["url"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputURLAsPatch(patch["url"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputURLAsPatch(patch["url"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "url") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputURLAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputURLAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.ui.0.input_details.0.url.0.url_endpoint" + path = rootPath + ".url_endpoint" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["url_endpoint"] = nil + } else if !exists { + delete(patch, "url_endpoint") } - path = "supported_attributes.0.ui.0.input_details.0.url.0.input_option_label" + path = rootPath + ".input_option_label" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["input_option_label"] = nil + } else if !exists { + delete(patch, "input_option_label") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputGstAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputGstAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.ui.0.input_details.0.gst.0.query" + path = rootPath + ".query" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["query"] = nil + } else if !exists { + delete(patch, "query") } - path = "supported_attributes.0.ui.0.input_details.0.gst.0.value_property_name" + path = rootPath + ".value_property_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value_property_name"] = nil + } else if !exists { + delete(patch, "value_property_name") } - path = "supported_attributes.0.ui.0.input_details.0.gst.0.label_property_name" + path = rootPath + ".label_property_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["label_property_name"] = nil + } else if !exists { + delete(patch, "label_property_name") } - path = "supported_attributes.0.ui.0.input_details.0.gst.0.input_option_label" + path = rootPath + ".input_option_label" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["input_option_label"] = nil + } else if !exists { + delete(patch, "input_option_label") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputValueAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributeUiInputValueAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.ui.0.input_details.0.values.0.value" + path = rootPath + ".value" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value"] = nil + } else if !exists { + delete(patch, "value") } - path = "supported_attributes.0.ui.0.input_details.0.values.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil } else if exists && patch["display_name"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "display_name") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.options.0.operators" + path = rootPath + ".operators" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["operators"] = nil + } else if !exists { + delete(patch, "operators") } - path = "supported_attributes.0.options.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } - path = "supported_attributes.0.options.0.supported_patterns" + path = rootPath + ".supported_patterns" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["supported_patterns"] = nil + } else if !exists { + delete(patch, "supported_patterns") } - path = "supported_attributes.0.options.0.policy_types" + path = rootPath + ".policy_types" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["policy_types"] = nil + } else if !exists { + delete(patch, "policy_types") } - path = "supported_attributes.0.options.0.is_empty_value_supported" + path = rootPath + ".is_empty_value_supported" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["is_empty_value_supported"] = nil + } else if !exists { + delete(patch, "is_empty_value_supported") } - path = "supported_attributes.0.options.0.is_string_exists_false_value_supported" + path = rootPath + ".is_string_exists_false_value_supported" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["is_string_exists_false_value_supported"] = nil + } else if !exists { + delete(patch, "is_string_exists_false_value_supported") } - path = "supported_attributes.0.options.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } - path = "supported_attributes.0.options.0.resource_hierarchy" + path = rootPath + ".resource_hierarchy" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["resource_hierarchy"] = nil } else if exists && patch["resource_hierarchy"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyAsPatch(patch["resource_hierarchy"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyAsPatch(patch["resource_hierarchy"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "resource_hierarchy") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.options.0.resource_hierarchy.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil } else if exists && patch["key"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyKeyAsPatch(patch["key"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyKeyAsPatch(patch["key"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "key") } - path = "supported_attributes.0.options.0.resource_hierarchy.0.value" + path = rootPath + ".value" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value"] = nil } else if exists && patch["value"] != nil { - ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyValueAsPatch(patch["value"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyValueAsPatch(patch["value"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "value") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyValueAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyValueAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.options.0.resource_hierarchy.0.value.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } } -func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyKeyAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsResourceHierarchyKeyAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_attributes.0.options.0.resource_hierarchy.0.key.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } - path = "supported_attributes.0.options.0.resource_hierarchy.0.key.0.value" + path = rootPath + ".value" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value"] = nil + } else if !exists { + delete(patch, "value") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAnonymousAccessAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAnonymousAccessAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_anonymous_accesses.0.attributes" + path = rootPath + ".attributes" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["attributes"] = nil + } else if !exists { + delete(patch, "attributes") } - path = "supported_anonymous_accesses.0.roles" + path = rootPath + ".roles" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["roles"] = nil + } else if !exists { + delete(patch, "roles") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationResourceHierarchyAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationResourceHierarchyAttributeAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "resource_hierarchy_attribute.0.key" + path = rootPath + ".key" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["key"] = nil + } else if !exists { + delete(patch, "key") } - path = "resource_hierarchy_attribute.0.value" + path = rootPath + ".value" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["value"] = nil + } else if !exists { + delete(patch, "value") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "actions.0.id" + path = rootPath + ".id" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["id"] = nil + } else if !exists { + delete(patch, "id") } - path = "actions.0.roles" + path = rootPath + ".roles" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["roles"] = nil + } else if !exists { + delete(patch, "roles") } - path = "actions.0.description" + path = rootPath + ".description" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["description"] = nil } else if exists && patch["description"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch["description"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "description") } - path = "actions.0.display_name" + path = rootPath + ".display_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["display_name"] = nil } else if exists && patch["display_name"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch["display_name"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "display_name") } - path = "actions.0.options" + path = rootPath + ".options" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["options"] = nil } else if exists && patch["options"] != nil { - ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionOptionsAsPatch(patch["options"].(map[string]interface{}), d) + ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionOptionsAsPatch(patch["options"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "options") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationActionOptionsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "actions.0.options.0.hidden" + path = rootPath + ".hidden" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["hidden"] = nil + } else if !exists { + delete(patch, "hidden") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDisplayNameObjectAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_roles.0.display_name.0.default" + path = rootPath + ".default" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["default"] = nil + } else if !exists { + delete(patch, "default") } - path = "supported_roles.0.display_name.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil + } else if !exists { + delete(patch, "en") } - path = "supported_roles.0.display_name.0.de" + path = rootPath + ".de" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["de"] = nil + } else if !exists { + delete(patch, "de") } - path = "supported_roles.0.display_name.0.es" + path = rootPath + ".es" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["es"] = nil + } else if !exists { + delete(patch, "es") } - path = "supported_roles.0.display_name.0.fr" + path = rootPath + ".fr" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["fr"] = nil + } else if !exists { + delete(patch, "fr") } - path = "supported_roles.0.display_name.0.it" + path = rootPath + ".it" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["it"] = nil + } else if !exists { + delete(patch, "it") } - path = "supported_roles.0.display_name.0.ja" + path = rootPath + ".ja" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ja"] = nil + } else if !exists { + delete(patch, "ja") } - path = "supported_roles.0.display_name.0.ko" + path = rootPath + ".ko" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ko"] = nil + } else if !exists { + delete(patch, "ko") } - path = "supported_roles.0.display_name.0.pt_br" + path = rootPath + ".pt_br" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["pt_br"] = nil + } else if !exists { + delete(patch, "pt_br") } - path = "supported_roles.0.display_name.0.zh_tw" + path = rootPath + ".zh_tw" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["zh_tw"] = nil + } else if !exists { + delete(patch, "zh_tw") } - path = "supported_roles.0.display_name.0.zh_cn" + path = rootPath + ".zh_cn" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["zh_cn"] = nil + } else if !exists { + delete(patch, "zh_cn") } } -func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingIamRegistrationIamServiceRegistrationDescriptionObjectAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "supported_roles.0.description.0.default" + path = rootPath + ".default" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["default"] = nil + } else if !exists { + delete(patch, "default") } - path = "supported_roles.0.description.0.en" + path = rootPath + ".en" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["en"] = nil + } else if !exists { + delete(patch, "en") } - path = "supported_roles.0.description.0.de" + path = rootPath + ".de" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["de"] = nil + } else if !exists { + delete(patch, "de") } - path = "supported_roles.0.description.0.es" + path = rootPath + ".es" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["es"] = nil + } else if !exists { + delete(patch, "es") } - path = "supported_roles.0.description.0.fr" + path = rootPath + ".fr" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["fr"] = nil + } else if !exists { + delete(patch, "fr") } - path = "supported_roles.0.description.0.it" + path = rootPath + ".it" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["it"] = nil + } else if !exists { + delete(patch, "it") } - path = "supported_roles.0.description.0.ja" + path = rootPath + ".ja" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ja"] = nil + } else if !exists { + delete(patch, "ja") } - path = "supported_roles.0.description.0.ko" + path = rootPath + ".ko" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ko"] = nil + } else if !exists { + delete(patch, "ko") } - path = "supported_roles.0.description.0.pt_br" + path = rootPath + ".pt_br" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["pt_br"] = nil + } else if !exists { + delete(patch, "pt_br") } - path = "supported_roles.0.description.0.zh_tw" + path = rootPath + ".zh_tw" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["zh_tw"] = nil + } else if !exists { + delete(patch, "zh_tw") } - path = "supported_roles.0.description.0.zh_cn" + path = rootPath + ".zh_cn" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["zh_cn"] = nil + } else if !exists { + delete(patch, "zh_cn") } } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration_test.go b/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration_test.go index bd3847afe0f..ec221145082 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration_test.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_iam_registration_test.go @@ -367,19 +367,19 @@ func testAccCheckIbmOnboardingIamRegistrationUpdateConfig( zh_tw = "zh_tw" zh_cn = "zh_cn" } - display_name { - default = "default" - en = "en" - de = "de" - es = "es" - fr = "fr" - it = "it" - ja = "ja" - ko = "ko" - pt_br = "pt_br" - zh_tw = "zh_tw" - zh_cn = "zh_cn" - } + display_name { + default = "default" + en = "en" + de = "de" + es = "es" + fr = "fr" + it = "it" + ja = "ja" + ko = "ko" + pt_br = "pt_br" + zh_tw = "zh_tw" + zh_cn = "zh_cn" + } options { hidden = true } @@ -430,7 +430,7 @@ func testAccCheckIbmOnboardingIamRegistrationUpdateConfig( pt_br = "pt_br" zh_tw = "zh_tw" zh_cn = "zh_cn" - } + } parent_ids = ["05ca8653-de25-49fa-a14d-aaa5d373bc22"] supported_attributes { key = "testString" @@ -887,7 +887,7 @@ func TestResourceIbmOnboardingIamRegistrationIamServiceRegistrationSupportedAttr supportedAttributesOptionsModel := make(map[string]interface{}) supportedAttributesOptionsModel["operators"] = []string{"stringEquals"} supportedAttributesOptionsModel["hidden"] = true - supportedAttributesOptionsModel["supported_attributes"] = []string{"testString"} + supportedAttributesOptionsModel["supported_patterns"] = []string{"testString"} supportedAttributesOptionsModel["policy_types"] = []string{"access"} supportedAttributesOptionsModel["is_empty_value_supported"] = true supportedAttributesOptionsModel["is_string_exists_false_value_supported"] = true @@ -1053,7 +1053,7 @@ func TestResourceIbmOnboardingIamRegistrationSupportedAttributesOptionsToMap(t * model := make(map[string]interface{}) model["operators"] = []string{"stringEquals"} model["hidden"] = true - model["supported_attributes"] = []string{"testString"} + model["supported_patterns"] = []string{"testString"} model["policy_types"] = []string{"access"} model["is_empty_value_supported"] = true model["is_string_exists_false_value_supported"] = true @@ -1814,6 +1814,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupporte iamServiceRegistrationSupportedAnonymousAccessAttributesModel := new(partnercentersellv1.IamServiceRegistrationSupportedAnonymousAccessAttributes) iamServiceRegistrationSupportedAnonymousAccessAttributesModel.AccountID = core.StringPtr("testString") iamServiceRegistrationSupportedAnonymousAccessAttributesModel.ServiceName = core.StringPtr("testString") + iamServiceRegistrationSupportedAnonymousAccessAttributesModel.AdditionalProperties = map[string]string{"key1": "testString"} model := new(partnercentersellv1.IamServiceRegistrationSupportedAnonymousAccess) model.Attributes = iamServiceRegistrationSupportedAnonymousAccessAttributesModel @@ -1825,6 +1826,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupporte iamServiceRegistrationSupportedAnonymousAccessAttributesModel := make(map[string]interface{}) iamServiceRegistrationSupportedAnonymousAccessAttributesModel["account_id"] = "testString" iamServiceRegistrationSupportedAnonymousAccessAttributesModel["service_name"] = "testString" + iamServiceRegistrationSupportedAnonymousAccessAttributesModel["additional_properties"] = map[string]interface{}{"key1": "testString"} model := make(map[string]interface{}) model["attributes"] = []interface{}{iamServiceRegistrationSupportedAnonymousAccessAttributesModel} @@ -1840,6 +1842,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupporte model := new(partnercentersellv1.IamServiceRegistrationSupportedAnonymousAccessAttributes) model.AccountID = core.StringPtr("testString") model.ServiceName = core.StringPtr("testString") + model.AdditionalProperties = map[string]string{"key1": "testString"} assert.Equal(t, result, model) } @@ -1847,6 +1850,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupporte model := make(map[string]interface{}) model["account_id"] = "testString" model["service_name"] = "testString" + model["additional_properties"] = map[string]interface{}{"key1": "testString"} result, err := partnercentersell.ResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupportedAnonymousAccessAttributes(model) assert.Nil(t, err) @@ -1950,7 +1954,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToIamServiceRegistrationSupporte supportedAttributesOptionsModel := make(map[string]interface{}) supportedAttributesOptionsModel["operators"] = []interface{}{"stringEquals"} supportedAttributesOptionsModel["hidden"] = true - supportedAttributesOptionsModel["supported_attributes"] = []interface{}{"testString"} + supportedAttributesOptionsModel["supported_patterns"] = []interface{}{"testString"} supportedAttributesOptionsModel["policy_types"] = []interface{}{"access"} supportedAttributesOptionsModel["is_empty_value_supported"] = true supportedAttributesOptionsModel["is_string_exists_false_value_supported"] = true @@ -2059,7 +2063,7 @@ func TestResourceIbmOnboardingIamRegistrationMapToSupportedAttributesOptions(t * model := make(map[string]interface{}) model["operators"] = []interface{}{"stringEquals"} model["hidden"] = true - model["supported_attributes"] = []interface{}{"testString"} + model["supported_patterns"] = []interface{}{"testString"} model["policy_types"] = []interface{}{"access"} model["is_empty_value_supported"] = true model["is_string_exists_false_value_supported"] = true diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_product.go b/ibm/service/partnercentersell/resource_ibm_onboarding_product.go index 05ee3cf898a..5076455abd7 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_product.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_product.go @@ -504,57 +504,80 @@ func ResourceIbmOnboardingProductOnboardingProductPatchAsPatch(patchVals *partne path = "primary_contact" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["primary_contact"] = nil + } else if !exists { + delete(patch, "primary_contact") } path = "eccn_number" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["eccn_number"] = nil + } else if !exists { + delete(patch, "eccn_number") } path = "ero_class" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["ero_class"] = nil + } else if !exists { + delete(patch, "ero_class") } path = "unspsc" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["unspsc"] = nil + } else if !exists { + delete(patch, "unspsc") } path = "tax_assessment" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["tax_assessment"] = nil + } else if !exists { + delete(patch, "tax_assessment") } path = "support" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["support"] = nil } else if exists && patch["support"] != nil { - ResourceIbmOnboardingProductOnboardingProductSupportAsPatch(patch["support"].(map[string]interface{}), d) + ResourceIbmOnboardingProductOnboardingProductSupportAsPatch(patch["support"].(map[string]interface{}), d, fmt.Sprintf("%s.0", path)) + } else if !exists { + delete(patch, "support") } return patch } -func ResourceIbmOnboardingProductOnboardingProductSupportAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingProductOnboardingProductSupportAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "support.0.escalation_contacts" + path = rootPath + ".escalation_contacts" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["escalation_contacts"] = nil } else if exists && patch["escalation_contacts"] != nil { - ResourceIbmOnboardingProductOnboardingProductSupportEscalationContactItemsAsPatch(patch["escalation_contacts"].([]map[string]interface{})[0], d) + escalation_contactsList := patch["escalation_contacts"].([]map[string]interface{}) + for i, escalation_contactsItem := range escalation_contactsList { + ResourceIbmOnboardingProductOnboardingProductSupportEscalationContactItemsAsPatch(escalation_contactsItem, d, fmt.Sprintf("%s.%d", path, i)) + } + } else if !exists { + delete(patch, "escalation_contacts") } } -func ResourceIbmOnboardingProductOnboardingProductSupportEscalationContactItemsAsPatch(patch map[string]interface{}, d *schema.ResourceData) { +func ResourceIbmOnboardingProductOnboardingProductSupportEscalationContactItemsAsPatch(patch map[string]interface{}, d *schema.ResourceData, rootPath string) { var path string - path = "support.0.escalation_contacts.0.name" + path = rootPath + ".name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["name"] = nil + } else if !exists { + delete(patch, "name") } - path = "support.0.escalation_contacts.0.email" + path = rootPath + ".email" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["email"] = nil + } else if !exists { + delete(patch, "email") } - path = "support.0.escalation_contacts.0.role" + path = rootPath + ".role" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["role"] = nil + } else if !exists { + delete(patch, "role") } } diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_product_test.go b/ibm/service/partnercentersell/resource_ibm_onboarding_product_test.go index 86662649012..b76af810d5d 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_product_test.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_product_test.go @@ -50,10 +50,12 @@ func TestAccIbmOnboardingProductAllArgs(t *testing.T) { typeVar := "service" eccnNumber := "5D002.C.1" eroClass := "A6VR" + unspsc := "25191503" taxAssessment := "PAAS" typeVarUpdate := "service" eccnNumberUpdate := "5D002.C.1" eroClassUpdate := "A6VR" + unspscUpdate := "43232300" taxAssessmentUpdate := "PAAS" resource.Test(t, resource.TestCase{ @@ -62,7 +64,7 @@ func TestAccIbmOnboardingProductAllArgs(t *testing.T) { CheckDestroy: testAccCheckIbmOnboardingProductDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmOnboardingProductConfig(typeVar, eccnNumber, eroClass, taxAssessment), + Config: testAccCheckIbmOnboardingProductConfig(typeVar, eccnNumber, eroClass, unspsc, taxAssessment), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIbmOnboardingProductExists("ibm_onboarding_product.onboarding_product_instance", conf), resource.TestCheckResourceAttr("ibm_onboarding_product.onboarding_product_instance", "type", typeVar), @@ -72,7 +74,7 @@ func TestAccIbmOnboardingProductAllArgs(t *testing.T) { ), }, resource.TestStep{ - Config: testAccCheckIbmOnboardingProductConfig(typeVarUpdate, eccnNumberUpdate, eroClassUpdate, taxAssessmentUpdate), + Config: testAccCheckIbmOnboardingProductConfig(typeVarUpdate, eccnNumberUpdate, eroClassUpdate, unspscUpdate, taxAssessmentUpdate), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_onboarding_product.onboarding_product_instance", "type", typeVarUpdate), resource.TestCheckResourceAttr("ibm_onboarding_product.onboarding_product_instance", "eccn_number", eccnNumberUpdate), @@ -81,7 +83,7 @@ func TestAccIbmOnboardingProductAllArgs(t *testing.T) { ), }, resource.TestStep{ - ResourceName: "ibm_onboarding_product.onboarding_product", + ResourceName: "ibm_onboarding_product.onboarding_product_instance", ImportState: true, ImportStateVerify: true, }, @@ -95,34 +97,27 @@ func testAccCheckIbmOnboardingProductConfigBasic(typeVar string) string { type = "%s" primary_contact { name = "name" - email = "email" + email = "email@email.com" } } `, typeVar) } -func testAccCheckIbmOnboardingProductConfig(typeVar string, eccnNumber string, eroClass string, taxAssessment string) string { +func testAccCheckIbmOnboardingProductConfig(typeVar string, eccnNumber string, eroClass string, unspsc string, taxAssessment string) string { return fmt.Sprintf(` resource "ibm_onboarding_product" "onboarding_product_instance" { type = "%s" primary_contact { name = "name" - email = "email" + email = "email@email.com" } eccn_number = "%s" ero_class = "%s" - unspsc = "FIXME" + unspsc = "%s" tax_assessment = "%s" - support { - escalation_contacts { - name = "name" - email = "email" - role = "role" - } - } } - `, typeVar, eccnNumber, eroClass, taxAssessment) + `, typeVar, eccnNumber, eroClass, unspsc, taxAssessment) } func testAccCheckIbmOnboardingProductExists(n string, obj partnercentersellv1.OnboardingProduct) resource.TestCheckFunc { diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_registration.go b/ibm/service/partnercentersell/resource_ibm_onboarding_registration.go index 6a181f5f2f5..89cf480b205 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_registration.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_registration.go @@ -336,18 +336,26 @@ func ResourceIbmOnboardingRegistrationRegistrationPatchAsPatch(patchVals *partne path = "company_name" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["company_name"] = nil + } else if !exists { + delete(patch, "company_name") } path = "primary_contact" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["primary_contact"] = nil + } else if !exists { + delete(patch, "primary_contact") } path = "default_private_catalog_id" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["default_private_catalog_id"] = nil + } else if !exists { + delete(patch, "default_private_catalog_id") } path = "provider_access_group" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["provider_access_group"] = nil + } else if !exists { + delete(patch, "provider_access_group") } return patch diff --git a/ibm/service/partnercentersell/resource_ibm_onboarding_resource_broker.go b/ibm/service/partnercentersell/resource_ibm_onboarding_resource_broker.go index 044c9ae42b2..794a081eb08 100644 --- a/ibm/service/partnercentersell/resource_ibm_onboarding_resource_broker.go +++ b/ibm/service/partnercentersell/resource_ibm_onboarding_resource_broker.go @@ -612,42 +612,62 @@ func ResourceIbmOnboardingResourceBrokerBrokerPatchAsPatch(patchVals *partnercen path = "auth_username" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["auth_username"] = nil + } else if !exists { + delete(patch, "auth_username") } path = "auth_password" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["auth_password"] = nil + } else if !exists { + delete(patch, "auth_password") } path = "auth_scheme" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["auth_scheme"] = nil + } else if !exists { + delete(patch, "auth_scheme") } path = "resource_group_crn" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["resource_group_crn"] = nil + } else if !exists { + delete(patch, "resource_group_crn") } path = "state" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["state"] = nil + } else if !exists { + delete(patch, "state") } path = "broker_url" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["broker_url"] = nil + } else if !exists { + delete(patch, "broker_url") } path = "allow_context_updates" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["allow_context_updates"] = nil + } else if !exists { + delete(patch, "allow_context_updates") } path = "catalog_type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["catalog_type"] = nil + } else if !exists { + delete(patch, "catalog_type") } path = "type" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["type"] = nil + } else if !exists { + delete(patch, "type") } path = "region" if _, exists := d.GetOk(path); d.HasChange(path) && !exists { patch["region"] = nil + } else if !exists { + delete(patch, "region") } return patch diff --git a/website/docs/r/onboarding_catalog_deployment.html.markdown b/website/docs/r/onboarding_catalog_deployment.html.markdown index 76ed56416c4..98f63b5ddff 100644 --- a/website/docs/r/onboarding_catalog_deployment.html.markdown +++ b/website/docs/r/onboarding_catalog_deployment.html.markdown @@ -60,6 +60,111 @@ resource "ibm_onboarding_catalog_deployment" "onboarding_catalog_deployment_inst bindable = true plan_updateable = true service_key_supported = true + parameters { + displayname = "displayname" + name = "name" + type = "text" + options { + displayname = "displayname" + value = "value" + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } + value = [ "value" ] + layout = "layout" + associations = { "key" = "anything as a string" } + validation_url = "validation_url" + options_url = "options_url" + invalidmessage = "invalidmessage" + description = "description" + required = true + pattern = "pattern" + placeholder = "placeholder" + readonly = true + hidden = true + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } } deployment { broker { @@ -122,6 +227,166 @@ Nested schema for **metadata**: Nested schema for **service**: * `bindable` - (Optional, Boolean) Deprecated. Controls the Connections tab on the Resource Details page. * `iam_compatible` - (Optional, Boolean) Whether the service is compatible with the IAM service. + * `parameters` - (Optional, List) + * Constraints: The maximum length is `1000` items. The minimum length is `0` items. + Nested schema for **parameters**: + * `associations` - (Optional, Map) A JSON structure to describe the interactions with pricing plans and/or other custom parameters. + * `description` - (Optional, String) The description of the parameter that is displayed to help users with the value of the parameter. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `displayname` - (Optional, String) The display name for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `hidden` - (Optional, Boolean) Indicates whether the custom parameters is hidden required or not. + * `i18n` - (Optional, List) The description for the object. + Nested schema for **i18n**: + * `de` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **de**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `en` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **en**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `es` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **es**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `fr` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **fr**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `it` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **it**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ja` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ja**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ko` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ko**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `pt_br` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **pt_br**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_cn` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_cn**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_tw` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_tw**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `invalidmessage` - (Optional, String) The message that appears when the content of the text box is invalid. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `layout` - (Optional, String) Specifies the layout of check box or radio input types. When unspecified, the default layout is horizontal. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `name` - (Optional, String) The key of the parameter. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `options` - (Optional, List) + * Constraints: The maximum length is `1000` items. The minimum length is `0` items. + Nested schema for **options**: + * `displayname` - (Optional, String) The display name for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `i18n` - (Optional, List) The description for the object. + Nested schema for **i18n**: + * `de` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **de**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `en` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **en**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `es` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **es**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `fr` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **fr**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `it` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **it**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ja` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ja**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ko` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ko**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `pt_br` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **pt_br**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_cn` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_cn**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_tw` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_tw**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `value` - (Optional, String) The value for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/./`. + * `options_url` - (Optional, String) The options URL for custom service parameters. + * Constraints: The maximum length is `2083` characters. The minimum length is `1` character. The value must match regular expression `/^(?!mailto:)(?:(?:http|https|ftp):\/\/)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(\/|\\?|#)[^\\s]*)?$/`. + * `pattern` - (Optional, String) A regular expression that the value is checked against. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/./`. + * `placeholder` - (Optional, String) The placeholder text for custom parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `readonly` - (Optional, Boolean) A boolean value that indicates whether the value of the parameter is displayed only and cannot be changed by users. The default value is false. + * `required` - (Optional, Boolean) A boolean value that indicates whether the parameter must be entered in the IBM Cloud user interface. + * `type` - (Optional, String) The type of custom service parameters. + * Constraints: Allowable values are: `text`, `textarea`, `dropdown`, `number`, `password`, `combo`, `checkbox`, `radio`, `multiselect`, `resource_group`, `vcenter_datastore`, `region`, `secret`, `cluster_namespace`. + * `validation_url` - (Optional, String) The validation URL for custom service parameters. + * Constraints: The maximum length is `2083` characters. The minimum length is `1` character. The value must match regular expression `/^(?!mailto:)(?:(?:http|https|ftp):\/\/)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(\/|\\?|#)[^\\s]*)?$/`. + * `value` - (Optional, List) + * Constraints: The list items must match regular expression `/^[ -~\\s]*$/`. The maximum length is `1000` items. The minimum length is `0` items. * `plan_updateable` - (Optional, Boolean) Indicates plan update support and controls the Plan tab on the Resource Details page. * `rc_provisionable` - (Optional, Boolean) Whether the service is provisionable by the resource controller service. * `service_key_supported` - (Optional, Boolean) Indicates service credentials support and controls the Service Credential tab on Resource Details page. @@ -197,6 +462,8 @@ After your resource is created, you can read values from the listed arguments an * `id` - The unique identifier of the onboarding_catalog_deployment. * `catalog_deployment_id` - (String) The ID of a global catalog object. +* `geo_tags` - (List) + * Constraints: The list items must match regular expression `/./`. The maximum length is `1000` items. The minimum length is `0` items. * `url` - (String) The global catalog URL of your product. diff --git a/website/docs/r/onboarding_catalog_plan.html.markdown b/website/docs/r/onboarding_catalog_plan.html.markdown index 2949b46dbf7..4e20431469b 100644 --- a/website/docs/r/onboarding_catalog_plan.html.markdown +++ b/website/docs/r/onboarding_catalog_plan.html.markdown @@ -189,6 +189,8 @@ After your resource is created, you can read values from the listed arguments an * `id` - The unique identifier of the onboarding_catalog_plan. * `catalog_plan_id` - (String) The ID of a global catalog object. +* `geo_tags` - (List) + * Constraints: The list items must match regular expression `/./`. The maximum length is `1000` items. The minimum length is `0` items. * `url` - (String) The global catalog URL of your product. diff --git a/website/docs/r/onboarding_catalog_product.html.markdown b/website/docs/r/onboarding_catalog_product.html.markdown index ba3b6f750c0..abe8f246d94 100644 --- a/website/docs/r/onboarding_catalog_product.html.markdown +++ b/website/docs/r/onboarding_catalog_product.html.markdown @@ -61,6 +61,112 @@ resource "ibm_onboarding_catalog_product" "onboarding_catalog_product_instance" bindable = true plan_updateable = true service_key_supported = true + unique_api_key = true + parameters { + displayname = "displayname" + name = "name" + type = "text" + options { + displayname = "displayname" + value = "value" + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } + value = [ "value" ] + layout = "layout" + associations = { "key" = "anything as a string" } + validation_url = "validation_url" + options_url = "options_url" + invalidmessage = "invalidmessage" + description = "description" + required = true + pattern = "pattern" + placeholder = "placeholder" + readonly = true + hidden = true + i18n { + en { + displayname = "displayname" + description = "description" + } + de { + displayname = "displayname" + description = "description" + } + es { + displayname = "displayname" + description = "description" + } + fr { + displayname = "displayname" + description = "description" + } + it { + displayname = "displayname" + description = "description" + } + ja { + displayname = "displayname" + description = "description" + } + ko { + displayname = "displayname" + description = "description" + } + pt_br { + displayname = "displayname" + description = "description" + } + zh_tw { + displayname = "displayname" + description = "description" + } + zh_cn { + displayname = "displayname" + description = "description" + } + } + } } other { pc { @@ -210,9 +316,170 @@ Nested schema for **metadata**: Nested schema for **service**: * `bindable` - (Optional, Boolean) Deprecated. Controls the Connections tab on the Resource Details page. * `iam_compatible` - (Optional, Boolean) Whether the service is compatible with the IAM service. + * `parameters` - (Optional, List) + * Constraints: The maximum length is `1000` items. The minimum length is `0` items. + Nested schema for **parameters**: + * `associations` - (Optional, Map) A JSON structure to describe the interactions with pricing plans and/or other custom parameters. + * `description` - (Optional, String) The description of the parameter that is displayed to help users with the value of the parameter. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `displayname` - (Optional, String) The display name for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `hidden` - (Optional, Boolean) Indicates whether the custom parameters is hidden required or not. + * `i18n` - (Optional, List) The description for the object. + Nested schema for **i18n**: + * `de` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **de**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `en` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **en**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `es` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **es**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `fr` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **fr**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `it` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **it**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ja` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ja**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ko` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ko**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `pt_br` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **pt_br**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_cn` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_cn**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_tw` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_tw**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `invalidmessage` - (Optional, String) The message that appears when the content of the text box is invalid. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `layout` - (Optional, String) Specifies the layout of check box or radio input types. When unspecified, the default layout is horizontal. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `name` - (Optional, String) The key of the parameter. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `options` - (Optional, List) + * Constraints: The maximum length is `1000` items. The minimum length is `0` items. + Nested schema for **options**: + * `displayname` - (Optional, String) The display name for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `i18n` - (Optional, List) The description for the object. + Nested schema for **i18n**: + * `de` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **de**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `en` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **en**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `es` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **es**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `fr` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **fr**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `it` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **it**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ja` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ja**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `ko` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **ko**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `pt_br` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **pt_br**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_cn` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_cn**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `zh_tw` - (Optional, List) The translations for custom service parameter display name and description. + Nested schema for **zh_tw**: + * `description` - (Optional, String) The translations for custom service parameter description. + * Constraints: The maximum length is `20000` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `displayname` - (Optional, String) The translations for custom service parameter display name. + * Constraints: The maximum length is `256` characters. The minimum length is `0` characters. The value must match regular expression `/./`. + * `value` - (Optional, String) The value for custom service parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/./`. + * `options_url` - (Optional, String) The options URL for custom service parameters. + * Constraints: The maximum length is `2083` characters. The minimum length is `1` character. The value must match regular expression `/^(?!mailto:)(?:(?:http|https|ftp):\/\/)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(\/|\\?|#)[^\\s]*)?$/`. + * `pattern` - (Optional, String) A regular expression that the value is checked against. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/./`. + * `placeholder` - (Optional, String) The placeholder text for custom parameters. + * Constraints: The maximum length is `2000` characters. The minimum length is `1` character. The value must match regular expression `/^[ -~\\s]*$/`. + * `readonly` - (Optional, Boolean) A boolean value that indicates whether the value of the parameter is displayed only and cannot be changed by users. The default value is false. + * `required` - (Optional, Boolean) A boolean value that indicates whether the parameter must be entered in the IBM Cloud user interface. + * `type` - (Optional, String) The type of custom service parameters. + * Constraints: Allowable values are: `text`, `textarea`, `dropdown`, `number`, `password`, `combo`, `checkbox`, `radio`, `multiselect`, `resource_group`, `vcenter_datastore`, `region`, `secret`, `cluster_namespace`. + * `validation_url` - (Optional, String) The validation URL for custom service parameters. + * Constraints: The maximum length is `2083` characters. The minimum length is `1` character. The value must match regular expression `/^(?!mailto:)(?:(?:http|https|ftp):\/\/)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(\/|\\?|#)[^\\s]*)?$/`. + * `value` - (Optional, List) + * Constraints: The list items must match regular expression `/^[ -~\\s]*$/`. The maximum length is `1000` items. The minimum length is `0` items. * `plan_updateable` - (Optional, Boolean) Indicates plan update support and controls the Plan tab on the Resource Details page. * `rc_provisionable` - (Optional, Boolean) Whether the service is provisionable by the resource controller service. * `service_key_supported` - (Optional, Boolean) Indicates service credentials support and controls the Service Credential tab on Resource Details page. + * `unique_api_key` - (Optional, Boolean) Indicates that the deployment uses an unique api key or not. * `ui` - (Optional, List) The UI metadata of this service. Nested schema for **ui**: * `hidden` - (Optional, Boolean) Whether the object is hidden from the consumption catalog. @@ -285,6 +552,8 @@ After your resource is created, you can read values from the listed arguments an * `id` - The unique identifier of the onboarding_catalog_product. * `catalog_product_id` - (String) The ID of a global catalog object. +* `geo_tags` - (List) + * Constraints: The list items must match regular expression `/./`. The maximum length is `1000` items. The minimum length is `0` items. * `url` - (String) The global catalog URL of your product. @@ -294,12 +563,12 @@ You can import the `ibm_onboarding_catalog_product` resource by using `id`. The `id` property can be formed from `product_id`, and `catalog_product_id` in the following format: <pre> -<product_id>/<catalog_product_id> + product_id/catalog_product_id; </pre> * `product_id`: A string. The unique ID of the product. * `catalog_product_id`: A string. The ID of a global catalog object. # Syntax <pre> -$ terraform import ibm_onboarding_catalog_product.onboarding_catalog_product <product_id>/<catalog_product_id> +$ terraform import ibm_onboarding_catalog_product.onboarding_catalog_product product_id/catalog_product_id; </pre> diff --git a/website/docs/r/onboarding_iam_registration.html.markdown b/website/docs/r/onboarding_iam_registration.html.markdown index 9e81090c0e6..9251f511050 100644 --- a/website/docs/r/onboarding_iam_registration.html.markdown +++ b/website/docs/r/onboarding_iam_registration.html.markdown @@ -545,7 +545,7 @@ You can import the `ibm_onboarding_iam_registration` resource by using `name`. The `name` property can be formed from `product_id`, and `name` in the following format: <pre> -<product_id>/<name> +<product_id/name </pre> * `product_id`: A string. The unique ID of the product. * `name`: A string in the format `pet-store`. The IAM registration name, which must be the programmatic name of the product.