Compare commits
No commits in common. "08dffb3e3a2c4dffff42edfad110d7476a43fe4e" and "787a2b96364e623cb6f50f953d4b009fe333e093" have entirely different histories.
08dffb3e3a
...
787a2b9636
2
Makefile
2
Makefile
@ -3,7 +3,7 @@ GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
|
|||||||
|
|
||||||
GOFMT ?= gofmt -s
|
GOFMT ?= gofmt -s
|
||||||
|
|
||||||
VERSION = 0.6.0
|
VERSION = 0.5.0
|
||||||
|
|
||||||
test: fmt-check
|
test: fmt-check
|
||||||
go test -i $(TEST) || exit 1
|
go test -i $(TEST) || exit 1
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
---
|
|
||||||
# generated by https://github.com/hashicorp/terraform-plugin-docs
|
|
||||||
page_title: "gitea_team Resource - terraform-provider-gitea"
|
|
||||||
subcategory: ""
|
|
||||||
description: |-
|
|
||||||
gitea_team manages Team that are part of an organisation.
|
|
||||||
---
|
|
||||||
|
|
||||||
# gitea_team (Resource)
|
|
||||||
|
|
||||||
`gitea_team` manages Team that are part of an organisation.
|
|
||||||
|
|
||||||
## Example Usage
|
|
||||||
|
|
||||||
```terraform
|
|
||||||
resource "gitea_org" "test_org" {
|
|
||||||
name = "test-org"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "gitea_user" "test" {
|
|
||||||
username = "test"
|
|
||||||
login_name = "test"
|
|
||||||
password = "Geheim1!"
|
|
||||||
email = "test@user.dev"
|
|
||||||
must_change_password = false
|
|
||||||
admin = true
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
|
||||||
name = "Devs"
|
|
||||||
organisation = gitea_org.test_org.name
|
|
||||||
description = "Devs of Test Org"
|
|
||||||
permission = "write"
|
|
||||||
members = [gitea_user.test.username]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
<!-- schema generated by tfplugindocs -->
|
|
||||||
## Schema
|
|
||||||
|
|
||||||
### Required
|
|
||||||
|
|
||||||
- `name` (String) Name of the Team
|
|
||||||
- `organisation` (String) The organisation which this Team is part of.
|
|
||||||
|
|
||||||
### Optional
|
|
||||||
|
|
||||||
- `can_create_repos` (Boolean) Flag if the Teams members should be able to create Rpositories in the Organisation
|
|
||||||
- `description` (String) Description of the Team
|
|
||||||
- `include_all_repositories` (Boolean) Flag if the Teams members should have access to all Repositories in the Organisation
|
|
||||||
- `members` (List of String) List of Users that should be part of this team
|
|
||||||
- `permission` (String) Permissions associated with this Team
|
|
||||||
Can be `none`, `read`, `write`, `admin` or `owner`
|
|
||||||
- `units` (String) List of types of Repositories that should be allowed to be created from Team members.
|
|
||||||
Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`, `repo.releases`, `repo.projects` and/or `repo.ext_wiki`
|
|
||||||
|
|
||||||
### Read-Only
|
|
||||||
|
|
||||||
- `id` (String) The ID of this resource.
|
|
||||||
|
|
||||||
|
|
@ -46,12 +46,3 @@ resource "gitea_public_key" "test_user_key" {
|
|||||||
read_only = true
|
read_only = true
|
||||||
username = gitea_user.test.username
|
username = gitea_user.test.username
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
|
||||||
name = "Devs"
|
|
||||||
organisation = gitea_org.test_org.name
|
|
||||||
description = "Devs of Test Org"
|
|
||||||
permission = "write"
|
|
||||||
members = [gitea_user.test.username]
|
|
||||||
}
|
|
||||||
|
@ -2,7 +2,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
gitea = {
|
gitea = {
|
||||||
source = "terraform.local/lerentis/gitea"
|
source = "terraform.local/lerentis/gitea"
|
||||||
version = "0.6.0"
|
version = "0.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
resource "gitea_org" "test_org" {
|
|
||||||
name = "test-org"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "gitea_user" "test" {
|
|
||||||
username = "test"
|
|
||||||
login_name = "test"
|
|
||||||
password = "Geheim1!"
|
|
||||||
email = "test@user.dev"
|
|
||||||
must_change_password = false
|
|
||||||
admin = true
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
|
||||||
name = "Devs"
|
|
||||||
organisation = gitea_org.test_org.name
|
|
||||||
description = "Devs of Test Org"
|
|
||||||
permission = "write"
|
|
||||||
members = [gitea_user.test.username]
|
|
||||||
}
|
|
@ -80,7 +80,6 @@ func Provider() terraform.ResourceProvider {
|
|||||||
"gitea_oauth2_app": resourceGiteaOauthApp(),
|
"gitea_oauth2_app": resourceGiteaOauthApp(),
|
||||||
"gitea_repository": resourceGiteaRepository(),
|
"gitea_repository": resourceGiteaRepository(),
|
||||||
"gitea_public_key": resourceGiteaPublicKey(),
|
"gitea_public_key": resourceGiteaPublicKey(),
|
||||||
"gitea_team": resourceGiteaTeam(),
|
|
||||||
},
|
},
|
||||||
|
|
||||||
ConfigureFunc: providerConfigure,
|
ConfigureFunc: providerConfigure,
|
||||||
|
@ -90,7 +90,7 @@ func resourcePublicKeyDelete(d *schema.ResourceData, meta interface{}) (err erro
|
|||||||
|
|
||||||
func setPublicKeyResourceData(pubKey *gitea.PublicKey, d *schema.ResourceData) (err error) {
|
func setPublicKeyResourceData(pubKey *gitea.PublicKey, d *schema.ResourceData) (err error) {
|
||||||
d.SetId(fmt.Sprintf("%d", pubKey.ID))
|
d.SetId(fmt.Sprintf("%d", pubKey.ID))
|
||||||
d.Set(PublicKeyUser, d.Get(PublicKeyUser).(string))
|
d.Set(PublicKeyUser, pubKey.Owner.UserName)
|
||||||
d.Set(PublicKey, pubKey.Key)
|
d.Set(PublicKey, pubKey.Key)
|
||||||
d.Set(PublicKeyTitle, pubKey.Title)
|
d.Set(PublicKeyTitle, pubKey.Title)
|
||||||
d.Set(PublicKeyReadOnlyFlag, pubKey.ReadOnly)
|
d.Set(PublicKeyReadOnlyFlag, pubKey.ReadOnly)
|
||||||
|
@ -1,296 +0,0 @@
|
|||||||
package gitea
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"code.gitea.io/sdk/gitea"
|
|
||||||
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
TeamName string = "name"
|
|
||||||
TeamOrg string = "organisation"
|
|
||||||
TeamDescription string = "description"
|
|
||||||
TeamPermissions string = "permission"
|
|
||||||
TeamCreateRepoFlag string = "can_create_repos"
|
|
||||||
TeamIncludeAllReposFlag string = "include_all_repositories"
|
|
||||||
TeamUnits string = "units"
|
|
||||||
TeamMembers string = "members"
|
|
||||||
)
|
|
||||||
|
|
||||||
func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) {
|
|
||||||
client := meta.(*gitea.Client)
|
|
||||||
|
|
||||||
id, err := strconv.ParseInt(d.Id(), 10, 64)
|
|
||||||
|
|
||||||
var resp *gitea.Response
|
|
||||||
var team *gitea.Team
|
|
||||||
|
|
||||||
team, resp, err = client.GetTeam(id)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
if resp.StatusCode == 404 {
|
|
||||||
d.SetId("")
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = setTeamResourceData(team, d)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) {
|
|
||||||
client := meta.(*gitea.Client)
|
|
||||||
|
|
||||||
var team *gitea.Team
|
|
||||||
var units []gitea.RepoUnitType
|
|
||||||
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.code") {
|
|
||||||
units = append(units, gitea.RepoUnitCode)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") {
|
|
||||||
units = append(units, gitea.RepoUnitIssues)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") {
|
|
||||||
units = append(units, gitea.RepoUnitExtIssues)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") {
|
|
||||||
units = append(units, gitea.RepoUnitWiki)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") {
|
|
||||||
units = append(units, gitea.RepoUnitPulls)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") {
|
|
||||||
units = append(units, gitea.RepoUnitReleases)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") {
|
|
||||||
units = append(units, gitea.RepoUnitExtWiki)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") {
|
|
||||||
units = append(units, gitea.RepoUnitProjects)
|
|
||||||
}
|
|
||||||
|
|
||||||
opts := gitea.CreateTeamOption{
|
|
||||||
Name: d.Get(TeamName).(string),
|
|
||||||
Description: d.Get(TeamDescription).(string),
|
|
||||||
Permission: gitea.AccessMode(d.Get(TeamPermissions).(string)),
|
|
||||||
CanCreateOrgRepo: d.Get(TeamCreateRepoFlag).(bool),
|
|
||||||
IncludesAllRepositories: d.Get(TeamIncludeAllReposFlag).(bool),
|
|
||||||
Units: units,
|
|
||||||
}
|
|
||||||
|
|
||||||
team, _, err = client.CreateTeam(d.Get(TeamOrg).(string), opts)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
users := d.Get(TeamMembers).([]interface{})
|
|
||||||
|
|
||||||
for _, user := range users {
|
|
||||||
if user != "" {
|
|
||||||
_, err = client.AddTeamMember(team.ID, user.(string))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = setTeamResourceData(team, d)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
|
|
||||||
client := meta.(*gitea.Client)
|
|
||||||
|
|
||||||
id, err := strconv.ParseInt(d.Id(), 10, 64)
|
|
||||||
|
|
||||||
var resp *gitea.Response
|
|
||||||
var team *gitea.Team
|
|
||||||
|
|
||||||
team, resp, err = client.GetTeam(id)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
if resp.StatusCode == 404 {
|
|
||||||
resourceTeamCreate(d, meta)
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
description := d.Get(TeamDescription).(string)
|
|
||||||
canCreateRepo := d.Get(TeamCreateRepoFlag).(bool)
|
|
||||||
includeAllRepos := d.Get(TeamIncludeAllReposFlag).(bool)
|
|
||||||
|
|
||||||
var units []gitea.RepoUnitType
|
|
||||||
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.code") {
|
|
||||||
units = append(units, gitea.RepoUnitCode)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") {
|
|
||||||
units = append(units, gitea.RepoUnitIssues)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") {
|
|
||||||
units = append(units, gitea.RepoUnitExtIssues)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") {
|
|
||||||
units = append(units, gitea.RepoUnitWiki)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") {
|
|
||||||
units = append(units, gitea.RepoUnitPulls)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") {
|
|
||||||
units = append(units, gitea.RepoUnitReleases)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") {
|
|
||||||
units = append(units, gitea.RepoUnitExtWiki)
|
|
||||||
}
|
|
||||||
if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") {
|
|
||||||
units = append(units, gitea.RepoUnitProjects)
|
|
||||||
}
|
|
||||||
|
|
||||||
opts := gitea.EditTeamOption{
|
|
||||||
Name: d.Get(TeamName).(string),
|
|
||||||
Description: &description,
|
|
||||||
Permission: gitea.AccessMode(d.Get(TeamPermissions).(string)),
|
|
||||||
CanCreateOrgRepo: &canCreateRepo,
|
|
||||||
IncludesAllRepositories: &includeAllRepos,
|
|
||||||
Units: units,
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = client.EditTeam(id, opts)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
users := d.Get(TeamMembers).([]interface{})
|
|
||||||
|
|
||||||
for _, user := range users {
|
|
||||||
if user != "" {
|
|
||||||
_, err = client.AddTeamMember(team.ID, user.(string))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
team, _, _ = client.GetTeam(id)
|
|
||||||
|
|
||||||
err = setTeamResourceData(team, d)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceTeamDelete(d *schema.ResourceData, meta interface{}) (err error) {
|
|
||||||
client := meta.(*gitea.Client)
|
|
||||||
|
|
||||||
id, err := strconv.ParseInt(d.Id(), 10, 64)
|
|
||||||
|
|
||||||
var resp *gitea.Response
|
|
||||||
|
|
||||||
resp, err = client.DeleteTeam(id)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
if resp.StatusCode == 404 {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func setTeamResourceData(team *gitea.Team, d *schema.ResourceData) (err error) {
|
|
||||||
d.SetId(fmt.Sprintf("%d", team.ID))
|
|
||||||
d.Set(TeamCreateRepoFlag, team.CanCreateOrgRepo)
|
|
||||||
d.Set(TeamDescription, team.Description)
|
|
||||||
d.Set(TeamName, team.Name)
|
|
||||||
d.Set(TeamPermissions, string(team.Permission))
|
|
||||||
d.Set(TeamIncludeAllReposFlag, team.IncludesAllRepositories)
|
|
||||||
d.Set(TeamUnits, d.Get(TeamUnits).(string))
|
|
||||||
d.Set(TeamOrg, d.Get(TeamOrg).(string))
|
|
||||||
d.Set(TeamMembers, d.Get(TeamMembers))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func resourceGiteaTeam() *schema.Resource {
|
|
||||||
return &schema.Resource{
|
|
||||||
Read: resourceTeamRead,
|
|
||||||
Create: resourceTeamCreate,
|
|
||||||
Update: resourceTeamUpdate,
|
|
||||||
Delete: resourceTeamDelete,
|
|
||||||
Importer: &schema.ResourceImporter{
|
|
||||||
State: schema.ImportStatePassthrough,
|
|
||||||
},
|
|
||||||
Schema: map[string]*schema.Schema{
|
|
||||||
"name": {
|
|
||||||
Type: schema.TypeString,
|
|
||||||
Required: true,
|
|
||||||
ForceNew: true,
|
|
||||||
Description: "Name of the Team",
|
|
||||||
},
|
|
||||||
"organisation": {
|
|
||||||
Type: schema.TypeString,
|
|
||||||
Required: true,
|
|
||||||
ForceNew: true,
|
|
||||||
Description: "The organisation which this Team is part of.",
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
Type: schema.TypeString,
|
|
||||||
Required: false,
|
|
||||||
Optional: true,
|
|
||||||
Default: "",
|
|
||||||
Description: "Description of the Team",
|
|
||||||
},
|
|
||||||
"permission": {
|
|
||||||
Type: schema.TypeString,
|
|
||||||
Required: false,
|
|
||||||
Optional: true,
|
|
||||||
Default: "",
|
|
||||||
Description: "Permissions associated with this Team\n" +
|
|
||||||
"Can be `none`, `read`, `write`, `admin` or `owner`",
|
|
||||||
},
|
|
||||||
"can_create_repos": {
|
|
||||||
Type: schema.TypeBool,
|
|
||||||
Required: false,
|
|
||||||
Optional: true,
|
|
||||||
Default: true,
|
|
||||||
Description: "Flag if the Teams members should be able to create Rpositories in the Organisation",
|
|
||||||
},
|
|
||||||
"include_all_repositories": {
|
|
||||||
Type: schema.TypeBool,
|
|
||||||
Required: false,
|
|
||||||
Optional: true,
|
|
||||||
Default: true,
|
|
||||||
Description: "Flag if the Teams members should have access to all Repositories in the Organisation",
|
|
||||||
},
|
|
||||||
"units": {
|
|
||||||
Type: schema.TypeString,
|
|
||||||
Required: false,
|
|
||||||
Optional: true,
|
|
||||||
Default: "[repo.code, repo.issues, repo.ext_issues, repo.wiki, repo.pulls, repo.releases, repo.projects, repo.ext_wiki]",
|
|
||||||
Description: "List of types of Repositories that should be allowed to be created from Team members.\n" +
|
|
||||||
"Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`, `repo.releases`, `repo.projects` and/or `repo.ext_wiki`",
|
|
||||||
},
|
|
||||||
"members": {
|
|
||||||
Type: schema.TypeList,
|
|
||||||
Elem: &schema.Schema{
|
|
||||||
Type: schema.TypeString,
|
|
||||||
},
|
|
||||||
Optional: true,
|
|
||||||
Required: false,
|
|
||||||
Computed: true,
|
|
||||||
Description: "List of Users that should be part of this team",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Description: "`gitea_team` manages Team that are part of an organisation.",
|
|
||||||
}
|
|
||||||
}
|
|
@ -196,6 +196,7 @@ func resourceUserDelete(d *schema.ResourceData, meta interface{}) (err error) {
|
|||||||
|
|
||||||
func setUserResourceData(user *gitea.User, d *schema.ResourceData) (err error) {
|
func setUserResourceData(user *gitea.User, d *schema.ResourceData) (err error) {
|
||||||
d.SetId(fmt.Sprintf("%d", user.ID))
|
d.SetId(fmt.Sprintf("%d", user.ID))
|
||||||
|
d.Set("id", user.ID)
|
||||||
d.Set(userName, user.UserName)
|
d.Set(userName, user.UserName)
|
||||||
d.Set(userEmail, user.Email)
|
d.Set(userEmail, user.Email)
|
||||||
d.Set(userFullName, user.FullName)
|
d.Set(userFullName, user.FullName)
|
||||||
|
Loading…
Reference in New Issue
Block a user