From cfa43451d85ded04d48687ded5f97f89f7d82091 Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Sat, 13 Aug 2022 18:43:03 +0200 Subject: [PATCH 1/4] #12 init --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fea4cf6..39f52c7 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor) GOFMT ?= gofmt -s -VERSION = 0.7.1 +VERSION = 0.7.2 test: fmt-check go test -i $(TEST) || exit 1 -- 2.45.2 From 8b25a1519eef7bb2df62252b4b5c8c4d8fac3f1f Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Sat, 13 Aug 2022 22:15:19 +0200 Subject: [PATCH 2/4] #12 fix terraform import for organisations --- README.md | 2 +- docs/index.md | 2 +- examples/main.tf | 3 +- examples/provider.tf | 2 +- examples/provider/provider.tf | 2 +- gitea/resource_gitea_organisation.go | 54 ++++++++++++++++++++++++---- 6 files changed, 53 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 93402c7..fcd0ce5 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ terraform { required_providers { gitea = { source = "Lerentis/gitea" - version = "0.7.1" + version = "0.7.2" } } } diff --git a/docs/index.md b/docs/index.md index c353dba..e5e038b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,7 +17,7 @@ terraform { required_providers { gitea = { source = "Lerentis/gitea" - version = "0.3.0" + version = "0.7.2" } } } diff --git a/examples/main.tf b/examples/main.tf index 79b3707..d3fe2ac 100644 --- a/examples/main.tf +++ b/examples/main.tf @@ -18,7 +18,8 @@ resource "gitea_repository" "mirror" { } resource "gitea_org" "test_org" { - name = "test-org" + name = "test-org" + description = "test description" } resource "gitea_repository" "org_repo" { diff --git a/examples/provider.tf b/examples/provider.tf index 65f23dd..24f0fca 100644 --- a/examples/provider.tf +++ b/examples/provider.tf @@ -2,7 +2,7 @@ terraform { required_providers { gitea = { source = "terraform.local/lerentis/gitea" - version = "0.7.1" + version = "0.7.2" } } } diff --git a/examples/provider/provider.tf b/examples/provider/provider.tf index c88cb79..4e8d17a 100644 --- a/examples/provider/provider.tf +++ b/examples/provider/provider.tf @@ -2,7 +2,7 @@ terraform { required_providers { gitea = { source = "Lerentis/gitea" - version = "0.3.0" + version = "0.7.2" } } } diff --git a/gitea/resource_gitea_organisation.go b/gitea/resource_gitea_organisation.go index 362b0d6..f13ca93 100644 --- a/gitea/resource_gitea_organisation.go +++ b/gitea/resource_gitea_organisation.go @@ -17,20 +17,60 @@ const ( RepoAdminChangeTeamAccess string = "repo_admin_change_team_access" ) +// might come in handy if we want to stick to numeric IDs +/*func searchOrgByClientId(c *gitea.Client, id int64) (res *gitea.Organization, err error) { + + page := 1 + + for { + orgs, _, err := c.AdminListOrgs(gitea.AdminListOrgsOptions{ + ListOptions: gitea.ListOptions{ + Page: page, + PageSize: 50, + }, + }) + if err != nil { + return nil, err + } + + if len(orgs) == 0 { + return nil, fmt.Errorf("Organisation with ID %d could not be found", id) + } + + for _, org := range orgs { + if org.ID == id { + return org, nil + } + } + + page += 1 + } +}*/ + func resourceOrgRead(d *schema.ResourceData, meta interface{}) (err error) { client := meta.(*gitea.Client) var org *gitea.Organization var resp *gitea.Response + var tmpOrgName string - org, resp, err = client.GetOrg(d.Get(orgName).(string)) + if d.Get(orgName).(string) == "" { + // terraform import as only access to the ID, therfore we set the ID to the name + tmpOrgName = d.Id() + } else { + tmpOrgName = d.Get(orgName).(string) + } + + org, resp, err = client.GetOrg(tmpOrgName) if err != nil { - if resp.StatusCode == 404 { - d.SetId("") - return nil + if resp != nil { + if resp.StatusCode == 404 { + d.SetId("") + return + } } else { - return err + return fmt.Errorf("Error response from client: %s\nOrg Name %s", err, tmpOrgName) } } @@ -114,7 +154,7 @@ func resourceOrgDelete(d *schema.ResourceData, meta interface{}) (err error) { } func setOrgResourceData(org *gitea.Organization, d *schema.ResourceData) (err error) { - d.SetId(fmt.Sprintf("%d", org.ID)) + d.SetId(org.UserName) d.Set("name", org.UserName) d.Set("full_name", org.FullName) d.Set("avatar_url", org.AvatarURL) @@ -133,7 +173,7 @@ func resourceGiteaOrg() *schema.Resource { Update: resourceOrgUpdate, Delete: resourceOrgDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "name": { -- 2.45.2 From aa7856ea7bf0024c236557f63bb24a2f5e45e6c8 Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Sat, 13 Aug 2022 22:37:46 +0200 Subject: [PATCH 3/4] #12 stick with IDs for consistency --- gitea/resource_gitea_organisation.go | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/gitea/resource_gitea_organisation.go b/gitea/resource_gitea_organisation.go index f13ca93..f8b941d 100644 --- a/gitea/resource_gitea_organisation.go +++ b/gitea/resource_gitea_organisation.go @@ -2,6 +2,7 @@ package gitea import ( "fmt" + "strconv" "code.gitea.io/sdk/gitea" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -18,7 +19,7 @@ const ( ) // might come in handy if we want to stick to numeric IDs -/*func searchOrgByClientId(c *gitea.Client, id int64) (res *gitea.Organization, err error) { +func searchOrgByClientId(c *gitea.Client, id int64) (res *gitea.Organization, err error) { page := 1 @@ -45,33 +46,19 @@ const ( page += 1 } -}*/ +} func resourceOrgRead(d *schema.ResourceData, meta interface{}) (err error) { client := meta.(*gitea.Client) var org *gitea.Organization - var resp *gitea.Response - var tmpOrgName string - if d.Get(orgName).(string) == "" { - // terraform import as only access to the ID, therfore we set the ID to the name - tmpOrgName = d.Id() - } else { - tmpOrgName = d.Get(orgName).(string) - } + id, err := strconv.ParseInt(d.Id(), 10, 64) - org, resp, err = client.GetOrg(tmpOrgName) + org, err = searchOrgByClientId(client, id) if err != nil { - if resp != nil { - if resp.StatusCode == 404 { - d.SetId("") - return - } - } else { - return fmt.Errorf("Error response from client: %s\nOrg Name %s", err, tmpOrgName) - } + return err } err = setOrgResourceData(org, d) @@ -154,7 +141,7 @@ func resourceOrgDelete(d *schema.ResourceData, meta interface{}) (err error) { } func setOrgResourceData(org *gitea.Organization, d *schema.ResourceData) (err error) { - d.SetId(org.UserName) + d.SetId(fmt.Sprintf("%d", org.ID)) d.Set("name", org.UserName) d.Set("full_name", org.FullName) d.Set("avatar_url", org.AvatarURL) -- 2.45.2 From 8e2fc7264bb8a913a9cd259835d95e438ad9708a Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Sat, 13 Aug 2022 22:45:54 +0200 Subject: [PATCH 4/4] shorten feedback loop --- .drone.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index fb46e0a..932bc8e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,13 +15,24 @@ steps: - push - pull_request - tag + - name: build-dev + image: golang:1.18.3-alpine3.16 + commands: + - "apk add --update --no-cache make" + - "make build" + when: + event: + - push + resources: + limits: + cpu: 1000 + memory: 1024MiB - name: build image: goreleaser/goreleaser commands: - goreleaser build --snapshot when: event: - - push - pull_request resources: limits: -- 2.45.2