func ClusterToUnstructured()

in unstructured/google/dataproc/alpha/cluster.go [28:761]


func ClusterToUnstructured(r *dclService.Cluster) *unstructured.Resource {
	u := &unstructured.Resource{
		STV: unstructured.ServiceTypeVersion{
			Service: "dataproc",
			Version: "alpha",
			Type:    "Cluster",
		},
		Object: make(map[string]interface{}),
	}
	if r.ClusterUuid != nil {
		u.Object["clusterUuid"] = *r.ClusterUuid
	}
	if r.Config != nil && r.Config != dclService.EmptyClusterConfig {
		rConfig := make(map[string]interface{})
		if r.Config.AutoscalingConfig != nil && r.Config.AutoscalingConfig != dclService.EmptyClusterConfigAutoscalingConfig {
			rConfigAutoscalingConfig := make(map[string]interface{})
			if r.Config.AutoscalingConfig.Policy != nil {
				rConfigAutoscalingConfig["policy"] = *r.Config.AutoscalingConfig.Policy
			}
			rConfig["autoscalingConfig"] = rConfigAutoscalingConfig
		}
		if r.Config.DataprocMetricConfig != nil && r.Config.DataprocMetricConfig != dclService.EmptyClusterConfigDataprocMetricConfig {
			rConfigDataprocMetricConfig := make(map[string]interface{})
			var rConfigDataprocMetricConfigMetrics []interface{}
			for _, rConfigDataprocMetricConfigMetricsVal := range r.Config.DataprocMetricConfig.Metrics {
				rConfigDataprocMetricConfigMetricsObject := make(map[string]interface{})
				var rConfigDataprocMetricConfigMetricsValMetricOverrides []interface{}
				for _, rConfigDataprocMetricConfigMetricsValMetricOverridesVal := range rConfigDataprocMetricConfigMetricsVal.MetricOverrides {
					rConfigDataprocMetricConfigMetricsValMetricOverrides = append(rConfigDataprocMetricConfigMetricsValMetricOverrides, rConfigDataprocMetricConfigMetricsValMetricOverridesVal)
				}
				rConfigDataprocMetricConfigMetricsObject["metricOverrides"] = rConfigDataprocMetricConfigMetricsValMetricOverrides
				if rConfigDataprocMetricConfigMetricsVal.MetricSource != nil {
					rConfigDataprocMetricConfigMetricsObject["metricSource"] = string(*rConfigDataprocMetricConfigMetricsVal.MetricSource)
				}
				rConfigDataprocMetricConfigMetrics = append(rConfigDataprocMetricConfigMetrics, rConfigDataprocMetricConfigMetricsObject)
			}
			rConfigDataprocMetricConfig["metrics"] = rConfigDataprocMetricConfigMetrics
			rConfig["dataprocMetricConfig"] = rConfigDataprocMetricConfig
		}
		if r.Config.EncryptionConfig != nil && r.Config.EncryptionConfig != dclService.EmptyClusterConfigEncryptionConfig {
			rConfigEncryptionConfig := make(map[string]interface{})
			if r.Config.EncryptionConfig.GcePdKmsKeyName != nil {
				rConfigEncryptionConfig["gcePdKmsKeyName"] = *r.Config.EncryptionConfig.GcePdKmsKeyName
			}
			rConfig["encryptionConfig"] = rConfigEncryptionConfig
		}
		if r.Config.EndpointConfig != nil && r.Config.EndpointConfig != dclService.EmptyClusterConfigEndpointConfig {
			rConfigEndpointConfig := make(map[string]interface{})
			if r.Config.EndpointConfig.EnableHttpPortAccess != nil {
				rConfigEndpointConfig["enableHttpPortAccess"] = *r.Config.EndpointConfig.EnableHttpPortAccess
			}
			if r.Config.EndpointConfig.HttpPorts != nil {
				rConfigEndpointConfigHttpPorts := make(map[string]interface{})
				for k, v := range r.Config.EndpointConfig.HttpPorts {
					rConfigEndpointConfigHttpPorts[k] = v
				}
				rConfigEndpointConfig["httpPorts"] = rConfigEndpointConfigHttpPorts
			}
			rConfig["endpointConfig"] = rConfigEndpointConfig
		}
		if r.Config.GceClusterConfig != nil && r.Config.GceClusterConfig != dclService.EmptyClusterConfigGceClusterConfig {
			rConfigGceClusterConfig := make(map[string]interface{})
			if r.Config.GceClusterConfig.ConfidentialInstanceConfig != nil && r.Config.GceClusterConfig.ConfidentialInstanceConfig != dclService.EmptyClusterConfigGceClusterConfigConfidentialInstanceConfig {
				rConfigGceClusterConfigConfidentialInstanceConfig := make(map[string]interface{})
				if r.Config.GceClusterConfig.ConfidentialInstanceConfig.EnableConfidentialCompute != nil {
					rConfigGceClusterConfigConfidentialInstanceConfig["enableConfidentialCompute"] = *r.Config.GceClusterConfig.ConfidentialInstanceConfig.EnableConfidentialCompute
				}
				rConfigGceClusterConfig["confidentialInstanceConfig"] = rConfigGceClusterConfigConfidentialInstanceConfig
			}
			if r.Config.GceClusterConfig.InternalIPOnly != nil {
				rConfigGceClusterConfig["internalIPOnly"] = *r.Config.GceClusterConfig.InternalIPOnly
			}
			if r.Config.GceClusterConfig.Metadata != nil {
				rConfigGceClusterConfigMetadata := make(map[string]interface{})
				for k, v := range r.Config.GceClusterConfig.Metadata {
					rConfigGceClusterConfigMetadata[k] = v
				}
				rConfigGceClusterConfig["metadata"] = rConfigGceClusterConfigMetadata
			}
			if r.Config.GceClusterConfig.Network != nil {
				rConfigGceClusterConfig["network"] = *r.Config.GceClusterConfig.Network
			}
			if r.Config.GceClusterConfig.NodeGroupAffinity != nil && r.Config.GceClusterConfig.NodeGroupAffinity != dclService.EmptyClusterConfigGceClusterConfigNodeGroupAffinity {
				rConfigGceClusterConfigNodeGroupAffinity := make(map[string]interface{})
				if r.Config.GceClusterConfig.NodeGroupAffinity.NodeGroup != nil {
					rConfigGceClusterConfigNodeGroupAffinity["nodeGroup"] = *r.Config.GceClusterConfig.NodeGroupAffinity.NodeGroup
				}
				rConfigGceClusterConfig["nodeGroupAffinity"] = rConfigGceClusterConfigNodeGroupAffinity
			}
			if r.Config.GceClusterConfig.PrivateIPv6GoogleAccess != nil {
				rConfigGceClusterConfig["privateIPv6GoogleAccess"] = string(*r.Config.GceClusterConfig.PrivateIPv6GoogleAccess)
			}
			if r.Config.GceClusterConfig.ReservationAffinity != nil && r.Config.GceClusterConfig.ReservationAffinity != dclService.EmptyClusterConfigGceClusterConfigReservationAffinity {
				rConfigGceClusterConfigReservationAffinity := make(map[string]interface{})
				if r.Config.GceClusterConfig.ReservationAffinity.ConsumeReservationType != nil {
					rConfigGceClusterConfigReservationAffinity["consumeReservationType"] = string(*r.Config.GceClusterConfig.ReservationAffinity.ConsumeReservationType)
				}
				if r.Config.GceClusterConfig.ReservationAffinity.Key != nil {
					rConfigGceClusterConfigReservationAffinity["key"] = *r.Config.GceClusterConfig.ReservationAffinity.Key
				}
				var rConfigGceClusterConfigReservationAffinityValues []interface{}
				for _, rConfigGceClusterConfigReservationAffinityValuesVal := range r.Config.GceClusterConfig.ReservationAffinity.Values {
					rConfigGceClusterConfigReservationAffinityValues = append(rConfigGceClusterConfigReservationAffinityValues, rConfigGceClusterConfigReservationAffinityValuesVal)
				}
				rConfigGceClusterConfigReservationAffinity["values"] = rConfigGceClusterConfigReservationAffinityValues
				rConfigGceClusterConfig["reservationAffinity"] = rConfigGceClusterConfigReservationAffinity
			}
			if r.Config.GceClusterConfig.ServiceAccount != nil {
				rConfigGceClusterConfig["serviceAccount"] = *r.Config.GceClusterConfig.ServiceAccount
			}
			var rConfigGceClusterConfigServiceAccountScopes []interface{}
			for _, rConfigGceClusterConfigServiceAccountScopesVal := range r.Config.GceClusterConfig.ServiceAccountScopes {
				rConfigGceClusterConfigServiceAccountScopes = append(rConfigGceClusterConfigServiceAccountScopes, rConfigGceClusterConfigServiceAccountScopesVal)
			}
			rConfigGceClusterConfig["serviceAccountScopes"] = rConfigGceClusterConfigServiceAccountScopes
			if r.Config.GceClusterConfig.ShieldedInstanceConfig != nil && r.Config.GceClusterConfig.ShieldedInstanceConfig != dclService.EmptyClusterConfigGceClusterConfigShieldedInstanceConfig {
				rConfigGceClusterConfigShieldedInstanceConfig := make(map[string]interface{})
				if r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableIntegrityMonitoring != nil {
					rConfigGceClusterConfigShieldedInstanceConfig["enableIntegrityMonitoring"] = *r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableIntegrityMonitoring
				}
				if r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableSecureBoot != nil {
					rConfigGceClusterConfigShieldedInstanceConfig["enableSecureBoot"] = *r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableSecureBoot
				}
				if r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableVtpm != nil {
					rConfigGceClusterConfigShieldedInstanceConfig["enableVtpm"] = *r.Config.GceClusterConfig.ShieldedInstanceConfig.EnableVtpm
				}
				rConfigGceClusterConfig["shieldedInstanceConfig"] = rConfigGceClusterConfigShieldedInstanceConfig
			}
			if r.Config.GceClusterConfig.Subnetwork != nil {
				rConfigGceClusterConfig["subnetwork"] = *r.Config.GceClusterConfig.Subnetwork
			}
			var rConfigGceClusterConfigTags []interface{}
			for _, rConfigGceClusterConfigTagsVal := range r.Config.GceClusterConfig.Tags {
				rConfigGceClusterConfigTags = append(rConfigGceClusterConfigTags, rConfigGceClusterConfigTagsVal)
			}
			rConfigGceClusterConfig["tags"] = rConfigGceClusterConfigTags
			if r.Config.GceClusterConfig.Zone != nil {
				rConfigGceClusterConfig["zone"] = *r.Config.GceClusterConfig.Zone
			}
			rConfig["gceClusterConfig"] = rConfigGceClusterConfig
		}
		if r.Config.GkeClusterConfig != nil && r.Config.GkeClusterConfig != dclService.EmptyClusterConfigGkeClusterConfig {
			rConfigGkeClusterConfig := make(map[string]interface{})
			if r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget != nil && r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget != dclService.EmptyClusterConfigGkeClusterConfigNamespacedGkeDeploymentTarget {
				rConfigGkeClusterConfigNamespacedGkeDeploymentTarget := make(map[string]interface{})
				if r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget.ClusterNamespace != nil {
					rConfigGkeClusterConfigNamespacedGkeDeploymentTarget["clusterNamespace"] = *r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget.ClusterNamespace
				}
				if r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget.TargetGkeCluster != nil {
					rConfigGkeClusterConfigNamespacedGkeDeploymentTarget["targetGkeCluster"] = *r.Config.GkeClusterConfig.NamespacedGkeDeploymentTarget.TargetGkeCluster
				}
				rConfigGkeClusterConfig["namespacedGkeDeploymentTarget"] = rConfigGkeClusterConfigNamespacedGkeDeploymentTarget
			}
			rConfig["gkeClusterConfig"] = rConfigGkeClusterConfig
		}
		var rConfigInitializationActions []interface{}
		for _, rConfigInitializationActionsVal := range r.Config.InitializationActions {
			rConfigInitializationActionsObject := make(map[string]interface{})
			if rConfigInitializationActionsVal.ExecutableFile != nil {
				rConfigInitializationActionsObject["executableFile"] = *rConfigInitializationActionsVal.ExecutableFile
			}
			if rConfigInitializationActionsVal.ExecutionTimeout != nil {
				rConfigInitializationActionsObject["executionTimeout"] = *rConfigInitializationActionsVal.ExecutionTimeout
			}
			rConfigInitializationActions = append(rConfigInitializationActions, rConfigInitializationActionsObject)
		}
		rConfig["initializationActions"] = rConfigInitializationActions
		if r.Config.LifecycleConfig != nil && r.Config.LifecycleConfig != dclService.EmptyClusterConfigLifecycleConfig {
			rConfigLifecycleConfig := make(map[string]interface{})
			if r.Config.LifecycleConfig.AutoDeleteTime != nil {
				rConfigLifecycleConfig["autoDeleteTime"] = *r.Config.LifecycleConfig.AutoDeleteTime
			}
			if r.Config.LifecycleConfig.AutoDeleteTtl != nil {
				rConfigLifecycleConfig["autoDeleteTtl"] = *r.Config.LifecycleConfig.AutoDeleteTtl
			}
			if r.Config.LifecycleConfig.IdleDeleteTtl != nil {
				rConfigLifecycleConfig["idleDeleteTtl"] = *r.Config.LifecycleConfig.IdleDeleteTtl
			}
			if r.Config.LifecycleConfig.IdleStartTime != nil {
				rConfigLifecycleConfig["idleStartTime"] = *r.Config.LifecycleConfig.IdleStartTime
			}
			rConfig["lifecycleConfig"] = rConfigLifecycleConfig
		}
		if r.Config.MasterConfig != nil && r.Config.MasterConfig != dclService.EmptyClusterConfigMasterConfig {
			rConfigMasterConfig := make(map[string]interface{})
			var rConfigMasterConfigAccelerators []interface{}
			for _, rConfigMasterConfigAcceleratorsVal := range r.Config.MasterConfig.Accelerators {
				rConfigMasterConfigAcceleratorsObject := make(map[string]interface{})
				if rConfigMasterConfigAcceleratorsVal.AcceleratorCount != nil {
					rConfigMasterConfigAcceleratorsObject["acceleratorCount"] = *rConfigMasterConfigAcceleratorsVal.AcceleratorCount
				}
				if rConfigMasterConfigAcceleratorsVal.AcceleratorType != nil {
					rConfigMasterConfigAcceleratorsObject["acceleratorType"] = *rConfigMasterConfigAcceleratorsVal.AcceleratorType
				}
				rConfigMasterConfigAccelerators = append(rConfigMasterConfigAccelerators, rConfigMasterConfigAcceleratorsObject)
			}
			rConfigMasterConfig["accelerators"] = rConfigMasterConfigAccelerators
			if r.Config.MasterConfig.DiskConfig != nil && r.Config.MasterConfig.DiskConfig != dclService.EmptyClusterConfigMasterConfigDiskConfig {
				rConfigMasterConfigDiskConfig := make(map[string]interface{})
				if r.Config.MasterConfig.DiskConfig.BootDiskSizeGb != nil {
					rConfigMasterConfigDiskConfig["bootDiskSizeGb"] = *r.Config.MasterConfig.DiskConfig.BootDiskSizeGb
				}
				if r.Config.MasterConfig.DiskConfig.BootDiskType != nil {
					rConfigMasterConfigDiskConfig["bootDiskType"] = *r.Config.MasterConfig.DiskConfig.BootDiskType
				}
				if r.Config.MasterConfig.DiskConfig.LocalSsdInterface != nil {
					rConfigMasterConfigDiskConfig["localSsdInterface"] = *r.Config.MasterConfig.DiskConfig.LocalSsdInterface
				}
				if r.Config.MasterConfig.DiskConfig.NumLocalSsds != nil {
					rConfigMasterConfigDiskConfig["numLocalSsds"] = *r.Config.MasterConfig.DiskConfig.NumLocalSsds
				}
				rConfigMasterConfig["diskConfig"] = rConfigMasterConfigDiskConfig
			}
			if r.Config.MasterConfig.Image != nil {
				rConfigMasterConfig["image"] = *r.Config.MasterConfig.Image
			}
			var rConfigMasterConfigInstanceNames []interface{}
			for _, rConfigMasterConfigInstanceNamesVal := range r.Config.MasterConfig.InstanceNames {
				rConfigMasterConfigInstanceNames = append(rConfigMasterConfigInstanceNames, rConfigMasterConfigInstanceNamesVal)
			}
			rConfigMasterConfig["instanceNames"] = rConfigMasterConfigInstanceNames
			var rConfigMasterConfigInstanceReferences []interface{}
			for _, rConfigMasterConfigInstanceReferencesVal := range r.Config.MasterConfig.InstanceReferences {
				rConfigMasterConfigInstanceReferencesObject := make(map[string]interface{})
				if rConfigMasterConfigInstanceReferencesVal.InstanceId != nil {
					rConfigMasterConfigInstanceReferencesObject["instanceId"] = *rConfigMasterConfigInstanceReferencesVal.InstanceId
				}
				if rConfigMasterConfigInstanceReferencesVal.InstanceName != nil {
					rConfigMasterConfigInstanceReferencesObject["instanceName"] = *rConfigMasterConfigInstanceReferencesVal.InstanceName
				}
				if rConfigMasterConfigInstanceReferencesVal.PublicEciesKey != nil {
					rConfigMasterConfigInstanceReferencesObject["publicEciesKey"] = *rConfigMasterConfigInstanceReferencesVal.PublicEciesKey
				}
				if rConfigMasterConfigInstanceReferencesVal.PublicKey != nil {
					rConfigMasterConfigInstanceReferencesObject["publicKey"] = *rConfigMasterConfigInstanceReferencesVal.PublicKey
				}
				rConfigMasterConfigInstanceReferences = append(rConfigMasterConfigInstanceReferences, rConfigMasterConfigInstanceReferencesObject)
			}
			rConfigMasterConfig["instanceReferences"] = rConfigMasterConfigInstanceReferences
			if r.Config.MasterConfig.IsPreemptible != nil {
				rConfigMasterConfig["isPreemptible"] = *r.Config.MasterConfig.IsPreemptible
			}
			if r.Config.MasterConfig.MachineType != nil {
				rConfigMasterConfig["machineType"] = *r.Config.MasterConfig.MachineType
			}
			if r.Config.MasterConfig.ManagedGroupConfig != nil && r.Config.MasterConfig.ManagedGroupConfig != dclService.EmptyClusterConfigMasterConfigManagedGroupConfig {
				rConfigMasterConfigManagedGroupConfig := make(map[string]interface{})
				if r.Config.MasterConfig.ManagedGroupConfig.InstanceGroupManagerName != nil {
					rConfigMasterConfigManagedGroupConfig["instanceGroupManagerName"] = *r.Config.MasterConfig.ManagedGroupConfig.InstanceGroupManagerName
				}
				if r.Config.MasterConfig.ManagedGroupConfig.InstanceTemplateName != nil {
					rConfigMasterConfigManagedGroupConfig["instanceTemplateName"] = *r.Config.MasterConfig.ManagedGroupConfig.InstanceTemplateName
				}
				rConfigMasterConfig["managedGroupConfig"] = rConfigMasterConfigManagedGroupConfig
			}
			if r.Config.MasterConfig.MinCpuPlatform != nil {
				rConfigMasterConfig["minCpuPlatform"] = *r.Config.MasterConfig.MinCpuPlatform
			}
			if r.Config.MasterConfig.NumInstances != nil {
				rConfigMasterConfig["numInstances"] = *r.Config.MasterConfig.NumInstances
			}
			if r.Config.MasterConfig.Preemptibility != nil {
				rConfigMasterConfig["preemptibility"] = string(*r.Config.MasterConfig.Preemptibility)
			}
			rConfig["masterConfig"] = rConfigMasterConfig
		}
		if r.Config.MetastoreConfig != nil && r.Config.MetastoreConfig != dclService.EmptyClusterConfigMetastoreConfig {
			rConfigMetastoreConfig := make(map[string]interface{})
			if r.Config.MetastoreConfig.DataprocMetastoreService != nil {
				rConfigMetastoreConfig["dataprocMetastoreService"] = *r.Config.MetastoreConfig.DataprocMetastoreService
			}
			rConfig["metastoreConfig"] = rConfigMetastoreConfig
		}
		if r.Config.SecondaryWorkerConfig != nil && r.Config.SecondaryWorkerConfig != dclService.EmptyClusterConfigSecondaryWorkerConfig {
			rConfigSecondaryWorkerConfig := make(map[string]interface{})
			var rConfigSecondaryWorkerConfigAccelerators []interface{}
			for _, rConfigSecondaryWorkerConfigAcceleratorsVal := range r.Config.SecondaryWorkerConfig.Accelerators {
				rConfigSecondaryWorkerConfigAcceleratorsObject := make(map[string]interface{})
				if rConfigSecondaryWorkerConfigAcceleratorsVal.AcceleratorCount != nil {
					rConfigSecondaryWorkerConfigAcceleratorsObject["acceleratorCount"] = *rConfigSecondaryWorkerConfigAcceleratorsVal.AcceleratorCount
				}
				if rConfigSecondaryWorkerConfigAcceleratorsVal.AcceleratorType != nil {
					rConfigSecondaryWorkerConfigAcceleratorsObject["acceleratorType"] = *rConfigSecondaryWorkerConfigAcceleratorsVal.AcceleratorType
				}
				rConfigSecondaryWorkerConfigAccelerators = append(rConfigSecondaryWorkerConfigAccelerators, rConfigSecondaryWorkerConfigAcceleratorsObject)
			}
			rConfigSecondaryWorkerConfig["accelerators"] = rConfigSecondaryWorkerConfigAccelerators
			if r.Config.SecondaryWorkerConfig.DiskConfig != nil && r.Config.SecondaryWorkerConfig.DiskConfig != dclService.EmptyClusterConfigSecondaryWorkerConfigDiskConfig {
				rConfigSecondaryWorkerConfigDiskConfig := make(map[string]interface{})
				if r.Config.SecondaryWorkerConfig.DiskConfig.BootDiskSizeGb != nil {
					rConfigSecondaryWorkerConfigDiskConfig["bootDiskSizeGb"] = *r.Config.SecondaryWorkerConfig.DiskConfig.BootDiskSizeGb
				}
				if r.Config.SecondaryWorkerConfig.DiskConfig.BootDiskType != nil {
					rConfigSecondaryWorkerConfigDiskConfig["bootDiskType"] = *r.Config.SecondaryWorkerConfig.DiskConfig.BootDiskType
				}
				if r.Config.SecondaryWorkerConfig.DiskConfig.LocalSsdInterface != nil {
					rConfigSecondaryWorkerConfigDiskConfig["localSsdInterface"] = *r.Config.SecondaryWorkerConfig.DiskConfig.LocalSsdInterface
				}
				if r.Config.SecondaryWorkerConfig.DiskConfig.NumLocalSsds != nil {
					rConfigSecondaryWorkerConfigDiskConfig["numLocalSsds"] = *r.Config.SecondaryWorkerConfig.DiskConfig.NumLocalSsds
				}
				rConfigSecondaryWorkerConfig["diskConfig"] = rConfigSecondaryWorkerConfigDiskConfig
			}
			if r.Config.SecondaryWorkerConfig.Image != nil {
				rConfigSecondaryWorkerConfig["image"] = *r.Config.SecondaryWorkerConfig.Image
			}
			var rConfigSecondaryWorkerConfigInstanceNames []interface{}
			for _, rConfigSecondaryWorkerConfigInstanceNamesVal := range r.Config.SecondaryWorkerConfig.InstanceNames {
				rConfigSecondaryWorkerConfigInstanceNames = append(rConfigSecondaryWorkerConfigInstanceNames, rConfigSecondaryWorkerConfigInstanceNamesVal)
			}
			rConfigSecondaryWorkerConfig["instanceNames"] = rConfigSecondaryWorkerConfigInstanceNames
			var rConfigSecondaryWorkerConfigInstanceReferences []interface{}
			for _, rConfigSecondaryWorkerConfigInstanceReferencesVal := range r.Config.SecondaryWorkerConfig.InstanceReferences {
				rConfigSecondaryWorkerConfigInstanceReferencesObject := make(map[string]interface{})
				if rConfigSecondaryWorkerConfigInstanceReferencesVal.InstanceId != nil {
					rConfigSecondaryWorkerConfigInstanceReferencesObject["instanceId"] = *rConfigSecondaryWorkerConfigInstanceReferencesVal.InstanceId
				}
				if rConfigSecondaryWorkerConfigInstanceReferencesVal.InstanceName != nil {
					rConfigSecondaryWorkerConfigInstanceReferencesObject["instanceName"] = *rConfigSecondaryWorkerConfigInstanceReferencesVal.InstanceName
				}
				if rConfigSecondaryWorkerConfigInstanceReferencesVal.PublicEciesKey != nil {
					rConfigSecondaryWorkerConfigInstanceReferencesObject["publicEciesKey"] = *rConfigSecondaryWorkerConfigInstanceReferencesVal.PublicEciesKey
				}
				if rConfigSecondaryWorkerConfigInstanceReferencesVal.PublicKey != nil {
					rConfigSecondaryWorkerConfigInstanceReferencesObject["publicKey"] = *rConfigSecondaryWorkerConfigInstanceReferencesVal.PublicKey
				}
				rConfigSecondaryWorkerConfigInstanceReferences = append(rConfigSecondaryWorkerConfigInstanceReferences, rConfigSecondaryWorkerConfigInstanceReferencesObject)
			}
			rConfigSecondaryWorkerConfig["instanceReferences"] = rConfigSecondaryWorkerConfigInstanceReferences
			if r.Config.SecondaryWorkerConfig.IsPreemptible != nil {
				rConfigSecondaryWorkerConfig["isPreemptible"] = *r.Config.SecondaryWorkerConfig.IsPreemptible
			}
			if r.Config.SecondaryWorkerConfig.MachineType != nil {
				rConfigSecondaryWorkerConfig["machineType"] = *r.Config.SecondaryWorkerConfig.MachineType
			}
			if r.Config.SecondaryWorkerConfig.ManagedGroupConfig != nil && r.Config.SecondaryWorkerConfig.ManagedGroupConfig != dclService.EmptyClusterConfigSecondaryWorkerConfigManagedGroupConfig {
				rConfigSecondaryWorkerConfigManagedGroupConfig := make(map[string]interface{})
				if r.Config.SecondaryWorkerConfig.ManagedGroupConfig.InstanceGroupManagerName != nil {
					rConfigSecondaryWorkerConfigManagedGroupConfig["instanceGroupManagerName"] = *r.Config.SecondaryWorkerConfig.ManagedGroupConfig.InstanceGroupManagerName
				}
				if r.Config.SecondaryWorkerConfig.ManagedGroupConfig.InstanceTemplateName != nil {
					rConfigSecondaryWorkerConfigManagedGroupConfig["instanceTemplateName"] = *r.Config.SecondaryWorkerConfig.ManagedGroupConfig.InstanceTemplateName
				}
				rConfigSecondaryWorkerConfig["managedGroupConfig"] = rConfigSecondaryWorkerConfigManagedGroupConfig
			}
			if r.Config.SecondaryWorkerConfig.MinCpuPlatform != nil {
				rConfigSecondaryWorkerConfig["minCpuPlatform"] = *r.Config.SecondaryWorkerConfig.MinCpuPlatform
			}
			if r.Config.SecondaryWorkerConfig.NumInstances != nil {
				rConfigSecondaryWorkerConfig["numInstances"] = *r.Config.SecondaryWorkerConfig.NumInstances
			}
			if r.Config.SecondaryWorkerConfig.Preemptibility != nil {
				rConfigSecondaryWorkerConfig["preemptibility"] = string(*r.Config.SecondaryWorkerConfig.Preemptibility)
			}
			rConfig["secondaryWorkerConfig"] = rConfigSecondaryWorkerConfig
		}
		if r.Config.SecurityConfig != nil && r.Config.SecurityConfig != dclService.EmptyClusterConfigSecurityConfig {
			rConfigSecurityConfig := make(map[string]interface{})
			if r.Config.SecurityConfig.IdentityConfig != nil && r.Config.SecurityConfig.IdentityConfig != dclService.EmptyClusterConfigSecurityConfigIdentityConfig {
				rConfigSecurityConfigIdentityConfig := make(map[string]interface{})
				if r.Config.SecurityConfig.IdentityConfig.UserServiceAccountMapping != nil {
					rConfigSecurityConfigIdentityConfigUserServiceAccountMapping := make(map[string]interface{})
					for k, v := range r.Config.SecurityConfig.IdentityConfig.UserServiceAccountMapping {
						rConfigSecurityConfigIdentityConfigUserServiceAccountMapping[k] = v
					}
					rConfigSecurityConfigIdentityConfig["userServiceAccountMapping"] = rConfigSecurityConfigIdentityConfigUserServiceAccountMapping
				}
				rConfigSecurityConfig["identityConfig"] = rConfigSecurityConfigIdentityConfig
			}
			if r.Config.SecurityConfig.KerberosConfig != nil && r.Config.SecurityConfig.KerberosConfig != dclService.EmptyClusterConfigSecurityConfigKerberosConfig {
				rConfigSecurityConfigKerberosConfig := make(map[string]interface{})
				if r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustAdminServer != nil {
					rConfigSecurityConfigKerberosConfig["crossRealmTrustAdminServer"] = *r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustAdminServer
				}
				if r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustKdc != nil {
					rConfigSecurityConfigKerberosConfig["crossRealmTrustKdc"] = *r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustKdc
				}
				if r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustRealm != nil {
					rConfigSecurityConfigKerberosConfig["crossRealmTrustRealm"] = *r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustRealm
				}
				if r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustSharedPassword != nil {
					rConfigSecurityConfigKerberosConfig["crossRealmTrustSharedPassword"] = *r.Config.SecurityConfig.KerberosConfig.CrossRealmTrustSharedPassword
				}
				if r.Config.SecurityConfig.KerberosConfig.EnableKerberos != nil {
					rConfigSecurityConfigKerberosConfig["enableKerberos"] = *r.Config.SecurityConfig.KerberosConfig.EnableKerberos
				}
				if r.Config.SecurityConfig.KerberosConfig.KdcDbKey != nil {
					rConfigSecurityConfigKerberosConfig["kdcDbKey"] = *r.Config.SecurityConfig.KerberosConfig.KdcDbKey
				}
				if r.Config.SecurityConfig.KerberosConfig.KeyPassword != nil {
					rConfigSecurityConfigKerberosConfig["keyPassword"] = *r.Config.SecurityConfig.KerberosConfig.KeyPassword
				}
				if r.Config.SecurityConfig.KerberosConfig.Keystore != nil {
					rConfigSecurityConfigKerberosConfig["keystore"] = *r.Config.SecurityConfig.KerberosConfig.Keystore
				}
				if r.Config.SecurityConfig.KerberosConfig.KeystorePassword != nil {
					rConfigSecurityConfigKerberosConfig["keystorePassword"] = *r.Config.SecurityConfig.KerberosConfig.KeystorePassword
				}
				if r.Config.SecurityConfig.KerberosConfig.KmsKey != nil {
					rConfigSecurityConfigKerberosConfig["kmsKey"] = *r.Config.SecurityConfig.KerberosConfig.KmsKey
				}
				if r.Config.SecurityConfig.KerberosConfig.Realm != nil {
					rConfigSecurityConfigKerberosConfig["realm"] = *r.Config.SecurityConfig.KerberosConfig.Realm
				}
				if r.Config.SecurityConfig.KerberosConfig.RootPrincipalPassword != nil {
					rConfigSecurityConfigKerberosConfig["rootPrincipalPassword"] = *r.Config.SecurityConfig.KerberosConfig.RootPrincipalPassword
				}
				if r.Config.SecurityConfig.KerberosConfig.TgtLifetimeHours != nil {
					rConfigSecurityConfigKerberosConfig["tgtLifetimeHours"] = *r.Config.SecurityConfig.KerberosConfig.TgtLifetimeHours
				}
				if r.Config.SecurityConfig.KerberosConfig.Truststore != nil {
					rConfigSecurityConfigKerberosConfig["truststore"] = *r.Config.SecurityConfig.KerberosConfig.Truststore
				}
				if r.Config.SecurityConfig.KerberosConfig.TruststorePassword != nil {
					rConfigSecurityConfigKerberosConfig["truststorePassword"] = *r.Config.SecurityConfig.KerberosConfig.TruststorePassword
				}
				rConfigSecurityConfig["kerberosConfig"] = rConfigSecurityConfigKerberosConfig
			}
			rConfig["securityConfig"] = rConfigSecurityConfig
		}
		if r.Config.SoftwareConfig != nil && r.Config.SoftwareConfig != dclService.EmptyClusterConfigSoftwareConfig {
			rConfigSoftwareConfig := make(map[string]interface{})
			if r.Config.SoftwareConfig.ImageVersion != nil {
				rConfigSoftwareConfig["imageVersion"] = *r.Config.SoftwareConfig.ImageVersion
			}
			var rConfigSoftwareConfigOptionalComponents []interface{}
			for _, rConfigSoftwareConfigOptionalComponentsVal := range r.Config.SoftwareConfig.OptionalComponents {
				rConfigSoftwareConfigOptionalComponents = append(rConfigSoftwareConfigOptionalComponents, string(rConfigSoftwareConfigOptionalComponentsVal))
			}
			rConfigSoftwareConfig["optionalComponents"] = rConfigSoftwareConfigOptionalComponents
			if r.Config.SoftwareConfig.Properties != nil {
				rConfigSoftwareConfigProperties := make(map[string]interface{})
				for k, v := range r.Config.SoftwareConfig.Properties {
					rConfigSoftwareConfigProperties[k] = v
				}
				rConfigSoftwareConfig["properties"] = rConfigSoftwareConfigProperties
			}
			rConfig["softwareConfig"] = rConfigSoftwareConfig
		}
		if r.Config.StagingBucket != nil {
			rConfig["stagingBucket"] = *r.Config.StagingBucket
		}
		if r.Config.TempBucket != nil {
			rConfig["tempBucket"] = *r.Config.TempBucket
		}
		if r.Config.WorkerConfig != nil && r.Config.WorkerConfig != dclService.EmptyClusterConfigWorkerConfig {
			rConfigWorkerConfig := make(map[string]interface{})
			var rConfigWorkerConfigAccelerators []interface{}
			for _, rConfigWorkerConfigAcceleratorsVal := range r.Config.WorkerConfig.Accelerators {
				rConfigWorkerConfigAcceleratorsObject := make(map[string]interface{})
				if rConfigWorkerConfigAcceleratorsVal.AcceleratorCount != nil {
					rConfigWorkerConfigAcceleratorsObject["acceleratorCount"] = *rConfigWorkerConfigAcceleratorsVal.AcceleratorCount
				}
				if rConfigWorkerConfigAcceleratorsVal.AcceleratorType != nil {
					rConfigWorkerConfigAcceleratorsObject["acceleratorType"] = *rConfigWorkerConfigAcceleratorsVal.AcceleratorType
				}
				rConfigWorkerConfigAccelerators = append(rConfigWorkerConfigAccelerators, rConfigWorkerConfigAcceleratorsObject)
			}
			rConfigWorkerConfig["accelerators"] = rConfigWorkerConfigAccelerators
			if r.Config.WorkerConfig.DiskConfig != nil && r.Config.WorkerConfig.DiskConfig != dclService.EmptyClusterConfigWorkerConfigDiskConfig {
				rConfigWorkerConfigDiskConfig := make(map[string]interface{})
				if r.Config.WorkerConfig.DiskConfig.BootDiskSizeGb != nil {
					rConfigWorkerConfigDiskConfig["bootDiskSizeGb"] = *r.Config.WorkerConfig.DiskConfig.BootDiskSizeGb
				}
				if r.Config.WorkerConfig.DiskConfig.BootDiskType != nil {
					rConfigWorkerConfigDiskConfig["bootDiskType"] = *r.Config.WorkerConfig.DiskConfig.BootDiskType
				}
				if r.Config.WorkerConfig.DiskConfig.LocalSsdInterface != nil {
					rConfigWorkerConfigDiskConfig["localSsdInterface"] = *r.Config.WorkerConfig.DiskConfig.LocalSsdInterface
				}
				if r.Config.WorkerConfig.DiskConfig.NumLocalSsds != nil {
					rConfigWorkerConfigDiskConfig["numLocalSsds"] = *r.Config.WorkerConfig.DiskConfig.NumLocalSsds
				}
				rConfigWorkerConfig["diskConfig"] = rConfigWorkerConfigDiskConfig
			}
			if r.Config.WorkerConfig.Image != nil {
				rConfigWorkerConfig["image"] = *r.Config.WorkerConfig.Image
			}
			var rConfigWorkerConfigInstanceNames []interface{}
			for _, rConfigWorkerConfigInstanceNamesVal := range r.Config.WorkerConfig.InstanceNames {
				rConfigWorkerConfigInstanceNames = append(rConfigWorkerConfigInstanceNames, rConfigWorkerConfigInstanceNamesVal)
			}
			rConfigWorkerConfig["instanceNames"] = rConfigWorkerConfigInstanceNames
			var rConfigWorkerConfigInstanceReferences []interface{}
			for _, rConfigWorkerConfigInstanceReferencesVal := range r.Config.WorkerConfig.InstanceReferences {
				rConfigWorkerConfigInstanceReferencesObject := make(map[string]interface{})
				if rConfigWorkerConfigInstanceReferencesVal.InstanceId != nil {
					rConfigWorkerConfigInstanceReferencesObject["instanceId"] = *rConfigWorkerConfigInstanceReferencesVal.InstanceId
				}
				if rConfigWorkerConfigInstanceReferencesVal.InstanceName != nil {
					rConfigWorkerConfigInstanceReferencesObject["instanceName"] = *rConfigWorkerConfigInstanceReferencesVal.InstanceName
				}
				if rConfigWorkerConfigInstanceReferencesVal.PublicEciesKey != nil {
					rConfigWorkerConfigInstanceReferencesObject["publicEciesKey"] = *rConfigWorkerConfigInstanceReferencesVal.PublicEciesKey
				}
				if rConfigWorkerConfigInstanceReferencesVal.PublicKey != nil {
					rConfigWorkerConfigInstanceReferencesObject["publicKey"] = *rConfigWorkerConfigInstanceReferencesVal.PublicKey
				}
				rConfigWorkerConfigInstanceReferences = append(rConfigWorkerConfigInstanceReferences, rConfigWorkerConfigInstanceReferencesObject)
			}
			rConfigWorkerConfig["instanceReferences"] = rConfigWorkerConfigInstanceReferences
			if r.Config.WorkerConfig.IsPreemptible != nil {
				rConfigWorkerConfig["isPreemptible"] = *r.Config.WorkerConfig.IsPreemptible
			}
			if r.Config.WorkerConfig.MachineType != nil {
				rConfigWorkerConfig["machineType"] = *r.Config.WorkerConfig.MachineType
			}
			if r.Config.WorkerConfig.ManagedGroupConfig != nil && r.Config.WorkerConfig.ManagedGroupConfig != dclService.EmptyClusterConfigWorkerConfigManagedGroupConfig {
				rConfigWorkerConfigManagedGroupConfig := make(map[string]interface{})
				if r.Config.WorkerConfig.ManagedGroupConfig.InstanceGroupManagerName != nil {
					rConfigWorkerConfigManagedGroupConfig["instanceGroupManagerName"] = *r.Config.WorkerConfig.ManagedGroupConfig.InstanceGroupManagerName
				}
				if r.Config.WorkerConfig.ManagedGroupConfig.InstanceTemplateName != nil {
					rConfigWorkerConfigManagedGroupConfig["instanceTemplateName"] = *r.Config.WorkerConfig.ManagedGroupConfig.InstanceTemplateName
				}
				rConfigWorkerConfig["managedGroupConfig"] = rConfigWorkerConfigManagedGroupConfig
			}
			if r.Config.WorkerConfig.MinCpuPlatform != nil {
				rConfigWorkerConfig["minCpuPlatform"] = *r.Config.WorkerConfig.MinCpuPlatform
			}
			if r.Config.WorkerConfig.NumInstances != nil {
				rConfigWorkerConfig["numInstances"] = *r.Config.WorkerConfig.NumInstances
			}
			if r.Config.WorkerConfig.Preemptibility != nil {
				rConfigWorkerConfig["preemptibility"] = string(*r.Config.WorkerConfig.Preemptibility)
			}
			rConfig["workerConfig"] = rConfigWorkerConfig
		}
		u.Object["config"] = rConfig
	}
	if r.Labels != nil {
		rLabels := make(map[string]interface{})
		for k, v := range r.Labels {
			rLabels[k] = v
		}
		u.Object["labels"] = rLabels
	}
	if r.Location != nil {
		u.Object["location"] = *r.Location
	}
	if r.Metrics != nil && r.Metrics != dclService.EmptyClusterMetrics {
		rMetrics := make(map[string]interface{})
		if r.Metrics.HdfsMetrics != nil {
			rMetricsHdfsMetrics := make(map[string]interface{})
			for k, v := range r.Metrics.HdfsMetrics {
				rMetricsHdfsMetrics[k] = v
			}
			rMetrics["hdfsMetrics"] = rMetricsHdfsMetrics
		}
		if r.Metrics.YarnMetrics != nil {
			rMetricsYarnMetrics := make(map[string]interface{})
			for k, v := range r.Metrics.YarnMetrics {
				rMetricsYarnMetrics[k] = v
			}
			rMetrics["yarnMetrics"] = rMetricsYarnMetrics
		}
		u.Object["metrics"] = rMetrics
	}
	if r.Name != nil {
		u.Object["name"] = *r.Name
	}
	if r.Project != nil {
		u.Object["project"] = *r.Project
	}
	if r.Status != nil && r.Status != dclService.EmptyClusterStatus {
		rStatus := make(map[string]interface{})
		if r.Status.Detail != nil {
			rStatus["detail"] = *r.Status.Detail
		}
		if r.Status.State != nil {
			rStatus["state"] = string(*r.Status.State)
		}
		if r.Status.StateStartTime != nil {
			rStatus["stateStartTime"] = *r.Status.StateStartTime
		}
		if r.Status.Substate != nil {
			rStatus["substate"] = string(*r.Status.Substate)
		}
		u.Object["status"] = rStatus
	}
	var rStatusHistory []interface{}
	for _, rStatusHistoryVal := range r.StatusHistory {
		rStatusHistoryObject := make(map[string]interface{})
		if rStatusHistoryVal.Detail != nil {
			rStatusHistoryObject["detail"] = *rStatusHistoryVal.Detail
		}
		if rStatusHistoryVal.State != nil {
			rStatusHistoryObject["state"] = string(*rStatusHistoryVal.State)
		}
		if rStatusHistoryVal.StateStartTime != nil {
			rStatusHistoryObject["stateStartTime"] = *rStatusHistoryVal.StateStartTime
		}
		if rStatusHistoryVal.Substate != nil {
			rStatusHistoryObject["substate"] = string(*rStatusHistoryVal.Substate)
		}
		rStatusHistory = append(rStatusHistory, rStatusHistoryObject)
	}
	u.Object["statusHistory"] = rStatusHistory
	if r.VirtualClusterConfig != nil && r.VirtualClusterConfig != dclService.EmptyClusterVirtualClusterConfig {
		rVirtualClusterConfig := make(map[string]interface{})
		if r.VirtualClusterConfig.AuxiliaryServicesConfig != nil && r.VirtualClusterConfig.AuxiliaryServicesConfig != dclService.EmptyClusterVirtualClusterConfigAuxiliaryServicesConfig {
			rVirtualClusterConfigAuxiliaryServicesConfig := make(map[string]interface{})
			if r.VirtualClusterConfig.AuxiliaryServicesConfig.MetastoreConfig != nil && r.VirtualClusterConfig.AuxiliaryServicesConfig.MetastoreConfig != dclService.EmptyClusterVirtualClusterConfigAuxiliaryServicesConfigMetastoreConfig {
				rVirtualClusterConfigAuxiliaryServicesConfigMetastoreConfig := make(map[string]interface{})
				if r.VirtualClusterConfig.AuxiliaryServicesConfig.MetastoreConfig.DataprocMetastoreService != nil {
					rVirtualClusterConfigAuxiliaryServicesConfigMetastoreConfig["dataprocMetastoreService"] = *r.VirtualClusterConfig.AuxiliaryServicesConfig.MetastoreConfig.DataprocMetastoreService
				}
				rVirtualClusterConfigAuxiliaryServicesConfig["metastoreConfig"] = rVirtualClusterConfigAuxiliaryServicesConfigMetastoreConfig
			}
			if r.VirtualClusterConfig.AuxiliaryServicesConfig.SparkHistoryServerConfig != nil && r.VirtualClusterConfig.AuxiliaryServicesConfig.SparkHistoryServerConfig != dclService.EmptyClusterVirtualClusterConfigAuxiliaryServicesConfigSparkHistoryServerConfig {
				rVirtualClusterConfigAuxiliaryServicesConfigSparkHistoryServerConfig := make(map[string]interface{})
				if r.VirtualClusterConfig.AuxiliaryServicesConfig.SparkHistoryServerConfig.DataprocCluster != nil {
					rVirtualClusterConfigAuxiliaryServicesConfigSparkHistoryServerConfig["dataprocCluster"] = *r.VirtualClusterConfig.AuxiliaryServicesConfig.SparkHistoryServerConfig.DataprocCluster
				}
				rVirtualClusterConfigAuxiliaryServicesConfig["sparkHistoryServerConfig"] = rVirtualClusterConfigAuxiliaryServicesConfigSparkHistoryServerConfig
			}
			rVirtualClusterConfig["auxiliaryServicesConfig"] = rVirtualClusterConfigAuxiliaryServicesConfig
		}
		if r.VirtualClusterConfig.KubernetesClusterConfig != nil && r.VirtualClusterConfig.KubernetesClusterConfig != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfig {
			rVirtualClusterConfigKubernetesClusterConfig := make(map[string]interface{})
			if r.VirtualClusterConfig.KubernetesClusterConfig.GkeClusterConfig != nil && r.VirtualClusterConfig.KubernetesClusterConfig.GkeClusterConfig != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigGkeClusterConfig {
				rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfig := make(map[string]interface{})
				if r.VirtualClusterConfig.KubernetesClusterConfig.GkeClusterConfig.GkeClusterTarget != nil {
					rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfig["gkeClusterTarget"] = *r.VirtualClusterConfig.KubernetesClusterConfig.GkeClusterConfig.GkeClusterTarget
				}
				var rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTarget []interface{}
				for _, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal := range r.VirtualClusterConfig.KubernetesClusterConfig.GkeClusterConfig.NodePoolTarget {
					rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetObject := make(map[string]interface{})
					if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePool != nil {
						rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetObject["nodePool"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePool
					}
					if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig != nil && rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetNodePoolConfig {
						rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfig := make(map[string]interface{})
						if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling != nil && rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetNodePoolConfigAutoscaling {
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigAutoscaling := make(map[string]interface{})
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling.MaxNodeCount != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigAutoscaling["maxNodeCount"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling.MaxNodeCount
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling.MinNodeCount != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigAutoscaling["minNodeCount"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Autoscaling.MinNodeCount
							}
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfig["autoscaling"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigAutoscaling
						}
						if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config != nil && rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetNodePoolConfigConfig {
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig := make(map[string]interface{})
							var rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAccelerators []interface{}
							for _, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal := range rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.Accelerators {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsObject := make(map[string]interface{})
								if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.AcceleratorCount != nil {
									rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsObject["acceleratorCount"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.AcceleratorCount
								}
								if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.AcceleratorType != nil {
									rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsObject["acceleratorType"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.AcceleratorType
								}
								if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.GpuPartitionSize != nil {
									rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsObject["gpuPartitionSize"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsVal.GpuPartitionSize
								}
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAccelerators = append(rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAccelerators, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAcceleratorsObject)
							}
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["accelerators"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigAccelerators
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.BootDiskKmsKey != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["bootDiskKmsKey"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.BootDiskKmsKey
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.EphemeralStorageConfig != nil && rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.EphemeralStorageConfig != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetNodePoolConfigConfigEphemeralStorageConfig {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigEphemeralStorageConfig := make(map[string]interface{})
								if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.EphemeralStorageConfig.LocalSsdCount != nil {
									rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigEphemeralStorageConfig["localSsdCount"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.EphemeralStorageConfig.LocalSsdCount
								}
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["ephemeralStorageConfig"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfigEphemeralStorageConfig
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.LocalSsdCount != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["localSsdCount"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.LocalSsdCount
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.MachineType != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["machineType"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.MachineType
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.MinCpuPlatform != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["minCpuPlatform"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.MinCpuPlatform
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.Preemptible != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["preemptible"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.Preemptible
							}
							if rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.Spot != nil {
								rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig["spot"] = *rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Config.Spot
							}
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfig["config"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigConfig
						}
						var rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocations []interface{}
						for _, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocationsVal := range rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.NodePoolConfig.Locations {
							rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocations = append(rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocations, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocationsVal)
						}
						rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfig["locations"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfigLocations
						rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetObject["nodePoolConfig"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValNodePoolConfig
					}
					var rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRoles []interface{}
					for _, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRolesVal := range rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetVal.Roles {
						rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRoles = append(rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRoles, string(rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRolesVal))
					}
					rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetObject["roles"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetValRoles
					rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTarget = append(rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTarget, rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTargetObject)
				}
				rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfig["nodePoolTarget"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfigNodePoolTarget
				rVirtualClusterConfigKubernetesClusterConfig["gkeClusterConfig"] = rVirtualClusterConfigKubernetesClusterConfigGkeClusterConfig
			}
			if r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesNamespace != nil {
				rVirtualClusterConfigKubernetesClusterConfig["kubernetesNamespace"] = *r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesNamespace
			}
			if r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig != nil && r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig != dclService.EmptyClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig {
				rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig := make(map[string]interface{})
				if r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig.ComponentVersion != nil {
					rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigComponentVersion := make(map[string]interface{})
					for k, v := range r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig.ComponentVersion {
						rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigComponentVersion[k] = v
					}
					rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig["componentVersion"] = rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigComponentVersion
				}
				if r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig.Properties != nil {
					rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigProperties := make(map[string]interface{})
					for k, v := range r.VirtualClusterConfig.KubernetesClusterConfig.KubernetesSoftwareConfig.Properties {
						rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigProperties[k] = v
					}
					rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig["properties"] = rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfigProperties
				}
				rVirtualClusterConfigKubernetesClusterConfig["kubernetesSoftwareConfig"] = rVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig
			}
			rVirtualClusterConfig["kubernetesClusterConfig"] = rVirtualClusterConfigKubernetesClusterConfig
		}
		if r.VirtualClusterConfig.StagingBucket != nil {
			rVirtualClusterConfig["stagingBucket"] = *r.VirtualClusterConfig.StagingBucket
		}
		u.Object["virtualClusterConfig"] = rVirtualClusterConfig
	}
	return u
}