Skip to content

Commit

Permalink
Merge pull request #14 from amouhadi/OBID-1444-US2ApexKubeStackUpdate
Browse files Browse the repository at this point in the history
feat: update API endpoint to v3
  • Loading branch information
locmai authored Sep 11, 2023
2 parents 58603b3 + e5c574f commit 2b495c7
Show file tree
Hide file tree
Showing 27 changed files with 958 additions and 651 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## 0.4.0
* upgrade: upgrade cc api
*
## 0.3.4

BUG FIXES:
Expand Down
119 changes: 66 additions & 53 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,23 +174,23 @@ func (c *Client) GetAccessProfile(ctx context.Context, id string) (*AccessProfil
return &res, nil
}

func (c *Client) GetSourceEntitlements(ctx context.Context, id string) (*SourceEntitlements, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/cc/api/entitlement/list?CISApplicationId=%s", c.BaseURL, id), nil)
func (c *Client) GetSourceEntitlements(ctx context.Context, id string) ([]*SourceEntitlement, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/beta/entitlements?filters=source.id", c.BaseURL)+url.QueryEscape(" eq ")+fmt.Sprintf("\"%s\"", id), nil)
if err != nil {
log.Printf("Creation of new http request failed: %+v\n", err)
return nil, err
}

req = req.WithContext(ctx)

res := SourceEntitlements{}
var res []*SourceEntitlement
if err := c.sendRequest(req, &res); err != nil {
log.Printf("Failed Source Entitlements get response:%+v\n", res)
log.Fatal(err)
return nil, err
}

return &res, nil
return res, nil
}

func (c *Client) CreateAccessProfile(ctx context.Context, accessProfile *AccessProfile) (*AccessProfile, error) {
Expand Down Expand Up @@ -268,7 +268,7 @@ func (c *Client) DeleteAccessProfile(ctx context.Context, accessProfile *AccessP
}

func (c *Client) GetRole(ctx context.Context, id string) (*Role, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/cc/api/role/get?id=%s", c.BaseURL, id), nil)
req, err := http.NewRequest("GET", fmt.Sprintf("%s/v3/roles/%s", c.BaseURL, id), nil)
if err != nil {
log.Printf("Creation of new http request failed: %+v\n", err)
return nil, err
Expand All @@ -294,7 +294,7 @@ func (c *Client) CreateRole(ctx context.Context, role *Role) (*Role, error) {
return nil, err
}

req, err := http.NewRequest("POST", fmt.Sprintf("%s/cc/api/role/create", c.BaseURL), bytes.NewBuffer(body))
req, err := http.NewRequest("POST", fmt.Sprintf("%s/v3/roles", c.BaseURL), bytes.NewBuffer(body))
if err != nil {
log.Printf("New request failed:%+v\n", err)
return nil, err
Expand All @@ -315,18 +315,18 @@ func (c *Client) CreateRole(ctx context.Context, role *Role) (*Role, error) {
return &res, nil
}

func (c *Client) UpdateRole(ctx context.Context, role *Role) (*Role, error) {
func (c *Client) UpdateRole(ctx context.Context, role []*UpdateRole, id interface{}) (*Role, error) {
body, err := json.Marshal(&role)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/cc/api/role/update/?id=%s", c.BaseURL, role.ID), bytes.NewBuffer(body))
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/v3/roles/%s", c.BaseURL, id), bytes.NewBuffer(body))
if err != nil {
log.Printf("Creation of new http request failed:%+v\n", err)
return nil, err
}

req.Header.Set("Content-Type", "application/json; charset=utf-8")
req.Header.Set("Content-Type", "application/json-patch+json; charset=utf-8")
req.Header.Set("Accept", "application/json; charset=utf-8")

req = req.WithContext(ctx)
Expand Down Expand Up @@ -431,8 +431,8 @@ func (c *Client) ManageAccountAggregationSchedule(ctx context.Context, scheduleA
return &res, nil
}

func (c *Client) GetAccountSchemaAttributes(ctx context.Context, sourceId string) (*AccountSchema, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/cc/api/source/getAccountSchema/%s", c.BaseURL, sourceId), nil)
func (c *Client) GetAccountSchema(ctx context.Context, sourceId string, id string) (*AccountSchema, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/v3/sources/%s/schemas/%s", c.BaseURL, sourceId, id), nil)
if err != nil {
log.Printf("Creation of new http request failed: %+v\n", err)
return nil, err
Expand All @@ -446,82 +446,95 @@ func (c *Client) GetAccountSchemaAttributes(ctx context.Context, sourceId string
log.Fatal(err)
return nil, err
}
res.SourceID = sourceId

return &res, nil
}

func (c *Client) CreateAccountSchemaAttribute(ctx context.Context, attribute *AccountSchemaAttribute) (*AccountSchemaAttribute, error) {
endpoint := fmt.Sprintf("%s/cc/api/source/createSchemaAttribute/%s", c.BaseURL, attribute.SourceID)
data := url.Values{}
data.Set("name", attribute.Name)
data.Set("description", attribute.Description)
data.Set("type", attribute.Type)
data.Set("objectType", attribute.ObjectType)
data.Set("displayAttribute", fmt.Sprintf("%t", attribute.DisplayAttribute))
data.Set("entitlement", fmt.Sprintf("%t", attribute.Entitlement))
data.Set("identityAttribute", fmt.Sprintf("%t", attribute.IdentityAttribute))
data.Set("managed", fmt.Sprintf("%t", attribute.Managed))
data.Set("minable", fmt.Sprintf("%t", attribute.Minable))
data.Set("multi", fmt.Sprintf("%t", attribute.Multi))

req, err := http.NewRequest("POST", endpoint, strings.NewReader(data.Encode()))

//func (c *Client) CreateAccountSchema(ctx context.Context, accountSchema *AccountSchema) (*AccountSchema, error) {
//for _, value := range updateAccountSchema {
// log.Printf("arrBody: %+v, value: %+v", value, value.Value)
//}
//log.Printf("arrBody type: %+v", reflect.TypeOf(updateAccountSchema))
//body, err := json.Marshal(&updateAccountSchema)
//log.Printf("body: %+v", string(body))
//
//if err != nil {
// return nil, err
//}
//req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/v3/sources/%s/schemas/%s", c.BaseURL, sourceId, schemaId), bytes.NewBuffer(body))
//if err != nil {
// log.Printf("New request failed:%+v\n", err)
// return nil, err
//}
//
//req.Header.Set("Content-Type", "application/json-patch+json; charset=utf-8")
//req.Header.Set("Accept", "application/json; charset=utf-8")
//
//req = req.WithContext(ctx)
//res := AccountSchema{}
//if err := c.sendRequest(req, &res); err != nil {
// log.Printf("get body: %+v\n", req.GetBody)
//
// log.Printf("Failed Account Schema Attribute creation. response:%+v\n", res)
// log.Fatal(err)
// return nil, err
//}
//for _, value := range updateAccountSchema {
// log.Printf("arrBody: %+v, value: %+v", value, value.Value)
//}
//return &res, nil
//}

func (c *Client) UpdateAccountSchema(ctx context.Context, accountSchema *AccountSchema) (*AccountSchema, error) {
body, err := json.Marshal(&accountSchema)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/v3/sources/%s/schemas/%s", c.BaseURL, accountSchema.SourceID, accountSchema.ID), bytes.NewBuffer(body))
if err != nil {
log.Printf("New request failed:%+v\n", err)
return nil, err
}

req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
req.Header.Set("Content-Type", "application/json; charset=utf-8")
req.Header.Set("Accept", "application/json; charset=utf-8")

req = req.WithContext(ctx)

res := AccountSchemaAttribute{}
res := AccountSchema{}
if err := c.sendRequest(req, &res); err != nil {
log.Printf("Failed Account Schema Attribute creation. response:%+v\n", res)
log.Printf("Failed Account Schema Attribute updating. response:%+v\n", res)
log.Fatal(err)
return nil, err
}

return &res, nil
}

func (c *Client) UpdateAccountSchemaAttribute(ctx context.Context, attribute *AccountSchemaAttribute) (*AccountSchemaAttribute, error) {
_, errDelete := c.DeleteAccountSchemaAttribute(ctx, attribute)
if errDelete != nil {
return nil, errDelete
}
res, errCreate := c.CreateAccountSchemaAttribute(ctx, attribute)
if errCreate != nil {
return nil, errDelete
}
return res, nil
}
func (c *Client) DeleteAccountSchema(ctx context.Context, accountSchema *AccountSchema) error {
endpoint := fmt.Sprintf("%s/v3/sources/%s/schemas/%s", c.BaseURL, accountSchema.SourceID, accountSchema.ID)

func (c *Client) DeleteAccountSchemaAttribute(ctx context.Context, attribute *AccountSchemaAttribute) (*AccountSchemaAttribute, error) {
endpoint := fmt.Sprintf("%s/cc/api/source/deleteSchemaAttribute/%s", c.BaseURL, attribute.SourceID)
data := url.Values{}
data.Set("names", attribute.Name)
data.Set("objectType", attribute.ObjectType)
client := &http.Client{}

req, err := http.NewRequest("POST", endpoint, strings.NewReader(data.Encode()))
req, err := http.NewRequest("DELETE", endpoint, nil)

if err != nil {
return nil, err
return err
}

req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
req.Header.Set("Accept", "application/json; charset=utf-8")

req = req.WithContext(ctx)
res, err := client.Do(req)

res := AccountSchemaAttribute{}
if err := c.sendRequest(req, &res); err != nil {
if err != nil {
log.Printf("Failed Account Schema Attribute deletion. response:%+v\n", res)
log.Fatal(err)
return nil, err
return err
}

return &res, nil
return nil
}

func (c *Client) CreatePasswordPolicy(ctx context.Context, attributes *PasswordPolicy) (*PasswordPolicy, error) {
Expand Down
37 changes: 8 additions & 29 deletions data_source_role.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,57 +15,36 @@ func dataSourceRole() *schema.Resource {
Type: schema.TypeString,
Required: true,
},
"access_profile_ids": {
"access_profiles": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
Elem: &schema.Resource{
Schema: roleAccessProfilesFields(),
},
},
"approval_schemes": {
Type: schema.TypeString,
Computed: true,
},
"denied_comments_required": {
Type: schema.TypeBool,
Computed: true,
},
"description": {
Type: schema.TypeString,
Computed: true,
},
"disabled": {
"enabled": {
Type: schema.TypeBool,
Computed: true,
},
"display_name": {
Type: schema.TypeString,
Computed: true,
},
"identity_count": {
Type: schema.TypeInt,
Computed: true,
},
"name": {
Type: schema.TypeString,
Computed: true,
},
"owner": {
Type: schema.TypeString,
Computed: true,
},
"request_comments_required": {
Type: schema.TypeBool,
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: sourceOwnerFields(),
},
},
"requestable": {
Type: schema.TypeBool,
Computed: true,
},
"revoke_request_approval_schemes": {
Type: schema.TypeString,
Computed: true,
},
},
}
}
Expand Down
2 changes: 1 addition & 1 deletion data_source_source_entitlements.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func dataSourceSourceEntitlementRead(d *schema.ResourceData, meta interface{}) e
return err
}

entitlement := getEntitlement(sourceEntitlements.Items, d.Get("name").(string))
entitlement := getEntitlement(sourceEntitlements, d.Get("name").(string))

return flattenSourceEntitlement(d, entitlement)
}
10 changes: 2 additions & 8 deletions import_account_schema_attribute.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,8 @@ package main

import "github.com/hashicorp/terraform-plugin-sdk/helper/schema"

func resourceAccountSchemaAttributeImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
sourceID, name, err := splitAccountSchemaAttributeID(d.Id())
if err != nil {
return []*schema.ResourceData{}, err
}
d.Set("source_id", sourceID)
d.Set("name", name)
err = resourceAccountSchemaAttributeRead(d, meta)
func resourceAccountSchemaImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
err := resourceAccountSchemaRead(d, meta)
if err != nil {
return []*schema.ResourceData{}, err
}
Expand Down
2 changes: 1 addition & 1 deletion provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func Provider() terraform.ResourceProvider {
"identitynow_access_profile": resourceAccessProfile(),
"identitynow_role": resourceRole(),
"identitynow_account_aggregation_schedule": resourceScheduleAccountAggregation(),
"identitynow_account_schema_attribute": resourceAccountSchemaAttribute(),
"identitynow_account_schema_attribute": resourceAccountSchema(),
"identitynow_password_policy": resourcePasswordPolicy(),
},

Expand Down
Loading

0 comments on commit 2b495c7

Please sign in to comment.