Fix webhook support

This commit is contained in:
Gavin Bunney
2021-12-14 09:24:35 -08:00
parent f7325bc723
commit 4a6cb44484
2 changed files with 16 additions and 14 deletions

View File

@@ -64,6 +64,7 @@ func Provider() terraform.ResourceProvider {
"bitbucketserver_repository_hook": resourceRepositoryHook(), "bitbucketserver_repository_hook": resourceRepositoryHook(),
"bitbucketserver_repository_permissions_group": resourceRepositoryPermissionsGroup(), "bitbucketserver_repository_permissions_group": resourceRepositoryPermissionsGroup(),
"bitbucketserver_repository_permissions_user": resourceRepositoryPermissionsUser(), "bitbucketserver_repository_permissions_user": resourceRepositoryPermissionsUser(),
"bitbucketserver_repository_webhook": resourceRepositoryWebhook(),
"bitbucketserver_user": resourceUser(), "bitbucketserver_user": resourceUser(),
"bitbucketserver_user_access_token": resourceUserAccessToken(), "bitbucketserver_user_access_token": resourceUserAccessToken(),
"bitbucketserver_user_group": resourceUserGroup(), "bitbucketserver_user_group": resourceUserGroup(),

View File

@@ -10,13 +10,13 @@ import (
) )
type Webhook struct { type Webhook struct {
ID int `json:"id,omitempty"` ID int `json:"id,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
CreatedDate string `json:"createdDate,omitempty"` CreatedDate jsonTime `json:"createdDate,omitempty"`
UpdatedDate string `json:"updatedDate,omitempty"` UpdatedDate jsonTime `json:"updatedDate,omitempty"`
URL string `json:"url,omitempty"` URL string `json:"url,omitempty"`
Active bool `json:"active,omitempty"` Active bool `json:"active,omitempty"`
Events []string `json:"events"` Events []interface{} `json:"events"`
} }
type WebhookListResponse struct { type WebhookListResponse struct {
@@ -31,8 +31,8 @@ func resourceRepositoryWebhook() *schema.Resource {
return &schema.Resource{ return &schema.Resource{
Create: resourceRepositoryWebhookCreate, Create: resourceRepositoryWebhookCreate,
Update: resourceRepositoryWebhookUpdate, Update: resourceRepositoryWebhookUpdate,
Read: resourceRepositoryHookRead, Read: resourceRepositoryWebhookRead,
Delete: resourceRepositoryHookDelete, Delete: resourceRepositoryWebhookDelete,
Importer: &schema.ResourceImporter{ Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough, State: schema.ImportStatePassthrough,
}, },
@@ -62,6 +62,7 @@ func resourceRepositoryWebhook() *schema.Resource {
Type: schema.TypeList, Type: schema.TypeList,
Required: true, Required: true,
ForceNew: false, ForceNew: false,
Elem: &schema.Schema{Type: schema.TypeString},
}, },
"active": { "active": {
Type: schema.TypeBool, Type: schema.TypeBool,
@@ -169,10 +170,10 @@ func resourceRepositoryWebhookRead(d *schema.ResourceData, m interface{}) error
func resourceRepositoryWebhookDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryWebhookDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d",
d.Get("project").(string), d.Get("project").(string),
d.Get("repository").(string), d.Get("repository").(string),
d.Get("webhook_id").(string))) d.Get("webhook_id").(int)))
return err return err
} }
@@ -182,7 +183,7 @@ func newWebhookFromResource(d *schema.ResourceData) (Hook *Webhook) {
Name: d.Get("name").(string), Name: d.Get("name").(string),
URL: d.Get("webhook_url").(string), URL: d.Get("webhook_url").(string),
Active: d.Get("active").(bool), Active: d.Get("active").(bool),
Events: d.Get("events").([]string), Events: d.Get("events").([]interface{}),
} }
return webhook return webhook
@@ -191,11 +192,11 @@ func newWebhookFromResource(d *schema.ResourceData) (Hook *Webhook) {
func getRepositoryWebhookFromId(d *schema.ResourceData, m interface{}) error { func getRepositoryWebhookFromId(d *schema.ResourceData, m interface{}) error {
project := d.Get("project").(string) project := d.Get("project").(string)
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
id := d.Get("webhook_id").(string) id := d.Get("webhook_id").(int)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%s", resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d",
project, project,
repository, repository,
id, id,