Skip to content

Commit

Permalink
Merge pull request #12 from tuckner/team-and-folder
Browse files Browse the repository at this point in the history
add folders and teams
  • Loading branch information
tuckner authored May 13, 2021
2 parents 80648a8 + 40cd774 commit 69b7784
Show file tree
Hide file tree
Showing 11 changed files with 608 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ HOSTNAME=github.com
NAMESPACE=tuckner
NAME=tines
BINARY=terraform-provider-${NAME}
VERSION=0.0.16
VERSION=0.0.17
OS_ARCH=darwin_amd64

default: install
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ require (
github.com/posener/complete v1.2.3 // indirect
github.com/spf13/afero v1.5.1 // indirect
github.com/trivago/tgo v1.0.7
github.com/tuckner/go-tines v0.0.0-20210513195750-5ecdf849cf80
github.com/tuckner/go-tines v0.0.0-20210513212128-3736468dc47e
github.com/ulikunitz/xz v0.5.10 // indirect
github.com/vmihailenco/tagparser v0.1.2 // indirect
github.com/zclconf/go-cty-yaml v1.0.2 // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,8 @@ github.com/tuckner/go-tines v0.0.0-20210513162830-3ac260b9c4fd h1:YaoIRE/WO7fO3t
github.com/tuckner/go-tines v0.0.0-20210513162830-3ac260b9c4fd/go.mod h1:mi0a2ag0sxrUs/WoQvsuKJA70ktQIw86NVS+s53aYww=
github.com/tuckner/go-tines v0.0.0-20210513195750-5ecdf849cf80 h1:WHE4fDc60g0lhtscfdLIBZ6TmpLtfyZyBKV8/d0Kzt0=
github.com/tuckner/go-tines v0.0.0-20210513195750-5ecdf849cf80/go.mod h1:wDzIqfz+pYvI/r/SVekVhAYXpOfxYDjH/aNtcf19UPE=
github.com/tuckner/go-tines v0.0.0-20210513212128-3736468dc47e h1:FOQMH7IMgslaaSduQkw8ubRulDODdfLF2pSaMJ/mQU0=
github.com/tuckner/go-tines v0.0.0-20210513212128-3736468dc47e/go.mod h1:wDzIqfz+pYvI/r/SVekVhAYXpOfxYDjH/aNtcf19UPE=
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4=
github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
Expand Down
2 changes: 2 additions & 0 deletions tines/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ func Provider() terraform.ResourceProvider {
"tines_annotation": resourceTinesAnnotation(),
"tines_story": resourceTinesStory(),
"tines_credential": resourceTinesCredential(),
"tines_team": resourceTinesTeam(),
"tines_folder": resourceTinesFolder(),
},

DataSourcesMap: map[string]*schema.Resource{
Expand Down
133 changes: 133 additions & 0 deletions tines/resource_tines_folder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package tines

import (
"strconv"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/tuckner/go-tines/tines"
)

func resourceTinesFolder() *schema.Resource {
return &schema.Resource{
Create: resourceTinesFolderCreate,
Read: resourceTinesFolderRead,
Update: resourceTinesFolderUpdate,
Delete: resourceTinesFolderDelete,

Schema: map[string]*schema.Schema{
"folder_id": {
Type: schema.TypeInt,
Computed: true,
},
"name": {
Type: schema.TypeString,
Optional: true,
},
"content_type": {
Type: schema.TypeString,
Optional: true,
},
"team_id": {
Type: schema.TypeInt,
Optional: true,
},
"size": {
Type: schema.TypeInt,
Computed: true,
},
},
}
}

func resourceTinesFolderCreate(d *schema.ResourceData, meta interface{}) error {

name := d.Get("name").(string)
contentType := d.Get("content_type").(string)
teamID := d.Get("team_id").(int)

tinesClient := meta.(*tines.Client)

n := tines.Folder{
Name: name,
ContentType: contentType,
TeamID: teamID,
}

folder, _, err := tinesClient.Folder.Create(&n)
if err != nil {
return err
}

sfid := strconv.Itoa(folder.ID)

d.SetId(sfid)

return resourceTinesFolderRead(d, meta)
}

func resourceTinesFolderRead(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)

fid, _ := strconv.ParseInt(d.Id(), 10, 32)
folder, _, err := tinesClient.Folder.Get(int(fid))
if err != nil {
return err
}

sfid := strconv.Itoa(folder.ID)

d.SetId(sfid)
d.Set("folder_id", folder.ID)
d.Set("name", folder.Name)
d.Set("team_id", folder.TeamID)
d.Set("content_type", folder.ContentType)
d.Set("size", folder.Size)

return nil
}

func resourceTinesFolderDelete(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)
fid, _ := strconv.ParseInt(d.Id(), 10, 32)
_, err := tinesClient.Folder.Delete(int(fid))
if err != nil {
return err
}
d.SetId("")

return nil
}

func resourceTinesFolderUpdate(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)

name := d.Get("name").(string)
contentType := d.Get("content_type").(string)
teamID := d.Get("team_id").(int)
fid, _ := strconv.ParseInt(d.Id(), 10, 32)

n := tines.Folder{
Name: name,
ContentType: contentType,
TeamID: teamID,
}

folder, _, err := tinesClient.Folder.Update(int(fid), &n)
if err != nil {
return err
}

sfid := strconv.Itoa(folder.ID)

d.SetId(sfid)
d.Set("folder_id", folder.ID)
d.Set("name", folder.Name)
d.Set("team_id", folder.TeamID)
d.Set("content_type", folder.ContentType)
d.Set("size", folder.Size)

return resourceTinesFolderRead(d, meta)
}
107 changes: 107 additions & 0 deletions tines/resource_tines_team.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package tines

import (
"strconv"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/tuckner/go-tines/tines"
)

func resourceTinesTeam() *schema.Resource {
return &schema.Resource{
Create: resourceTinesTeamCreate,
Read: resourceTinesTeamRead,
Update: resourceTinesTeamUpdate,
Delete: resourceTinesTeamDelete,

Schema: map[string]*schema.Schema{
"team_id": {
Type: schema.TypeInt,
Computed: true,
},
"name": {
Type: schema.TypeString,
Optional: true,
},
},
}
}

func resourceTinesTeamCreate(d *schema.ResourceData, meta interface{}) error {

name := d.Get("name").(string)

tinesClient := meta.(*tines.Client)

n := tines.Team{
Name: name,
}

team, _, err := tinesClient.Team.Create(&n)
if err != nil {
return err
}

stid := strconv.Itoa(team.ID)

d.SetId(stid)

return resourceTinesTeamRead(d, meta)
}

func resourceTinesTeamRead(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)

tid, _ := strconv.ParseInt(d.Id(), 10, 32)
team, _, err := tinesClient.Team.Get(int(tid))
if err != nil {
return err
}

stid := strconv.Itoa(team.ID)

d.SetId(stid)
d.Set("team_id", team.ID)
d.Set("name", team.Name)

return nil
}

func resourceTinesTeamDelete(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)
tid, _ := strconv.ParseInt(d.Id(), 10, 32)
_, err := tinesClient.Team.Delete(int(tid))
if err != nil {
return err
}
d.SetId("")

return nil
}

func resourceTinesTeamUpdate(d *schema.ResourceData, meta interface{}) error {

tinesClient := meta.(*tines.Client)

name := d.Get("name").(string)
tid, _ := strconv.ParseInt(d.Id(), 10, 32)

n := tines.Team{
Name: name,
}

team, _, err := tinesClient.Team.Update(int(tid), &n)
if err != nil {
return err
}

stid := strconv.Itoa(team.ID)

d.SetId(stid)
d.Set("team_id", team.ID)
d.Set("name", team.Name)

return resourceTinesTeamRead(d, meta)
}
2 changes: 2 additions & 0 deletions vendor/github.com/tuckner/go-tines/tines/agent.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 69b7784

Please sign in to comment.