Skip to content

Commit

Permalink
Make hub_id part of the provider again
Browse files Browse the repository at this point in the history
  • Loading branch information
mvantellingen committed Apr 21, 2021
1 parent 0d0dd9d commit 4276250
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 115 deletions.
18 changes: 2 additions & 16 deletions amplience/data_source_content_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ package amplience
import (
"context"

"github.com/davecgh/go-spew/spew"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/labd/amplience-go-sdk/content"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand All @@ -31,10 +29,6 @@ func dataSourceContentRepository() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"hub_id": {
Type: schema.TypeString,
Computed: true,
},
"name": {
Type: schema.TypeString,
Computed: true,
Expand All @@ -45,24 +39,16 @@ func dataSourceContentRepository() *schema.Resource {

func dataSourceContentRepositoryRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

repository_id := data.Get("id").(string)
repository, err := c.ContentRepositoryGet(repository_id)
if err != nil {
return diag.FromErr(err)
}

hub, err := repository.GetHub(c)
repository, err := ci.client.ContentRepositoryGet(repository_id)
if err != nil {
return diag.FromErr(err)
}

spew.Dump(repository)

data.SetId(repository.ID)
data.Set("label", repository.Label)
data.Set("hub_id", hub.ID)
data.Set("name", repository.Name)
return diags
}
6 changes: 2 additions & 4 deletions amplience/data_source_hub.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package amplience
import (
"context"

"github.com/labd/amplience-go-sdk/content"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
Expand Down Expand Up @@ -32,11 +30,11 @@ func dataSourceHub() *schema.Resource {

func dataSourceHubRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

hub_id := data.Get("id").(string)

hub, err := c.HubGet(hub_id)
hub, err := ci.client.HubGet(hub_id)
if err != nil {
return diag.FromErr(err)
}
Expand Down
14 changes: 13 additions & 1 deletion amplience/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/davecgh/go-spew/spew"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/labd/amplience-go-sdk/content"
)

Expand Down Expand Up @@ -41,6 +42,12 @@ func Provider() *schema.Provider {
DefaultFunc: schema.EnvDefaultFunc("AMPLIENCE_AUTH_URL", "https://auth.adis.ws/oauth/token"),
Sensitive: false,
},
"hub_id": {
Description: "ID of the Hub to manage",
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: ValidateDiagWrapper(validation.StringDoesNotContainAny(" ")),
},
},
ResourcesMap: map[string]*schema.Resource{
"amplience_content_repository": resourceContentRepository(),
Expand Down Expand Up @@ -79,5 +86,10 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}
return nil, diag.FromErr(err)
}

return client, diags
client_info := &ClientInfo{
client: client,
hubID: d.Get("hub_id").(string),
}

return client_info, diags
}
28 changes: 7 additions & 21 deletions amplience/resource_content_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ func resourceContentRepository() *schema.Resource {
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"hub_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateDiagFunc: ValidateDiagWrapper(validation.StringDoesNotContainAny(" ")),
},
"name": {
Type: schema.TypeString,
Required: true,
Expand All @@ -48,15 +42,14 @@ func resourceContentRepository() *schema.Resource {

func resourceContentRepositoryCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

hub_id := data.Get("hub_id").(string)
input := content.ContentRepositoryInput{
Name: data.Get("name").(string),
Label: data.Get("label").(string),
}

repository, err := c.ContentRepositoryCreate(hub_id, input)
repository, err := ci.client.ContentRepositoryCreate(ci.hubID, input)

if err != nil {
return diag.FromErr(err)
Expand All @@ -65,40 +58,33 @@ func resourceContentRepositoryCreate(ctx context.Context, data *schema.ResourceD
data.SetId(repository.ID)
data.Set("name", repository.Name)
data.Set("label", repository.Label)
data.Set("hub_id", hub_id)
return diags
}

func resourceContentRepositoryRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

repository_id := data.Id()

repository, err := c.ContentRepositoryGet(repository_id)
if err != nil {
return diag.FromErr(err)
}

hub, err := repository.GetHub(c)
repository, err := ci.client.ContentRepositoryGet(repository_id)
if err != nil {
return diag.FromErr(err)
}

data.Set("name", repository.Name)
data.Set("label", repository.Label)
data.Set("hub_id", hub.ID)
return diags
}

func resourceContentRepositoryUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

repository_id := data.Id()

if data.HasChange("label") || data.HasChange("name") {
current, err := c.ContentRepositoryGet(repository_id)
current, err := ci.client.ContentRepositoryGet(repository_id)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -108,7 +94,7 @@ func resourceContentRepositoryUpdate(ctx context.Context, data *schema.ResourceD
Label: data.Get("label").(string),
}

repository, err := c.ContentRepositoryUpdate(current, input)
repository, err := ci.client.ContentRepositoryUpdate(current, input)
if err != nil {
return diag.FromErr(err)
}
Expand Down
33 changes: 11 additions & 22 deletions amplience/resource_content_type.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,6 @@ func resourceContentType() *schema.Resource {
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"hub_id": {
Description: "ID of the Hub the Content Type should be registered to",
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateDiagFunc: ValidateDiagWrapper(validation.StringDoesNotContainAny(" ")),
},
"content_type_uri": {
Type: schema.TypeString,
Required: true,
Expand Down Expand Up @@ -89,54 +82,51 @@ func resourceContentType() *schema.Resource {

func resourceContentTypeCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

hub_id := data.Get("hub_id").(string)
input := resourceContentTypeCreateInput(data)
content_type, err := c.ContentTypeCreate(hub_id, input)
content_type, err := ci.client.ContentTypeCreate(ci.hubID, input)

if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSaveState(data, hub_id, content_type)
resourceContentTypeSaveState(data, content_type)
return diags
}

func resourceContentTypeRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

content_type_id := data.Id()
hub_id := data.Get("hub_id").(string)
content_type, err := c.ContentTypeGet(content_type_id)
content_type, err := ci.client.ContentTypeGet(content_type_id)
if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSaveState(data, hub_id, content_type)
resourceContentTypeSaveState(data, content_type)
return diags
}

func resourceContentTypeUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

content_type_id := data.Id()
hub_id := data.Get("hub_id").(string)

current, err := c.ContentTypeGet(content_type_id)
current, err := ci.client.ContentTypeGet(content_type_id)
if err != nil {
return diag.FromErr(err)
}

input := resourceContentTypeCreateInput(data)
content_type, err := c.ContentTypeUpdate(current, input)
content_type, err := ci.client.ContentTypeUpdate(current, input)
if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSaveState(data, hub_id, content_type)
resourceContentTypeSaveState(data, content_type)
return diags
}

Expand All @@ -156,12 +146,11 @@ func resourceContentTypeDelete(ctx context.Context, data *schema.ResourceData, m
return diags
}

func resourceContentTypeSaveState(data *schema.ResourceData, hub_id string, resource content.ContentType) {
func resourceContentTypeSaveState(data *schema.ResourceData, resource content.ContentType) {
data.SetId(resource.ID)
data.Set("content_type_uri", resource.ContentTypeURI)
data.Set("status", resource.Status)
data.Set("label", resource.Settings.Label)
data.Set("hub_id", hub_id)
}

func resourceContentTypeCreateInput(data *schema.ResourceData) content.ContentTypeInput {
Expand Down
39 changes: 14 additions & 25 deletions amplience/resource_content_type_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ func resourceContentTypeSchema() *schema.Resource {
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"hub_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateDiagFunc: ValidateDiagWrapper(validation.StringDoesNotContainAny(" ")),
},
"body": {
Type: schema.TypeString,
Required: true,
Expand All @@ -54,49 +48,45 @@ func resourceContentTypeSchema() *schema.Resource {

func resourceContentTypeSchemaCreate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

hub_id := data.Get("hub_id").(string)
input := content.ContentTypeSchemaInput{
SchemaID: data.Get("schema_id").(string),
Body: data.Get("body").(string),
ValidationLevel: data.Get("validation_level").(string),
}

schema, err := c.ContentTypeSchemaCreate(hub_id, input)
schema, err := ci.client.ContentTypeSchemaCreate(ci.hubID, input)

if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSchemaSaveState(data, hub_id, schema)
resourceContentTypeSchemaSaveState(data, schema)
return diags
}

func resourceContentTypeSchemaRead(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

schema_id := data.Id()
hub_id := data.Get("hub_id").(string)

schema, err := c.ContentTypeSchemaGet(schema_id)
schema, err := ci.client.ContentTypeSchemaGet(schema_id)
if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSchemaSaveState(data, hub_id, schema)
resourceContentTypeSchemaSaveState(data, schema)
return diags
}

func resourceContentTypeSchemaUpdate(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := meta.(*content.Client)
ci := getClient(meta)

schema_id := data.Id()
hub_id := data.Get("hub_id").(string)
if data.HasChange("body") || data.HasChange("validation_level") {
current, err := c.ContentTypeSchemaGet(schema_id)
current, err := ci.client.ContentTypeSchemaGet(schema_id)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -107,26 +97,26 @@ func resourceContentTypeSchemaUpdate(ctx context.Context, data *schema.ResourceD
ValidationLevel: data.Get("validation_level").(string),
}

schema, err := c.ContentTypeSchemaUpdate(current, input)
schema, err := ci.client.ContentTypeSchemaUpdate(current, input)
if err != nil {
return diag.FromErr(err)
}

resourceContentTypeSchemaSaveState(data, hub_id, schema)
resourceContentTypeSchemaSaveState(data, schema)
}

return diags
}

// The amplience API does not have a repository delete functionality. Setting ID to "" and returning nil
func resourceContentTypeSchemaDelete(ctx context.Context, data *schema.ResourceData, m interface{}) diag.Diagnostics {
func resourceContentTypeSchemaDelete(ctx context.Context, data *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
c := m.(*content.Client)
ci := getClient(meta)

id := data.Id()
version := data.Get("version").(int)

_, err := c.ContentTypeSchemaArchive(id, version)
_, err := ci.client.ContentTypeSchemaArchive(id, version)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -135,9 +125,8 @@ func resourceContentTypeSchemaDelete(ctx context.Context, data *schema.ResourceD
return diags
}

func resourceContentTypeSchemaSaveState(data *schema.ResourceData, hub_id string, resource content.ContentTypeSchema) {
func resourceContentTypeSchemaSaveState(data *schema.ResourceData, resource content.ContentTypeSchema) {
data.SetId(resource.ID)
data.Set("hub_id", hub_id)
data.Set("schema_id", resource.SchemaID)
data.Set("body", resource.Body)
data.Set("validation_level", resource.ValidationLevel)
Expand Down
Loading

0 comments on commit 4276250

Please sign in to comment.