func()

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
}