Skip to content

Commit

Permalink
fix team resource
Browse files Browse the repository at this point in the history
member, viewer and pipeline-operator can be enabled to set.
  • Loading branch information
Shu Kutsuzawa committed Aug 2, 2020
1 parent 6650e6c commit 03146ed
Showing 1 changed file with 50 additions and 52 deletions.
102 changes: 50 additions & 52 deletions concourse/resource_team.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,34 +67,8 @@ func resourceTeam() *schema.Resource {

func resourceTeamCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
var diags diag.Diagnostics

client := m.(cc.Client)
teamName := d.Get("name").(string)
ownerGroups := ifs2strs(d.Get("owner_groups").([]interface{}))
ownerUsers := ifs2strs(d.Get("owner_users").([]interface{}))
team := atc.Team{
Name: teamName,
Auth: atc.TeamAuth{
"owner": {
"groups": ownerGroups,
"users": ownerUsers,
},
},
}
createdTeam, _, _, err := client.Team(teamName).CreateOrUpdate(team)
if err != nil {
diags = append(diags, diag.Diagnostic{
Severity: diag.Error,
Summary: "failed to create team",
Detail: err.Error(),
})
return diags
}
d.SetId(strconv.Itoa(createdTeam.ID))
t := flattenTeamAuthData(createdTeam.Auth)
for k, v := range t {
d.Set(k, v)
}
diags = append(diags, createOrUpdateTeamFromData(d, client)...)
return diags
}

Expand Down Expand Up @@ -134,31 +108,7 @@ func resourceTeamUpdate(ctx context.Context, d *schema.ResourceData, m interface
return diags
}
}
teamName := d.Get("name").(string)
ownerGroups := ifs2strs(d.Get("owner_groups").([]interface{}))
ownerUsers := ifs2strs(d.Get("owner_users").([]interface{}))
team := atc.Team{
Name: teamName,
Auth: atc.TeamAuth{
"owner": {
"groups": ownerGroups,
"users": ownerUsers,
},
},
}
createdTeam, _, _, err := client.Team(teamName).CreateOrUpdate(team)
if err != nil {
diags = append(diags, diag.Diagnostic{
Severity: diag.Error,
Summary: "failed to create team",
})
return diags
}
d.SetId(strconv.Itoa(createdTeam.ID))
t := flattenTeamAuthData(createdTeam.Auth)
for k, v := range t {
d.Set(k, v)
}
diags = append(diags, createOrUpdateTeamFromData(d, client)...)
return diags
}

Expand All @@ -185,3 +135,51 @@ func ifs2strs(ifs []interface{}) []string {
}
return strs
}

func createOrUpdateTeamFromData(d *schema.ResourceData, client cc.Client) diag.Diagnostics {
teamName := d.Get("name").(string)
ownerGroups := ifs2strs(d.Get("owner_groups").([]interface{}))
ownerUsers := ifs2strs(d.Get("owner_users").([]interface{}))
memberGroups := ifs2strs(d.Get("member_groups").([]interface{}))
memberUsers := ifs2strs(d.Get("member_users").([]interface{}))
viewerGroups := ifs2strs(d.Get("viewer_groups").([]interface{}))
viewerUsers := ifs2strs(d.Get("viewer_users").([]interface{}))
pipelineOperatorGroups := ifs2strs(d.Get("pipeline_operator_groups").([]interface{}))
pipelineOperatorUsers := ifs2strs(d.Get("pipeline_operator_users").([]interface{}))
team := atc.Team{
Name: teamName,
Auth: atc.TeamAuth{
"owner": {
"groups": ownerGroups,
"users": ownerUsers,
},
"member": {
"groups": memberGroups,
"users": memberUsers,
},
"viewer": {
"groups": viewerGroups,
"users": viewerUsers,
},
"pipeline-operator": {
"groups": pipelineOperatorGroups,
"users": pipelineOperatorUsers,
},
},
}
updatedTeam, _, _, err := client.Team(teamName).CreateOrUpdate(team)
var diags diag.Diagnostics
if err != nil {
diags = append(diags, diag.Diagnostic{
Severity: diag.Error,
Summary: "failed to create or update team",
})
return diags
}
d.SetId(strconv.Itoa(updatedTeam.ID))
t := flattenTeamAuthData(updatedTeam.Auth)
for k, v := range t {
d.Set(k, v)
}
return diags
}

0 comments on commit 03146ed

Please sign in to comment.