Skip to content

Commit

Permalink
chore: terraform
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark-Kulube committed Aug 23, 2023
1 parent c95c145 commit 5c102b9
Show file tree
Hide file tree
Showing 4 changed files with 408 additions and 74 deletions.
132 changes: 73 additions & 59 deletions projectv1/project_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,9 @@ func (project *ProjectV1) UpdateProjectWithContext(ctx context.Context, updatePr
if updateProjectOptions.DestroyOnDelete != nil {
body["destroy_on_delete"] = updateProjectOptions.DestroyOnDelete
}
if updateProjectOptions.Configs != nil {
body["configs"] = updateProjectOptions.Configs
}
_, err = builder.SetBodyContentJSON(body)
if err != nil {
return
Expand Down Expand Up @@ -576,12 +579,12 @@ func (project *ProjectV1) CreateConfigWithContext(ctx context.Context, createCon

// ListConfigs : List all project configurations
// The collection of configurations that are returned.
func (project *ProjectV1) ListConfigs(listConfigsOptions *ListConfigsOptions) (result *ProjectConfigCollection, response *core.DetailedResponse, err error) {
func (project *ProjectV1) ListConfigs(listConfigsOptions *ListConfigsOptions) (result *ProjectConfigCollectionTerraform, response *core.DetailedResponse, err error) {
return project.ListConfigsWithContext(context.Background(), listConfigsOptions)
}

// ListConfigsWithContext is an alternate form of the ListConfigs method which supports a Context parameter
func (project *ProjectV1) ListConfigsWithContext(ctx context.Context, listConfigsOptions *ListConfigsOptions) (result *ProjectConfigCollection, response *core.DetailedResponse, err error) {
func (project *ProjectV1) ListConfigsWithContext(ctx context.Context, listConfigsOptions *ListConfigsOptions) (result *ProjectConfigCollectionTerraform, response *core.DetailedResponse, err error) {
err = core.ValidateNotNil(listConfigsOptions, "listConfigsOptions cannot be nil")
if err != nil {
return
Expand Down Expand Up @@ -624,7 +627,7 @@ func (project *ProjectV1) ListConfigsWithContext(ctx context.Context, listConfig
return
}
if rawResponse != nil {
err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalProjectConfigCollection)
err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalProjectConfigCollectionTerraform)
if err != nil {
return
}
Expand Down Expand Up @@ -2350,10 +2353,10 @@ type ProjectCanonical struct {

// The project configurations. These configurations are only included in the response of creating a project if a
// configs array is specified in the request payload.
Configs []ProjectConfigCollectionMember `json:"configs,omitempty"`
Configs []ProjectConfigCanonical `json:"configs,omitempty"`

// The definition of the project.
Definition *ProjectDefinitionResponseTerraform `json:"definition,omitempty"`
Definition *ProjectDefinitionTerraform `json:"definition,omitempty"`
}

// Constants associated with the ProjectCanonical.State property.
Expand Down Expand Up @@ -2415,11 +2418,11 @@ func UnmarshalProjectCanonical(m map[string]json.RawMessage, result interface{})
if err != nil {
return
}
err = core.UnmarshalModel(m, "configs", &obj.Configs, UnmarshalProjectConfigCollectionMember)
err = core.UnmarshalModel(m, "configs", &obj.Configs, UnmarshalProjectConfigCanonical)
if err != nil {
return
}
err = core.UnmarshalModel(m, "definition", &obj.Definition, UnmarshalProjectDefinitionResponseTerraform)
err = core.UnmarshalModel(m, "definition", &obj.Definition, UnmarshalProjectDefinitionTerraform)
if err != nil {
return
}
Expand Down Expand Up @@ -2875,42 +2878,25 @@ func UnmarshalProjectConfigCanonicalDefinition(m map[string]json.RawMessage, res
return
}

// ProjectConfigCollection : The project configuration list.
type ProjectConfigCollection struct {
// The collection list operation response schema that should define the array property with the name "configs".
Configs []ProjectConfigCollectionMember `json:"configs,omitempty"`
}

// UnmarshalProjectConfigCollection unmarshals an instance of ProjectConfigCollection from the specified map of raw messages.
func UnmarshalProjectConfigCollection(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectConfigCollection)
err = core.UnmarshalModel(m, "configs", &obj.Configs, UnmarshalProjectConfigCollectionMember)
if err != nil {
return
}
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
return
}

// ProjectConfigCollectionMember : The configuration metadata.
type ProjectConfigCollectionMember struct {
// ProjectConfigCollectionMemberTerraform : The configuration metadata.
type ProjectConfigCollectionMemberTerraform struct {
// The ID of the configuration. If this parameter is empty, an ID is automatically created for the configuration.
ID *string `json:"id" validate:"required"`
ID *string `json:"id,omitempty"`

// The unique ID.
ProjectID *string `json:"project_id" validate:"required"`
ProjectID *string `json:"project_id,omitempty"`

// The version of the configuration.
Version *int64 `json:"version" validate:"required"`
Version *int64 `json:"version,omitempty"`

// The flag that indicates whether the version of the configuration is draft, or active.
IsDraft *bool `json:"is_draft" validate:"required"`
IsDraft *bool `json:"is_draft,omitempty"`

// The needs attention state of a configuration.
NeedsAttentionState []interface{} `json:"needs_attention_state,omitempty"`

// The state of the configuration.
State *string `json:"state" validate:"required"`
State *string `json:"state,omitempty"`

// The project configuration version.
ApprovedVersion *ProjectConfigVersionSummary `json:"approved_version,omitempty"`
Expand All @@ -2919,7 +2905,7 @@ type ProjectConfigCollectionMember struct {
InstalledVersion *ProjectConfigVersionSummary `json:"installed_version,omitempty"`

// The project configuration definition summary.
Definition *ProjectConfigDefinitionSummary `json:"definition" validate:"required"`
Definition *ProjectConfigDefinitionSummary `json:"definition,omitempty"`

// The action job performed on the project configuration.
CheckJob *ActionJobWithIdAndHref `json:"check_job,omitempty"`
Expand All @@ -2931,32 +2917,32 @@ type ProjectConfigCollectionMember struct {
UninstallJob *ActionJobWithIdAndHref `json:"uninstall_job,omitempty"`

// A relative URL.
Href *string `json:"href" validate:"required"`
Href *string `json:"href,omitempty"`
}

// Constants associated with the ProjectConfigCollectionMember.State property.
// Constants associated with the ProjectConfigCollectionMemberTerraform.State property.
// The state of the configuration.
const (
ProjectConfigCollectionMember_State_Approved = "approved"
ProjectConfigCollectionMember_State_Deleted = "deleted"
ProjectConfigCollectionMember_State_Deleting = "deleting"
ProjectConfigCollectionMember_State_DeletingFailed = "deleting_failed"
ProjectConfigCollectionMember_State_Discarded = "discarded"
ProjectConfigCollectionMember_State_Draft = "draft"
ProjectConfigCollectionMember_State_Installed = "installed"
ProjectConfigCollectionMember_State_InstalledFailed = "installed_failed"
ProjectConfigCollectionMember_State_Installing = "installing"
ProjectConfigCollectionMember_State_Superceded = "superceded"
ProjectConfigCollectionMember_State_Uninstalling = "uninstalling"
ProjectConfigCollectionMember_State_UninstallingFailed = "uninstalling_failed"
ProjectConfigCollectionMember_State_Validated = "validated"
ProjectConfigCollectionMember_State_Validating = "validating"
ProjectConfigCollectionMember_State_ValidatingFailed = "validating_failed"
ProjectConfigCollectionMemberTerraform_State_Approved = "approved"
ProjectConfigCollectionMemberTerraform_State_Deleted = "deleted"
ProjectConfigCollectionMemberTerraform_State_Deleting = "deleting"
ProjectConfigCollectionMemberTerraform_State_DeletingFailed = "deleting_failed"
ProjectConfigCollectionMemberTerraform_State_Discarded = "discarded"
ProjectConfigCollectionMemberTerraform_State_Draft = "draft"
ProjectConfigCollectionMemberTerraform_State_Installed = "installed"
ProjectConfigCollectionMemberTerraform_State_InstalledFailed = "installed_failed"
ProjectConfigCollectionMemberTerraform_State_Installing = "installing"
ProjectConfigCollectionMemberTerraform_State_Superceded = "superceded"
ProjectConfigCollectionMemberTerraform_State_Uninstalling = "uninstalling"
ProjectConfigCollectionMemberTerraform_State_UninstallingFailed = "uninstalling_failed"
ProjectConfigCollectionMemberTerraform_State_Validated = "validated"
ProjectConfigCollectionMemberTerraform_State_Validating = "validating"
ProjectConfigCollectionMemberTerraform_State_ValidatingFailed = "validating_failed"
)

// UnmarshalProjectConfigCollectionMember unmarshals an instance of ProjectConfigCollectionMember from the specified map of raw messages.
func UnmarshalProjectConfigCollectionMember(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectConfigCollectionMember)
// UnmarshalProjectConfigCollectionMemberTerraform unmarshals an instance of ProjectConfigCollectionMemberTerraform from the specified map of raw messages.
func UnmarshalProjectConfigCollectionMemberTerraform(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectConfigCollectionMemberTerraform)
err = core.UnmarshalPrimitive(m, "id", &obj.ID)
if err != nil {
return
Expand Down Expand Up @@ -3013,6 +2999,23 @@ func UnmarshalProjectConfigCollectionMember(m map[string]json.RawMessage, result
return
}

// ProjectConfigCollectionTerraform : The project configuration list.
type ProjectConfigCollectionTerraform struct {
// The collection list operation response schema that should define the array property with the name "configs".
Configs []ProjectConfigCollectionMemberTerraform `json:"configs,omitempty"`
}

// UnmarshalProjectConfigCollectionTerraform unmarshals an instance of ProjectConfigCollectionTerraform from the specified map of raw messages.
func UnmarshalProjectConfigCollectionTerraform(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectConfigCollectionTerraform)
err = core.UnmarshalModel(m, "configs", &obj.Configs, UnmarshalProjectConfigCollectionMemberTerraform)
if err != nil {
return
}
reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj))
return
}

// ProjectConfigComplianceProfile : The profile required for compliance.
type ProjectConfigComplianceProfile struct {
// The unique ID.
Expand Down Expand Up @@ -3781,8 +3784,8 @@ func UnmarshalProjectConfigVersionSummaryCollection(m map[string]json.RawMessage
return
}

// ProjectDefinitionResponseTerraform : The definition of the project.
type ProjectDefinitionResponseTerraform struct {
// ProjectDefinitionTerraform : The definition of the project.
type ProjectDefinitionTerraform struct {
// The name of the project.
Name *string `json:"name,omitempty"`

Expand All @@ -3794,9 +3797,9 @@ type ProjectDefinitionResponseTerraform struct {
DestroyOnDelete *bool `json:"destroy_on_delete,omitempty"`
}

// UnmarshalProjectDefinitionResponseTerraform unmarshals an instance of ProjectDefinitionResponseTerraform from the specified map of raw messages.
func UnmarshalProjectDefinitionResponseTerraform(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectDefinitionResponseTerraform)
// UnmarshalProjectDefinitionTerraform unmarshals an instance of ProjectDefinitionTerraform from the specified map of raw messages.
func UnmarshalProjectDefinitionTerraform(m map[string]json.RawMessage, result interface{}) (err error) {
obj := new(ProjectDefinitionTerraform)
err = core.UnmarshalPrimitive(m, "name", &obj.Name)
if err != nil {
return
Expand Down Expand Up @@ -3968,15 +3971,20 @@ type UpdateProjectOptions struct {
// The unique project ID.
ID *string `json:"id" validate:"required,ne="`

// The project name.
// The name of the project.
Name *string `json:"name,omitempty"`

// The description of the project.
// A brief explanation of the project's use in the configuration of a deployable architecture. It is possible to create
// a project without providing a description.
Description *string `json:"description,omitempty"`

// The policy that indicates whether the resources are destroyed or not when a project is deleted.
DestroyOnDelete *bool `json:"destroy_on_delete,omitempty"`

// The project configurations. If configurations are not included, the project resource is persisted without this
// property.
Configs []ProjectConfigTerraform `json:"configs,omitempty"`

// Allows users to set headers on API requests
Headers map[string]string
}
Expand Down Expand Up @@ -4012,6 +4020,12 @@ func (_options *UpdateProjectOptions) SetDestroyOnDelete(destroyOnDelete bool) *
return _options
}

// SetConfigs : Allow user to set Configs
func (_options *UpdateProjectOptions) SetConfigs(configs []ProjectConfigTerraform) *UpdateProjectOptions {
_options.Configs = configs
return _options
}

// SetHeaders : Allow user to set Headers
func (options *UpdateProjectOptions) SetHeaders(param map[string]string) *UpdateProjectOptions {
options.Headers = param
Expand Down
6 changes: 3 additions & 3 deletions projectv1/project_v1_examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,18 +257,18 @@ var _ = Describe(`ProjectV1 Examples Tests`, func() {
projectIdLink,
)

projectConfigCollection, response, err := projectService.ListConfigs(listConfigsOptions)
projectConfigCollectionTerraform, response, err := projectService.ListConfigs(listConfigsOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(projectConfigCollection, "", " ")
b, _ := json.MarshalIndent(projectConfigCollectionTerraform, "", " ")
fmt.Println(string(b))

// end-list_configs

Expect(err).To(BeNil())
Expect(response.StatusCode).To(Equal(200))
Expect(projectConfigCollection).ToNot(BeNil())
Expect(projectConfigCollectionTerraform).ToNot(BeNil())
})
It(`GetConfig request example`, func() {
fmt.Println("\nGetConfig() result:")
Expand Down
43 changes: 41 additions & 2 deletions projectv1/project_v1_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,11 +298,50 @@ var _ = Describe(`ProjectV1 Integration Tests`, func() {
shouldSkipTest()
})
It(`UpdateProject(updateProjectOptions *UpdateProjectOptions)`, func() {
projectConfigAuthTrustedProfileModel := &projectv1.ProjectConfigAuthTrustedProfile{
ID: core.StringPtr("testString"),
TargetIamID: core.StringPtr("testString"),
}

projectConfigAuthModel := &projectv1.ProjectConfigAuth{
TrustedProfile: projectConfigAuthTrustedProfileModel,
Method: core.StringPtr("testString"),
ApiKey: core.StringPtr("testString"),
}

projectConfigComplianceProfileModel := &projectv1.ProjectConfigComplianceProfile{
ID: core.StringPtr("testString"),
InstanceID: core.StringPtr("testString"),
InstanceLocation: core.StringPtr("testString"),
AttachmentID: core.StringPtr("testString"),
ProfileName: core.StringPtr("testString"),
}

inputVariableModel := &projectv1.InputVariable{
}
inputVariableModel.SetProperty("foo", core.StringPtr("testString"))

projectConfigSettingModel := &projectv1.ProjectConfigSetting{
}
projectConfigSettingModel.SetProperty("foo", core.StringPtr("testString"))

projectConfigTerraformModel := &projectv1.ProjectConfigTerraform{
Name: core.StringPtr("testString"),
Description: core.StringPtr("testString"),
Labels: []string{"testString"},
Authorizations: projectConfigAuthModel,
ComplianceProfile: projectConfigComplianceProfileModel,
LocatorID: core.StringPtr("testString"),
Input: inputVariableModel,
Setting: projectConfigSettingModel,
}

updateProjectOptions := &projectv1.UpdateProjectOptions{
ID: &projectIdLink,
Name: core.StringPtr("acme-microservice"),
Description: core.StringPtr("A microservice to deploy on top of ACME infrastructure."),
DestroyOnDelete: core.BoolPtr(true),
Configs: []projectv1.ProjectConfigTerraform{*projectConfigTerraformModel},
}

projectCanonical, response, err := projectService.UpdateProject(updateProjectOptions)
Expand All @@ -321,10 +360,10 @@ var _ = Describe(`ProjectV1 Integration Tests`, func() {
ProjectID: &projectIdLink,
}

projectConfigCollection, response, err := projectService.ListConfigs(listConfigsOptions)
projectConfigCollectionTerraform, response, err := projectService.ListConfigs(listConfigsOptions)
Expect(err).To(BeNil())
Expect(response.StatusCode).To(Equal(200))
Expect(projectConfigCollection).ToNot(BeNil())
Expect(projectConfigCollectionTerraform).ToNot(BeNil())
})
})

Expand Down
Loading

0 comments on commit 5c102b9

Please sign in to comment.