in ec/ecresource/projectresource/security.go [100:162]
func (sec securityApi) Create(ctx context.Context, model resource_security_project.SecurityProjectModel) (resource_security_project.SecurityProjectModel, diag.Diagnostics) {
createBody := serverless.CreateSecurityProjectRequest{
Name: model.Name.ValueString(),
RegionId: model.RegionId.ValueString(),
}
if model.Alias.ValueString() != "" {
createBody.Alias = model.Alias.ValueStringPointer()
}
if model.AdminFeaturesPackage.ValueString() != "" {
createBody.AdminFeaturesPackage = (*serverless.SecurityAdminFeaturesPackage)(model.AdminFeaturesPackage.ValueStringPointer())
}
if util.IsKnown(model.ProductTypes) {
var productTypes []resource_security_project.ProductTypesValue
diags := model.ProductTypes.ElementsAs(ctx, &productTypes, false)
if diags.HasError() {
return model, diags
}
createProductTypes := []serverless.SecurityProductType{}
for _, productType := range productTypes {
createProductTypes = append(createProductTypes, serverless.SecurityProductType{
ProductLine: serverless.SecurityProductLine(productType.ProductLine.ValueString()),
ProductTier: serverless.SecurityProductTier(productType.ProductTier.ValueString()),
})
}
createBody.ProductTypes = &createProductTypes
}
resp, err := sec.client.CreateSecurityProjectWithResponse(ctx, createBody)
if err != nil {
return model, diag.Diagnostics{
diag.NewErrorDiagnostic(err.Error(), err.Error()),
}
}
if resp.JSON201 == nil {
return model, diag.Diagnostics{
diag.NewErrorDiagnostic(
"Failed to create security_project",
fmt.Sprintf("The API request failed with: %d %s\n%s",
resp.StatusCode(),
resp.Status(),
resp.Body),
),
}
}
model.Id = types.StringValue(resp.JSON201.Id)
creds, diags := resource_security_project.NewCredentialsValue(
model.Credentials.AttributeTypes(ctx),
map[string]attr.Value{
"username": types.StringValue(resp.JSON201.Credentials.Username),
"password": types.StringValue(resp.JSON201.Credentials.Password),
},
)
model.Credentials = creds
return model, diags
}