|
| 1 | +package convert |
| 2 | + |
| 3 | +import ( |
| 4 | + "github.com/PaloAltoNetworks/terraform-provider-prismacloudcompute/internal/api/account" |
| 5 | + "github.com/PaloAltoNetworks/terraform-provider-prismacloudcompute/internal/api/auth" |
| 6 | + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" |
| 7 | +) |
| 8 | + |
| 9 | +func SchemaToCloudAccountCredential(d *schema.ResourceData) (auth.Credential, error) { |
| 10 | + var parsedCredential auth.Credential |
| 11 | + |
| 12 | + if val, ok := d.GetOk("credential"); ok { |
| 13 | + for _, val := range val.([]interface{}) { |
| 14 | + parsedCredential.Id = val.(map[string]interface{})["name"].(string) |
| 15 | + parsedCredential.AccountID = val.(map[string]interface{})["account_id"].(string) |
| 16 | + if len(val.(map[string]interface{})["api_token"].([]interface{})) > 0 { |
| 17 | + parsedCredential.ApiToken = schemaToCredentialSecret(val.(map[string]interface{})["api_token"].([]interface{})) |
| 18 | + } |
| 19 | + parsedCredential.CaCert = val.(map[string]interface{})["ca_cert"].(string) |
| 20 | + parsedCredential.Description = val.(map[string]interface{})["description"].(string) |
| 21 | + parsedCredential.External = val.(map[string]interface{})["external"].(bool) |
| 22 | + //parsedCredential.AccountGUID = val.(map[string]interface{})["ibm_account_guide"].(string) |
| 23 | + parsedCredential.RoleArn = val.(map[string]interface{})["role_arn"].(string) |
| 24 | + parsedCredential.Id = val.(map[string]interface{})["id"].(string) |
| 25 | + if len(val.(map[string]interface{})["secret"].([]interface{})) > 0 { |
| 26 | + parsedCredential.Secret = schemaToCredentialSecret(val.(map[string]interface{})["secret"].([]interface{})) |
| 27 | + } |
| 28 | + parsedCredential.SkipVerify = val.(map[string]interface{})["skip_cert_verification"].(bool) |
| 29 | + parsedCredential.Type = val.(map[string]interface{})["type"].(string) |
| 30 | + parsedCredential.Url = val.(map[string]interface{})["url"].(string) |
| 31 | + parsedCredential.UseAWSRole = val.(map[string]interface{})["use_aws_role"].(bool) |
| 32 | + parsedCredential.UseSTSRegionalEndpoint = val.(map[string]interface{})["use_sts_regional_endpoint"].(bool) |
| 33 | + } |
| 34 | + } |
| 35 | + |
| 36 | + return parsedCredential, nil |
| 37 | +} |
| 38 | + |
| 39 | +func SchemaToCloudScanRule(d *schema.ResourceData) (account.CloudScanRule, error) { |
| 40 | + var parsedCloudScanRule account.CloudScanRule |
| 41 | + |
| 42 | + if val, ok := d.GetOk("credential"); ok { |
| 43 | + parsedCloudScanRule.CredentialId = val.([]interface{})[0].(map[string]interface{})["name"].(string) |
| 44 | + } |
| 45 | + |
| 46 | + if val, ok := d.GetOk("aws_region_type"); ok { |
| 47 | + parsedCloudScanRule.AwsRegionType = val.(string) |
| 48 | + } |
| 49 | + |
| 50 | + if val, ok := d.GetOk("discovery_enabled"); ok { |
| 51 | + parsedCloudScanRule.DiscoveryEnabled = val.(bool) |
| 52 | + } |
| 53 | + |
| 54 | + if val, ok := d.GetOk("serverless_radar_enabled"); ok { |
| 55 | + parsedCloudScanRule.ServerlessRadarEnabled = val.(bool) |
| 56 | + } |
| 57 | + |
| 58 | + if val, ok := d.GetOk("vm_tags_enabled"); ok { |
| 59 | + parsedCloudScanRule.VmTagsEnabled = val.(bool) |
| 60 | + } |
| 61 | + |
| 62 | + if val, ok := d.GetOk("discover_all_function_versions"); ok { |
| 63 | + parsedCloudScanRule.DiscoverAllFunctionVersions = val.(bool) |
| 64 | + } |
| 65 | + |
| 66 | + if val, ok := d.GetOk("serverless_radar_cap"); ok { |
| 67 | + parsedCloudScanRule.ServerlessRadarCap = val.(int) |
| 68 | + } |
| 69 | + |
| 70 | + if val, ok := d.GetOk("agentless_scan_spec"); ok { |
| 71 | + specs := val.(map[string]interface{}) |
| 72 | + parsedCloudScanRule.AgentlessScanSpec.Enabled = specs["enabled"].(bool) |
| 73 | + parsedCloudScanRule.AgentlessScanSpec.HubAccount = specs["hub_account"].(bool) |
| 74 | + parsedCloudScanRule.AgentlessScanSpec.ConsoleAddr = specs["console_addr"].(string) |
| 75 | + parsedCloudScanRule.AgentlessScanSpec.ScanNonRunning = specs["scan_non_running"].(bool) |
| 76 | + parsedCloudScanRule.AgentlessScanSpec.ProxyAddress = specs["proxy_address"].(string) |
| 77 | + parsedCloudScanRule.AgentlessScanSpec.ProxyCA = specs["proxy_ca"].(string) |
| 78 | + parsedCloudScanRule.AgentlessScanSpec.SkipPermissionsCheck = specs["skip_permissions_check"].(bool) |
| 79 | + parsedCloudScanRule.AgentlessScanSpec.AutoScale = specs["auto_scale"].(bool) |
| 80 | + parsedCloudScanRule.AgentlessScanSpec.Scanners = specs["scanners"].(int) |
| 81 | + parsedCloudScanRule.AgentlessScanSpec.SecurityGroup = specs["security_group"].(string) |
| 82 | + parsedCloudScanRule.AgentlessScanSpec.SubNet = specs["subnet"].(string) |
| 83 | + parsedCloudScanRule.AgentlessScanSpec.Regions = SchemaToStringSlice(specs["regions"].([]interface{})) |
| 84 | + |
| 85 | + presentCustomTags := specs["custom_tags"].([]interface{}) |
| 86 | + parsedCustomTags := make([]account.Tag, 0, len(presentCustomTags)) |
| 87 | + for _, val := range presentCustomTags { |
| 88 | + presentCustomTag := val.(map[string]interface{}) |
| 89 | + parsedCustomTags = append(parsedCustomTags, account.Tag{ |
| 90 | + Key: presentCustomTag["key"].(string), |
| 91 | + Value: presentCustomTag["value"].(string), |
| 92 | + }) |
| 93 | + } |
| 94 | + parsedCloudScanRule.AgentlessScanSpec.CustomTags = parsedCustomTags |
| 95 | + |
| 96 | + presentIncludedTags := specs["included_tags"].([]interface{}) |
| 97 | + parsedIncludedTags := make([]account.Tag, 0, len(presentIncludedTags)) |
| 98 | + for _, val := range presentIncludedTags { |
| 99 | + presentIncludedTag := val.(map[string]interface{}) |
| 100 | + parsedIncludedTags = append(parsedIncludedTags, account.Tag{ |
| 101 | + Key: presentIncludedTag["key"].(string), |
| 102 | + Value: presentIncludedTag["value"].(string), |
| 103 | + }) |
| 104 | + } |
| 105 | + parsedCloudScanRule.AgentlessScanSpec.IncludedTags = parsedIncludedTags |
| 106 | + } |
| 107 | + |
| 108 | + if val, ok := d.GetOk("aws_region_type"); ok { |
| 109 | + parsedCloudScanRule.AwsRegionType = val.(string) |
| 110 | + } |
| 111 | + |
| 112 | + return parsedCloudScanRule, nil |
| 113 | +} |
| 114 | + |
| 115 | +func ServerlessScanSpecToSchema(d *account.ServerLessScanSpec) []interface{} { |
| 116 | + ans := make([]interface{}, 0, 1) |
| 117 | + serverlessScanSpec := make(map[string]interface{}) |
| 118 | + serverlessScanSpec["enabled"] = d.Enabled |
| 119 | + serverlessScanSpec["cap"] = d.Cap |
| 120 | + serverlessScanSpec["scan_all_versions"] = d.ScanAllVersions |
| 121 | + serverlessScanSpec["scan_layers"] = d.ScanLayers |
| 122 | + ans = append(ans, serverlessScanSpec) |
| 123 | + return ans |
| 124 | +} |
| 125 | + |
| 126 | +func AgentlessScanSpecToSchema(d *account.AgentlessScanSpec) []interface{} { |
| 127 | + ans := make([]interface{}, 0, 1) |
| 128 | + agentlessScanSpec := make(map[string]interface{}) |
| 129 | + agentlessScanSpec["enabled"] = d.Enabled |
| 130 | + agentlessScanSpec["hub_account"] = d.HubAccount |
| 131 | + agentlessScanSpec["console_addr"] = d.ConsoleAddr |
| 132 | + agentlessScanSpec["scan_non_running"] = d.ScanNonRunning |
| 133 | + agentlessScanSpec["proxy_address"] = d.ProxyAddress |
| 134 | + agentlessScanSpec["proxy_ca"] = d.ProxyCA |
| 135 | + agentlessScanSpec["skip_permissions_check"] = d.SkipPermissionsCheck |
| 136 | + agentlessScanSpec["auto_scale"] = d.AutoScale |
| 137 | + agentlessScanSpec["scanners"] = d.Scanners |
| 138 | + agentlessScanSpec["security_group"] = d.SecurityGroup |
| 139 | + agentlessScanSpec["subnet"] = d.SubNet |
| 140 | + agentlessScanSpec["regions"] = d.Regions |
| 141 | + ans = append(ans, agentlessScanSpec) |
| 142 | + return ans |
| 143 | +} |
| 144 | + |
| 145 | +func CloudAccountCredentialToSchema(d auth.Credential) []interface{} { |
| 146 | + ans := make([]interface{}, 0, 1) |
| 147 | + credential := make(map[string]interface{}) |
| 148 | + credential["id"] = d.Id |
| 149 | + credential["type"] = d.Type |
| 150 | + credential["account_id"] = d.AccountID |
| 151 | + credential["account_guid"] = d.AccountGUID |
| 152 | + credential["secret"] = CredentialSecretToSchema(d.Secret) |
| 153 | + credential["api_token"] = CredentialSecretToSchema(d.ApiToken) |
| 154 | + credential["use_aws_role"] = d.UseAWSRole |
| 155 | + ans = append(ans, credential) |
| 156 | + return ans |
| 157 | +} |
0 commit comments