feat: Introduce muxing for new elements

This commit is contained in:
xvlcwk
2024-02-05 00:19:08 +01:00
committed by chris
parent 81c08dd5a7
commit ce6854b8b6
84 changed files with 912 additions and 790 deletions

View File

@@ -2,7 +2,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -39,7 +40,7 @@ func dataSourceApplicationProperties() *schema.Resource {
} }
func dataSourceApplicationPropertiesRead(d *schema.ResourceData, m interface{}) error { func dataSourceApplicationPropertiesRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get("/rest/api/1.0/application-properties") req, err := client.Get("/rest/api/1.0/application-properties")
if err != nil { if err != nil {

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataApplicationProperties(t *testing.T) { func TestAccBitbucketDataApplicationProperties(t *testing.T) {
@@ -12,8 +12,8 @@ func TestAccBitbucketDataApplicationProperties(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,7 +2,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -73,7 +74,7 @@ func clusterNodeResourceSchema() *schema.Resource {
} }
func dataSourceClusterRead(d *schema.ResourceData, m interface{}) error { func dataSourceClusterRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get("/rest/api/1.0/admin/cluster") req, err := client.Get("/rest/api/1.0/admin/cluster")
if err != nil { if err != nil {

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataCluster(t *testing.T) { func TestAccBitbucketDataCluster(t *testing.T) {
@@ -12,8 +12,8 @@ func TestAccBitbucketDataCluster(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -78,7 +79,7 @@ func dataSourceGlobalPermissionsGroupsRead(d *schema.ResourceData, m interface{}
} }
func readGlobalPermissionsGroups(m interface{}, filter string) ([]GlobalPermissionsGroup, error) { func readGlobalPermissionsGroups(m interface{}, filter string) ([]GlobalPermissionsGroup, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := "/rest/api/1.0/admin/permissions/groups" resourceURL := "/rest/api/1.0/admin/permissions/groups"

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"testing" "testing"
) )
@@ -12,8 +12,8 @@ func TestAccBitbucketDataGlobalPermissionsGroups_basic(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -35,8 +35,8 @@ func TestAccBitbucketDataGlobalPermissionsGroups_filter(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -58,8 +58,8 @@ func TestAccBitbucketDataGlobalPermissionsGroups_filter_no_match(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -99,7 +100,7 @@ func dataSourceGlobalPermissionsUsersRead(d *schema.ResourceData, m interface{})
} }
func readGlobalPermissionsUsers(m interface{}, filter string) ([]GlobalPermissionsUser, error) { func readGlobalPermissionsUsers(m interface{}, filter string) ([]GlobalPermissionsUser, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := "/rest/api/1.0/admin/permissions/users" resourceURL := "/rest/api/1.0/admin/permissions/users"

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"testing" "testing"
) )
@@ -12,8 +12,8 @@ func TestAccBitbucketDataGlobalPermissionsUsers_basic(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -38,8 +38,8 @@ func TestAccBitbucketDataGlobalPermissionsUsers_filter(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -64,8 +64,8 @@ func TestAccBitbucketDataGlobalPermissionsUsers_filter_no_match(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,9 +3,10 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
type PaginatedGroupUsersValue struct { type PaginatedGroupUsersValue struct {
@@ -95,7 +96,7 @@ func dataSourceGroupUsersRead(d *schema.ResourceData, m interface{}) error {
} }
func readGroupUsers(m interface{}, group string, filter string) ([]GroupUser, error) { func readGroupUsers(m interface{}, group string, filter string) ([]GroupUser, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/admin/groups/more-members?context=%s&limit=100", resourceURL := fmt.Sprintf("/rest/api/1.0/admin/groups/more-members?context=%s&limit=100",
url.QueryEscape(group), url.QueryEscape(group),

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"testing" "testing"
) )
@@ -13,8 +13,8 @@ func TestAccBitbucketDataGroupUsers_check_default_included(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -49,8 +49,8 @@ func TestAccBitbucketDataGroupUsers_additional(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -65,7 +66,7 @@ func dataSourceGroupsRead(d *schema.ResourceData, m interface{}) error {
} }
func readGroups(m interface{}, filter string) ([]string, error) { func readGroups(m interface{}, filter string) ([]string, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := "/rest/api/1.0/admin/groups" resourceURL := "/rest/api/1.0/admin/groups"
if filter != "" { if filter != "" {

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"testing" "testing"
) )
@@ -13,8 +13,8 @@ func TestAccBitbucketDataGroups_basic(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -39,8 +39,8 @@ func TestAccBitbucketDataGroups_additional(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
func dataSourcePlugin() *schema.Resource { func dataSourcePlugin() *schema.Resource {
@@ -44,27 +44,13 @@ func dataSourcePlugin() *schema.Resource {
"vendor": { "vendor": {
Type: schema.TypeMap, Type: schema.TypeMap,
Computed: true, Computed: true,
Elem: &schema.Resource{ Elem: &schema.Schema{
Schema: map[string]*schema.Schema{ Type: schema.TypeString,
"name": {
Type: schema.TypeString,
Computed: true,
},
"link": {
Type: schema.TypeString,
Computed: true,
},
"marketplace_link": {
Type: schema.TypeString,
Computed: true,
},
},
}, },
}, },
"applied_license": { "applied_license": {
Type: schema.TypeList, Type: schema.TypeList,
Computed: true, Computed: true,
MaxItems: 1,
Elem: &schema.Resource{ Elem: &schema.Resource{
Schema: map[string]*schema.Schema{ Schema: map[string]*schema.Schema{
"valid": { "valid": {

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
//func TestAccBitbucketDataPlugin_notifyer(t *testing.T) { //func TestAccBitbucketDataPlugin_notifyer(t *testing.T) {
@@ -21,7 +21,7 @@ import (
// //
// resource.Test(t, resource.TestCase{ // resource.Test(t, resource.TestCase{
// PreCheck: func() { testAccPreCheck(t) }, // PreCheck: func() { testAccPreCheck(t) },
// Providers: testAccProviders, // ProtoV6ProviderFactories: ProviderFactories,
// Steps: []resource.TestStep{ // Steps: []resource.TestStep{
// { // {
// Config: config, // Config: config,
@@ -69,8 +69,8 @@ func TestAccBitbucketDataPlugin_upm(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,8 +3,9 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"sort" "sort"
) )
@@ -144,7 +145,7 @@ func dataSourceProjectHooksRead(d *schema.ResourceData, m interface{}) error {
} }
func readProjectHooks(m interface{}, project string, typeFilter string) ([]ProjectHook, error) { func readProjectHooks(m interface{}, project string, typeFilter string) ([]ProjectHook, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks",
project, project,

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataProjectHooks_simple(t *testing.T) { func TestAccBitbucketDataProjectHooks_simple(t *testing.T) {
@@ -23,8 +23,8 @@ func TestAccBitbucketDataProjectHooks_simple(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -63,8 +63,8 @@ func TestAccBitbucketDataProjectHooks_type(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -82,7 +83,7 @@ func dataSourceProjectPermissionsGroupsRead(d *schema.ResourceData, m interface{
} }
func readProjectPermissionsGroups(m interface{}, project string, filter string) ([]ProjectPermissionsGroup, error) { func readProjectPermissionsGroups(m interface{}, project string, filter string) ([]ProjectPermissionsGroup, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups",
project, project,

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataProjectPermissionsGroups_simple(t *testing.T) { func TestAccBitbucketDataProjectPermissionsGroups_simple(t *testing.T) {
@@ -28,8 +28,8 @@ func TestAccBitbucketDataProjectPermissionsGroups_simple(t *testing.T) {
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int()) `, rand.New(rand.NewSource(time.Now().UnixNano())).Int())
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -56,8 +56,8 @@ func TestAccBitbucketDataProjectPermissionsGroups_check_empty(t *testing.T) {
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int()) `, rand.New(rand.NewSource(time.Now().UnixNano())).Int())
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -103,7 +104,7 @@ func dataSourceProjectPermissionsUsersRead(d *schema.ResourceData, m interface{}
} }
func readProjectPermissionsUsers(m interface{}, project string, filter string) ([]ProjectPermissionsUser, error) { func readProjectPermissionsUsers(m interface{}, project string, filter string) ([]ProjectPermissionsUser, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users",
project, project,

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataProjectPermissionsUsers_check_creator_included(t *testing.T) { func TestAccBitbucketDataProjectPermissionsUsers_check_creator_included(t *testing.T) {
@@ -22,8 +22,8 @@ func TestAccBitbucketDataProjectPermissionsUsers_check_creator_included(t *testi
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int()) `, rand.New(rand.NewSource(time.Now().UnixNano())).Int())
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -65,8 +65,8 @@ func TestAccBitbucketDataProjectPermissionsUsers_additional(t *testing.T) {
`, rand.New(rand.NewSource(time.Now().UnixNano())).Int()) `, rand.New(rand.NewSource(time.Now().UnixNano())).Int())
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,8 +3,9 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"sort" "sort"
) )
@@ -148,7 +149,7 @@ func dataSourceRepositoryHooksRead(d *schema.ResourceData, m interface{}) error
} }
func readRepositoryHooks(m interface{}, project string, repository string, typeFilter string) ([]RepositoryHook, error) { func readRepositoryHooks(m interface{}, project string, repository string, typeFilter string) ([]RepositoryHook, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks",
project, project,

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataRepositoryHooks_simple(t *testing.T) { func TestAccBitbucketDataRepositoryHooks_simple(t *testing.T) {
@@ -29,8 +29,8 @@ func TestAccBitbucketDataRepositoryHooks_simple(t *testing.T) {
} }
`, projectKey, projectKey, projectKey) `, projectKey, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -75,8 +75,8 @@ func TestAccBitbucketDataRepositoryHooks_type(t *testing.T) {
} }
`, projectKey, projectKey, projectKey) `, projectKey, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -86,7 +87,7 @@ func dataSourceRepositoryPermissionsGroupsRead(d *schema.ResourceData, m interfa
} }
func readRepositoryPermissionsGroups(m interface{}, project string, repository string, filter string) ([]RepositoryPermissionsGroup, error) { func readRepositoryPermissionsGroups(m interface{}, project string, repository string, filter string) ([]RepositoryPermissionsGroup, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups",
url.QueryEscape(project), url.QueryEscape(project),

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataRepositoryPermissionsGroups_simple(t *testing.T) { func TestAccBitbucketDataRepositoryPermissionsGroups_simple(t *testing.T) {
@@ -36,8 +36,8 @@ func TestAccBitbucketDataRepositoryPermissionsGroups_simple(t *testing.T) {
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -71,8 +71,8 @@ func TestAccBitbucketDataRepositoryPermissionsGroups_empty(t *testing.T) {
`, projectKey) `, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -107,7 +108,7 @@ func dataSourceRepositoryPermissionsUsersRead(d *schema.ResourceData, m interfac
} }
func readRepositoryPermissionsUsers(m interface{}, project string, repository string, filter string) ([]RepositoryPermissionsUser, error) { func readRepositoryPermissionsUsers(m interface{}, project string, repository string, filter string) ([]RepositoryPermissionsUser, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users", resourceURL := fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users",
url.QueryEscape(project), url.QueryEscape(project),

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataRepositoryPermissionsUsers_basic(t *testing.T) { func TestAccBitbucketDataRepositoryPermissionsUsers_basic(t *testing.T) {
@@ -36,8 +36,8 @@ func TestAccBitbucketDataRepositoryPermissionsUsers_basic(t *testing.T) {
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -74,8 +74,8 @@ func TestAccBitbucketDataRepositoryPermissionsUsers_empty(t *testing.T) {
`, projectKey) `, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
func dataSourceUser() *schema.Resource { func dataSourceUser() *schema.Resource {

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketDataUser(t *testing.T) { func TestAccBitbucketDataUser(t *testing.T) {
@@ -14,8 +14,8 @@ func TestAccBitbucketDataUser(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -1,35 +1,43 @@
package bitbucket package bitbucket
import ( import (
"context"
"github.com/hashicorp/go-cty/cty"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/client"
"net/http" "net/http"
"strings" "strings"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/marketplace" "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/marketplace"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
func Provider() terraform.ResourceProvider { func Provider() *schema.Provider {
return &schema.Provider{ return &schema.Provider{
Schema: map[string]*schema.Schema{ Schema: map[string]*schema.Schema{
"server": { "server": {
Required: true, Required: true,
Type: schema.TypeString, Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_SERVER", nil), DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_SERVER", nil),
Description: "The url of your bitbucket instance. For the docker compose instance this is http://localhost:7990",
}, },
"username": { "username": {
Required: true, Required: true,
Type: schema.TypeString, Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_USERNAME", nil), DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_USERNAME", nil),
Description: "The username for authentication. If you're using a personal access token use your normal username.",
}, },
"password": { "password": {
Type: schema.TypeString, Type: schema.TypeString,
Required: true, Required: true,
Sensitive: true,
DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_PASSWORD", nil), DefaultFunc: schema.EnvDefaultFunc("BITBUCKET_PASSWORD", nil),
Description: "the password for authentication. Personal access tokens are allowed, but http access token aren't yet",
}, },
}, },
ConfigureFunc: providerConfigure, ConfigureContextFunc: providerConfigure,
DataSourcesMap: map[string]*schema.Resource{ DataSourcesMap: map[string]*schema.Resource{
"bitbucketserver_application_properties": dataSourceApplicationProperties(), "bitbucketserver_application_properties": dataSourceApplicationProperties(),
"bitbucketserver_cluster": dataSourceCluster(), "bitbucketserver_cluster": dataSourceCluster(),
@@ -74,22 +82,52 @@ func Provider() terraform.ResourceProvider {
} }
} }
type BitbucketServerProvider struct { func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
BitbucketClient *BitbucketClient
MarketplaceClient *marketplace.Client
}
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
serverSanitized := d.Get("server").(string) serverSanitized := d.Get("server").(string)
if strings.HasSuffix(serverSanitized, "/") { if strings.HasSuffix(serverSanitized, "/") {
serverSanitized = serverSanitized[0 : len(serverSanitized)-1] serverSanitized = serverSanitized[0 : len(serverSanitized)-1]
} }
b := &BitbucketClient{ username := d.Get("username").(string)
password := d.Get("password").(string)
configErrors := diag.Diagnostics{}
if serverSanitized == "" {
configErrors = append(configErrors,
diag.Diagnostic{
Severity: diag.Error,
AttributePath: cty.Path{}.GetAttr("server"),
Detail: "server is required and must be provided in the provider config or the BITBUCKET_SERVER environment variable",
})
}
if username == "" {
configErrors = append(configErrors,
diag.Diagnostic{
Severity: diag.Error,
AttributePath: cty.Path{}.GetAttr("username"),
Detail: "username is required and must be provided in the provider config or the BITBUCKET_USERNAME environment variable",
})
}
if password == "" {
configErrors = append(configErrors,
diag.Diagnostic{
Severity: diag.Error,
AttributePath: cty.Path{}.GetAttr("password"),
Detail: "password is required and must be provided in the provider config or the BITBUCKET_PASSWORD environment variable",
})
}
if configErrors.HasError() {
return nil, configErrors
}
b := &client.BitbucketClient{
Server: serverSanitized, Server: serverSanitized,
Username: d.Get("username").(string), Username: username,
Password: d.Get("password").(string), Password: password,
HTTPClient: &http.Client{}, HTTPClient: &http.Client{},
} }
@@ -97,7 +135,7 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
HTTPClient: &http.Client{}, HTTPClient: &http.Client{},
} }
return &BitbucketServerProvider{ return &bitbucketTypes.BitbucketServerProvider{
BitbucketClient: b, BitbucketClient: b,
MarketplaceClient: m, MarketplaceClient: m,
}, nil }, nil

View File

@@ -0,0 +1,146 @@
package bitbucket
import (
"context"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/provider/schema"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/client"
types2 "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/http"
"os"
"regexp"
"strings"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/marketplace"
)
func New() provider.Provider {
return &BitbucketServerProviderFramework{}
}
var _ provider.Provider = (*BitbucketServerProviderFramework)(nil)
type BitbucketServerProviderFramework struct {
BitbucketClient *client.BitbucketClient
MarketplaceClient *marketplace.Client
}
type BitbucketServerProviderModel struct {
Server types.String `tfsdk:"server"`
Username types.String `tfsdk:"username"`
Password types.String `tfsdk:"password"`
}
func (p *BitbucketServerProviderFramework) Resources(_ context.Context) []func() resource.Resource {
return []func() resource.Resource{
newRepositoryAccessTokenResource,
}
}
func (p *BitbucketServerProviderFramework) DataSources(_ context.Context) []func() datasource.DataSource {
return []func() datasource.DataSource{}
}
func (p *BitbucketServerProviderFramework) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) {
resp.Schema = schema.Schema{
Attributes: map[string]schema.Attribute{
"server": schema.StringAttribute{
Optional: true,
Description: "The url of your bitbucket instance. For the docker compose instance this is http://localhost:7990",
Validators: []validator.String{
// Validate string value satisfies the regular expression for alphanumeric characters
stringvalidator.RegexMatches(
regexp.MustCompile(`^https?://.*$`),
"must contain the http schema (http:// or https://)",
),
},
Sensitive: false,
},
"username": schema.StringAttribute{
Optional: true,
Description: "The username for authentication. If you're using a personal access token use your normal username.",
Sensitive: false,
},
"password": schema.StringAttribute{
Optional: true,
Description: "the password for authentication. Personal access tokens are allowed, but http access token aren't yet",
Sensitive: true,
},
},
}
}
func (p *BitbucketServerProviderFramework) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
resp.TypeName = "bitbucketserver"
}
func (p *BitbucketServerProviderFramework) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) {
var data BitbucketServerProviderModel
// Read configuration data into model
resp.Diagnostics.Append(req.Config.Get(ctx, &data)...)
server := os.Getenv("BITBUCKET_SERVER")
if data.Server.ValueString() != "" {
server = data.Server.ValueString()
}
if strings.HasSuffix(server, "/") {
server = server[0 : len(server)-1]
}
if server == "" {
resp.Diagnostics.AddError(
"server is required",
"server is required and must be provided in the provider config or the BITBUCKET_SERVER environment variable",
)
}
username := os.Getenv("BITBUCKET_USERNAME")
if data.Username.ValueString() != "" {
username = data.Username.ValueString()
}
if username == "" {
resp.Diagnostics.AddError(
"username is required",
"username is required and must be provided in the provider config or the BITBUCKET_USERNAME environment variable",
)
}
password := os.Getenv("BITBUCKET_PASSWORD")
if data.Password.ValueString() != "" {
password = data.Password.ValueString()
}
if password == "" {
resp.Diagnostics.AddError(
"password is required",
"password is required and must be provided in the provider config or the BITBUCKET_PASSWORD environment variable",
)
}
b := &client.BitbucketClient{
Server: server,
Username: username,
Password: password,
HTTPClient: &http.Client{},
}
m := &marketplace.Client{
HTTPClient: &http.Client{},
}
resp.ResourceData = &types2.BitbucketServerProvider{
BitbucketClient: b,
MarketplaceClient: m,
}
resp.DataSourceData = &types2.BitbucketServerProvider{
BitbucketClient: b,
MarketplaceClient: m,
}
}

View File

@@ -0,0 +1,64 @@
package bitbucket
import (
"context"
"github.com/hashicorp/terraform-plugin-framework/providerserver"
"testing"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-mux/tf5to6server"
"github.com/hashicorp/terraform-plugin-mux/tf6muxserver"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)
var ProviderFactories = map[string]func() (tfprotov6.ProviderServer, error){
"bitbucketserver": func() (tfprotov6.ProviderServer, error) {
ctx := context.Background()
upgradedSdkServer, err := tf5to6server.UpgradeServer(
ctx,
// terraform-plugin-sdk provider
Provider().GRPCProvider, //nolint:staticcheck
)
if err != nil {
return nil, err
}
providers := []func() tfprotov6.ProviderServer{
providerserver.NewProtocol6(New()), // Example terraform-plugin-framework provider
func() tfprotov6.ProviderServer {
return upgradedSdkServer
},
}
muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...)
if err != nil {
return nil, err
}
return muxServer.ProviderServer(), nil
},
}
func TestMuxServer(t *testing.T) {
resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{
{
Config: `
provider "bitbucketserver"{
server = "http://localhost:7990"
username = "admin"
password = "admin"
}
resource "bitbucketserver_banner" "testbanner" {
message = "testing muxing"
}
`,
},
},
})
}

View File

@@ -1,32 +1,31 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/terraform"
"os" "os"
"testing" "testing"
) )
const testRepo string = "test-repo" const testRepo string = "test-repo"
var testAccProviders map[string]terraform.ResourceProvider var testAccProviders map[string]*schema.Provider
var testAccProvider *schema.Provider var testAccProvider *schema.Provider
func init() { func init() {
testAccProvider = Provider().(*schema.Provider) testAccProvider = Provider()
testAccProviders = map[string]terraform.ResourceProvider{ testAccProviders = map[string]*schema.Provider{
"bitbucketserver": testAccProvider, "bitbucketserver": testAccProvider,
} }
} }
func TestProvider(t *testing.T) { func TestProvider(t *testing.T) {
if err := Provider().(*schema.Provider).InternalValidate(); err != nil { if err := Provider().InternalValidate(); err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
} }
func TestProvider_impl(t *testing.T) { func TestProvider_impl(t *testing.T) {
var _ terraform.ResourceProvider = Provider() var _ *schema.Provider = Provider()
} }
func testAccPreCheck(t *testing.T) { func testAccPreCheck(t *testing.T) {

View File

@@ -4,8 +4,9 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -57,7 +58,7 @@ func newBannerFromResource(d *schema.ResourceData) *Banner {
} }
func resourceBannerUpdate(d *schema.ResourceData, m interface{}) error { func resourceBannerUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
banner := newBannerFromResource(d) banner := newBannerFromResource(d)
bytedata, err := json.Marshal(banner) bytedata, err := json.Marshal(banner)
@@ -81,7 +82,7 @@ func resourceBannerCreate(d *schema.ResourceData, m interface{}) error {
func resourceBannerRead(d *schema.ResourceData, m interface{}) error { func resourceBannerRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get("/rest/api/1.0/admin/banner") req, err := client.Get("/rest/api/1.0/admin/banner")
if err != nil { if err != nil {
@@ -108,7 +109,7 @@ func resourceBannerRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceBannerExists(d *schema.ResourceData, m interface{}) (bool, error) { func resourceBannerExists(d *schema.ResourceData, m interface{}) (bool, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
repoReq, err := client.Get("/rest/api/1.0/admin/banner") repoReq, err := client.Get("/rest/api/1.0/admin/banner")
if err != nil { if err != nil {
return false, fmt.Errorf("failed to get banner from bitbucket: %+v", err) return false, fmt.Errorf("failed to get banner from bitbucket: %+v", err)
@@ -122,7 +123,7 @@ func resourceBannerExists(d *schema.ResourceData, m interface{}) (bool, error) {
} }
func resourceBannerDelete(d *schema.ResourceData, m interface{}) error { func resourceBannerDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete("/rest/api/1.0/admin/banner") _, err := client.Delete("/rest/api/1.0/admin/banner")
return err return err
} }

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketBanner_basic(t *testing.T) { func TestAccBitbucketBanner_basic(t *testing.T) {
@@ -19,8 +19,8 @@ func TestAccBitbucketBanner_basic(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -51,8 +51,8 @@ func TestAccBitbucketBanner_authenticated(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -4,12 +4,13 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"net/url" "net/url"
"strconv" "strconv"
"strings" "strings"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
type Reviewer struct { type Reviewer struct {
@@ -292,7 +293,7 @@ func resourceDefaultReviewersConditionCreate(d *schema.ResourceData, m interface
return err return err
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Post(getCreateConditionURI(projectKey, repositorySlug), bytes.NewBuffer(bytedata)) resp, err := client.Post(getCreateConditionURI(projectKey, repositorySlug), bytes.NewBuffer(bytedata))
@@ -326,7 +327,7 @@ func resourceDefaultReviewersConditionRead(d *schema.ResourceData, m interface{}
return err return err
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(getReadConditionURI(projectKey, repositorySlug)) resp, err := client.Get(getReadConditionURI(projectKey, repositorySlug))
@@ -371,7 +372,7 @@ func resourceDefaultReviewersConditionExists(d *schema.ResourceData, m interface
return false, err return false, err
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(getReadConditionURI(projectKey, repositorySlug)) resp, err := client.Get(getReadConditionURI(projectKey, repositorySlug))
@@ -409,7 +410,7 @@ func resourceDefaultReviewersConditionDelete(d *schema.ResourceData, m interface
return err return err
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err = client.Delete(getDeleteConditionURI(conditionID, projectKey, repositorySlug)) _, err = client.Delete(getDeleteConditionURI(conditionID, projectKey, repositorySlug))

View File

@@ -7,8 +7,8 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketDefaultReviewersCondition_forProject(t *testing.T) { func TestAccBitbucketDefaultReviewersCondition_forProject(t *testing.T) {
@@ -93,8 +93,8 @@ func TestAccBitbucketDefaultReviewersCondition_expectRequiredApprovalsError(t *t
key := fmt.Sprintf("%v", rand.New(rand.NewSource(time.Now().UnixNano())).Int()) key := fmt.Sprintf("%v", rand.New(rand.NewSource(time.Now().UnixNano())).Int())
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: testAccBitbucketDefaultReviewersConditionResourceForProject(key, 2), Config: testAccBitbucketDefaultReviewersConditionResourceForProject(key, 2),

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -33,7 +34,7 @@ func resourceGlobalPermissionsGroup() *schema.Resource {
} }
func resourceGlobalPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error { func resourceGlobalPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/admin/permissions/groups?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/admin/permissions/groups?permission=%s&name=%s",
url.QueryEscape(d.Get("permission").(string)), url.QueryEscape(d.Get("permission").(string)),
url.QueryEscape(d.Get("group").(string)), url.QueryEscape(d.Get("group").(string)),
@@ -80,7 +81,7 @@ func resourceGlobalPermissionsGroupRead(d *schema.ResourceData, m interface{}) e
} }
func resourceGlobalPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error { func resourceGlobalPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/permissions/groups?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/permissions/groups?name=%s",
url.QueryEscape(d.Get("group").(string)), url.QueryEscape(d.Get("group").(string)),
)) ))

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceGlobalPermissionsGroup(t *testing.T) { func TestAccBitbucketResourceGlobalPermissionsGroup(t *testing.T) {
@@ -26,8 +26,8 @@ func TestAccBitbucketResourceGlobalPermissionsGroup(t *testing.T) {
configModified := strings.ReplaceAll(config, "ADMIN", "LICENSED_USER") configModified := strings.ReplaceAll(config, "ADMIN", "LICENSED_USER")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
) )
@@ -33,7 +34,7 @@ func resourceGlobalPermissionsUser() *schema.Resource {
} }
func resourceGlobalPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error { func resourceGlobalPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/admin/permissions/users?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/admin/permissions/users?permission=%s&name=%s",
url.QueryEscape(d.Get("permission").(string)), url.QueryEscape(d.Get("permission").(string)),
url.QueryEscape(d.Get("user").(string)), url.QueryEscape(d.Get("user").(string)),
@@ -80,7 +81,7 @@ func resourceGlobalPermissionsUserRead(d *schema.ResourceData, m interface{}) er
} }
func resourceGlobalPermissionsUserDelete(d *schema.ResourceData, m interface{}) error { func resourceGlobalPermissionsUserDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/permissions/users?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/permissions/users?name=%s",
url.QueryEscape(d.Get("user").(string)), url.QueryEscape(d.Get("user").(string)),
)) ))

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceGlobalPermissionsUser(t *testing.T) { func TestAccBitbucketResourceGlobalPermissionsUser(t *testing.T) {
@@ -28,8 +28,8 @@ func TestAccBitbucketResourceGlobalPermissionsUser(t *testing.T) {
configModified := strings.ReplaceAll(config, "SYS_ADMIN", "LICENSED_USER") configModified := strings.ReplaceAll(config, "SYS_ADMIN", "LICENSED_USER")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,7 +2,8 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"log" "log"
"net/url" "net/url"
) )
@@ -33,7 +34,7 @@ func resourceGroup() *schema.Resource {
} }
func resourceGroupCreate(d *schema.ResourceData, m interface{}) error { func resourceGroupCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
groupName := d.Get("name").(string) groupName := d.Get("name").(string)
importIfExists := d.Get("import_if_exists").(bool) importIfExists := d.Get("import_if_exists").(bool)
@@ -88,7 +89,7 @@ func resourceGroupUpdate(d *schema.ResourceData, m interface{}) error {
func resourceGroupDelete(d *schema.ResourceData, m interface{}) error { func resourceGroupDelete(d *schema.ResourceData, m interface{}) error {
groupName := d.Get("name").(string) groupName := d.Get("name").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/groups?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/groups?name=%s",
url.QueryEscape(groupName), url.QueryEscape(groupName),
)) ))

View File

@@ -2,7 +2,8 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/client"
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
@@ -19,8 +20,8 @@ func TestAccBitbucketResourceGroup_basic(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -44,8 +45,8 @@ func TestAccBitbucketResourceGroup_DisallowImport(t *testing.T) {
createGroup(groupName) createGroup(groupName)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -71,8 +72,8 @@ func TestAccBitbucketResourceGroup_AllowImport(t *testing.T) {
createGroup(groupName) createGroup(groupName)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -89,13 +90,13 @@ func createGroup(groupName string) {
client.Post(fmt.Sprintf("/rest/api/1.0/admin/groups?name=%s", url.QueryEscape(groupName)), nil) client.Post(fmt.Sprintf("/rest/api/1.0/admin/groups?name=%s", url.QueryEscape(groupName)), nil)
} }
func newBitbucketClient() *BitbucketClient { func newBitbucketClient() *client.BitbucketClient {
serverSanitized := os.Getenv("BITBUCKET_SERVER") serverSanitized := os.Getenv("BITBUCKET_SERVER")
if strings.HasSuffix(serverSanitized, "/") { if strings.HasSuffix(serverSanitized, "/") {
serverSanitized = serverSanitized[0 : len(serverSanitized)-1] serverSanitized = serverSanitized[0 : len(serverSanitized)-1]
} }
return &BitbucketClient{ return &client.BitbucketClient{
Server: serverSanitized, Server: serverSanitized,
Username: os.Getenv("BITBUCKET_USERNAME"), Username: os.Getenv("BITBUCKET_USERNAME"),
Password: os.Getenv("BITBUCKET_PASSWORD"), Password: os.Getenv("BITBUCKET_PASSWORD"),

View File

@@ -5,7 +5,8 @@ import (
"crypto/sha256" "crypto/sha256"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -91,7 +92,7 @@ func newLicenseFromResource(d *schema.ResourceData) *License {
} }
func resourceLicenseUpdate(d *schema.ResourceData, m interface{}) error { func resourceLicenseUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
license := newLicenseFromResource(d) license := newLicenseFromResource(d)
bytedata, err := json.Marshal(license) bytedata, err := json.Marshal(license)
@@ -115,7 +116,7 @@ func resourceLicenseCreate(d *schema.ResourceData, m interface{}) error {
func resourceLicenseRead(d *schema.ResourceData, m interface{}) error { func resourceLicenseRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get("/rest/api/1.0/admin/license") req, err := client.Get("/rest/api/1.0/admin/license")
if err != nil { if err != nil {
@@ -152,7 +153,7 @@ func resourceLicenseRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceLicenseDelete(d *schema.ResourceData, m interface{}) error { func resourceLicenseDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete("/rest/api/1.0/admin/mail-server") _, err := client.Delete("/rest/api/1.0/admin/mail-server")
return err return err
} }

View File

@@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketLicense(t *testing.T) { func TestAccBitbucketLicense(t *testing.T) {

View File

@@ -3,7 +3,8 @@ package bitbucket
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -86,7 +87,7 @@ func newMailConfigurationFromResource(d *schema.ResourceData) *MailConfiguration
} }
func resourceMailServerUpdate(d *schema.ResourceData, m interface{}) error { func resourceMailServerUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
mailConfiguration := newMailConfigurationFromResource(d) mailConfiguration := newMailConfigurationFromResource(d)
bytedata, err := json.Marshal(mailConfiguration) bytedata, err := json.Marshal(mailConfiguration)
@@ -111,7 +112,7 @@ func resourceMailServerCreate(d *schema.ResourceData, m interface{}) error {
func resourceMailServerRead(d *schema.ResourceData, m interface{}) error { func resourceMailServerRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get("/rest/api/1.0/admin/mail-server") req, err := client.Get("/rest/api/1.0/admin/mail-server")
if err != nil { if err != nil {
@@ -145,7 +146,7 @@ func resourceMailServerRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceMailServerDelete(d *schema.ResourceData, m interface{}) error { func resourceMailServerDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete("/rest/api/1.0/admin/mail-server") _, err := client.Delete("/rest/api/1.0/admin/mail-server")
return err return err
} }

View File

@@ -2,11 +2,12 @@ package bitbucket
import ( import (
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"strings" "strings"
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketMailServer(t *testing.T) { func TestAccBitbucketMailServer(t *testing.T) {
@@ -49,7 +50,7 @@ func TestAccBitbucketMailServer(t *testing.T) {
} }
func testAccCheckBitbucketMailServerDestroy(s *terraform.State) error { func testAccCheckBitbucketMailServerDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*BitbucketServerProvider).BitbucketClient client := testAccProvider.Meta().(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, ok := s.RootModule().Resources["bitbucketserver_mail_server.test"] _, ok := s.RootModule().Resources["bitbucketserver_mail_server.test"]
if !ok { if !ok {
return fmt.Errorf("not found %s", "bitbucketserver_mail_server.test") return fmt.Errorf("not found %s", "bitbucketserver_mail_server.test")

View File

@@ -4,13 +4,14 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"path/filepath" "path/filepath"
"regexp" "regexp"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
type Plugin struct { type Plugin struct {
@@ -141,27 +142,13 @@ func resourcePlugin() *schema.Resource {
"vendor": { "vendor": {
Type: schema.TypeMap, Type: schema.TypeMap,
Computed: true, Computed: true,
Elem: &schema.Resource{ Elem: &schema.Schema{
Schema: map[string]*schema.Schema{ Type: schema.TypeString,
"name": {
Type: schema.TypeString,
Computed: true,
},
"link": {
Type: schema.TypeString,
Computed: true,
},
"marketplace_link": {
Type: schema.TypeString,
Computed: true,
},
},
}, },
}, },
"applied_license": { "applied_license": {
Type: schema.TypeList, Type: schema.TypeList,
Computed: true, Computed: true,
MaxItems: 1,
Elem: &schema.Resource{ Elem: &schema.Resource{
Schema: map[string]*schema.Schema{ Schema: map[string]*schema.Schema{
"valid": { "valid": {
@@ -253,7 +240,7 @@ func resourcePlugin() *schema.Resource {
} }
func resourcePluginCreate(d *schema.ResourceData, m interface{}) error { func resourcePluginCreate(d *schema.ResourceData, m interface{}) error {
provider := m.(*BitbucketServerProvider) provider := m.(*bitbucketTypes.BitbucketServerProvider)
key := d.Get("key").(string) key := d.Get("key").(string)
version := d.Get("version").(string) version := d.Get("version").(string)
@@ -311,7 +298,7 @@ func resourcePluginCreate(d *schema.ResourceData, m interface{}) error {
} }
func resourcePluginUpdate(d *schema.ResourceData, m interface{}) error { func resourcePluginUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
key := d.Get("key").(string) key := d.Get("key").(string)
@@ -372,7 +359,7 @@ func resourcePluginRead(d *schema.ResourceData, m interface{}) error {
_ = d.Set("key", id) _ = d.Set("key", id)
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get(fmt.Sprintf("/rest/plugins/1.0/%s-key", d.Get("key").(string))) req, err := client.Get(fmt.Sprintf("/rest/plugins/1.0/%s-key", d.Get("key").(string)))
if err != nil { if err != nil {
return err return err
@@ -460,7 +447,7 @@ func resourcePluginExists(d *schema.ResourceData, m interface{}) (bool, error) {
key = d.Get("key").(string) key = d.Get("key").(string)
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get(fmt.Sprintf("/rest/plugins/1.0/%s-key", req, err := client.Get(fmt.Sprintf("/rest/plugins/1.0/%s-key",
key, key,
)) ))
@@ -477,7 +464,7 @@ func resourcePluginExists(d *schema.ResourceData, m interface{}) (bool, error) {
} }
func resourcePluginDelete(d *schema.ResourceData, m interface{}) error { func resourcePluginDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/plugins/1.0/%s-key", _, err := client.Delete(fmt.Sprintf("/rest/plugins/1.0/%s-key",
d.Get("key").(string), d.Get("key").(string),
)) ))
@@ -485,7 +472,7 @@ func resourcePluginDelete(d *schema.ResourceData, m interface{}) error {
return err return err
} }
func readMarketplacePluginVersion(key string, version string, provider *BitbucketServerProvider) (*PluginMarketplaceVersion, error) { func readMarketplacePluginVersion(key string, version string, provider *bitbucketTypes.BitbucketServerProvider) (*PluginMarketplaceVersion, error) {
marketplaceRequest, err := provider.MarketplaceClient.Get(fmt.Sprintf("/rest/2/addons/%s/versions/name/%s", key, version)) marketplaceRequest, err := provider.MarketplaceClient.Get(fmt.Sprintf("/rest/2/addons/%s/versions/name/%s", key, version))
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -3,9 +3,10 @@ package bitbucket
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
type PluginConfig struct { type PluginConfig struct {
@@ -39,7 +40,7 @@ func resourcePluginConfig() *schema.Resource {
} }
func resourcePluginConfigCreateOrUpdate(d *schema.ResourceData, m interface{}) error { func resourcePluginConfigCreateOrUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
configEndpoint := d.Get("config_endpoint").(string) configEndpoint := d.Get("config_endpoint").(string)
values := d.Get("values").(string) values := d.Get("values").(string)
config := []byte(values) config := []byte(values)
@@ -86,7 +87,7 @@ func resourcePluginConfigDelete(d *schema.ResourceData, m interface{}) error {
} }
func readPluginConfig(m interface{}, configEndpoint string) (PluginConfig, error) { func readPluginConfig(m interface{}, configEndpoint string) (PluginConfig, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(configEndpoint) resp, err := client.Get(configEndpoint)
if err != nil { if err != nil {
return PluginConfig{}, err return PluginConfig{}, err

View File

@@ -16,7 +16,7 @@ package bitbucket
// //
// resource.Test(t, resource.TestCase{ // resource.Test(t, resource.TestCase{
// PreCheck: func() { testAccPreCheck(t) }, // PreCheck: func() { testAccPreCheck(t) },
// Providers: testAccProviders, // ProtoV6ProviderFactories: ProviderFactories,
// Steps: []resource.TestStep{ // Steps: []resource.TestStep{
// { // {
// Config: config, // Config: config,

View File

@@ -3,7 +3,7 @@ package bitbucket
import ( import (
"testing" "testing"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketPlugin_install(t *testing.T) { func TestAccBitbucketPlugin_install(t *testing.T) {
@@ -16,8 +16,8 @@ func TestAccBitbucketPlugin_install(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -67,7 +68,7 @@ func newProjectFromResource(d *schema.ResourceData) *Project {
} }
func resourceProjectUpdate(d *schema.ResourceData, m interface{}) error { func resourceProjectUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := newProjectFromResource(d) project := newProjectFromResource(d)
bytedata, err := json.Marshal(project) bytedata, err := json.Marshal(project)
@@ -88,7 +89,7 @@ func resourceProjectUpdate(d *schema.ResourceData, m interface{}) error {
} }
func resourceProjectCreate(d *schema.ResourceData, m interface{}) error { func resourceProjectCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := newProjectFromResource(d) project := newProjectFromResource(d)
bytedata, err := json.Marshal(project) bytedata, err := json.Marshal(project)
@@ -116,7 +117,7 @@ func resourceProjectRead(d *schema.ResourceData, m interface{}) error {
project := d.Get("key").(string) project := d.Get("key").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s", project_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s",
project, project,
)) ))
@@ -157,7 +158,7 @@ func resourceProjectExists(d *schema.ResourceData, m interface{}) (bool, error)
project = d.Get("key").(string) project = d.Get("key").(string)
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s", repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s",
project, project,
)) ))
@@ -175,7 +176,7 @@ func resourceProjectExists(d *schema.ResourceData, m interface{}) (bool, error)
func resourceProjectDelete(d *schema.ResourceData, m interface{}) error { func resourceProjectDelete(d *schema.ResourceData, m interface{}) error {
project := d.Get("key").(string) project := d.Get("key").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s",
project, project,
)) ))

View File

@@ -4,11 +4,12 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"strings" "strings"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
) )
type BranchPermissionPayload struct { type BranchPermissionPayload struct {
@@ -152,7 +153,7 @@ func newBranchPermissionPayloadFromResource(d *schema.ResourceData) *BranchPermi
} }
func resourceBranchPermissionsCreate(d *schema.ResourceData, m interface{}) error { func resourceBranchPermissionsCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
@@ -234,7 +235,7 @@ func getBranchPermissionById(d *schema.ResourceData, m interface{}) error {
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
id := d.Get("permission_id").(int) id := d.Get("permission_id").(int)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions/%d", resp, err := client.Get(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions/%d",
project, project,
@@ -282,7 +283,7 @@ func getBranchPermissionFromList(d *schema.ResourceData, m interface{}) error {
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
restrictionType := d.Get("type").(string) restrictionType := d.Get("type").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions", resp, err := client.Get(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions",
project, project,
@@ -331,7 +332,7 @@ func getBranchPermissionFromList(d *schema.ResourceData, m interface{}) error {
} }
func resourceBranchPermissionsDelete(d *schema.ResourceData, m interface{}) error { func resourceBranchPermissionsDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions/%d", _, err := client.Delete(fmt.Sprintf("/rest/branch-permissions/2.0/projects/%s/repos/%s/restrictions/%d",
d.Get("project").(string), d.Get("project").(string),
d.Get("repository").(string), d.Get("repository").(string),

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceBranchPermission_requiredArgumentsOnly(t *testing.T) { func TestAccBitbucketResourceBranchPermission_requiredArgumentsOnly(t *testing.T) {
@@ -23,8 +23,8 @@ func TestAccBitbucketResourceBranchPermission_requiredArgumentsOnly(t *testing.T
resourceName := "bitbucketserver_project_branch_permissions.test" resourceName := "bitbucketserver_project_branch_permissions.test"
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -75,8 +75,8 @@ func TestAccBitbucketResourceBranchPermission_allArguments(t *testing.T) {
resourceName2 := "bitbucketserver_project_branch_permissions.test_2" resourceName2 := "bitbucketserver_project_branch_permissions.test_2"
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"strings" "strings"
) )
@@ -38,7 +39,7 @@ func resourceProjectHook() *schema.Resource {
} }
func resourceProjectHookUpdate(d *schema.ResourceData, m interface{}) error { func resourceProjectHookUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
hook := d.Get("hook").(string) hook := d.Get("hook").(string)
@@ -86,7 +87,7 @@ func resourceProjectHookRead(d *schema.ResourceData, m interface{}) error {
project := d.Get("project").(string) project := d.Get("project").(string)
hook := d.Get("hook").(string) hook := d.Get("hook").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks/%s/settings", resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks/%s/settings",
project, project,
hook, hook,
@@ -109,7 +110,7 @@ func resourceProjectHookRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceProjectHookDelete(d *schema.ResourceData, m interface{}) error { func resourceProjectHookDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks/%s/enabled", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/settings/hooks/%s/enabled",
d.Get("project").(string), d.Get("project").(string),
d.Get("hook").(string))) d.Get("hook").(string)))

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceProjectHook_simple(t *testing.T) { func TestAccBitbucketResourceProjectHook_simple(t *testing.T) {
@@ -24,8 +24,8 @@ func TestAccBitbucketResourceProjectHook_simple(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"strings" "strings"
) )
@@ -39,7 +40,7 @@ func resourceProjectPermissionsGroup() *schema.Resource {
} }
func resourceProjectPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error { func resourceProjectPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups?permission=%s&name=%s",
d.Get("project").(string), d.Get("project").(string),
url.QueryEscape(d.Get("permission").(string)), url.QueryEscape(d.Get("permission").(string)),
@@ -93,7 +94,7 @@ func resourceProjectPermissionsGroupRead(d *schema.ResourceData, m interface{})
} }
func resourceProjectPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error { func resourceProjectPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/groups?name=%s",
d.Get("project").(string), d.Get("project").(string),
url.QueryEscape(d.Get("group").(string)), url.QueryEscape(d.Get("group").(string)),

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceProjectPermissionsGroup(t *testing.T) { func TestAccBitbucketResourceProjectPermissionsGroup(t *testing.T) {
@@ -28,8 +28,8 @@ func TestAccBitbucketResourceProjectPermissionsGroup(t *testing.T) {
configModified := strings.ReplaceAll(config, "PROJECT_WRITE", "PROJECT_READ") configModified := strings.ReplaceAll(config, "PROJECT_WRITE", "PROJECT_READ")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"strings" "strings"
) )
@@ -39,7 +40,7 @@ func resourceProjectPermissionsUser() *schema.Resource {
} }
func resourceProjectPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error { func resourceProjectPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users?permission=%s&name=%s",
d.Get("project").(string), d.Get("project").(string),
url.QueryEscape(d.Get("permission").(string)), url.QueryEscape(d.Get("permission").(string)),
@@ -93,7 +94,7 @@ func resourceProjectPermissionsUserRead(d *schema.ResourceData, m interface{}) e
} }
func resourceProjectPermissionsUserDelete(d *schema.ResourceData, m interface{}) error { func resourceProjectPermissionsUserDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/permissions/users?name=%s",
d.Get("project").(string), d.Get("project").(string),
url.QueryEscape(d.Get("user").(string)), url.QueryEscape(d.Get("user").(string)),

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceProjectPermissionsUser(t *testing.T) { func TestAccBitbucketResourceProjectPermissionsUser(t *testing.T) {
@@ -34,8 +34,8 @@ func TestAccBitbucketResourceProjectPermissionsUser(t *testing.T) {
configModified := strings.ReplaceAll(config, "PROJECT_READ", "PROJECT_WRITE") configModified := strings.ReplaceAll(config, "PROJECT_READ", "PROJECT_WRITE")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,13 +2,14 @@ package bitbucket
import ( import (
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"math/rand" "math/rand"
"strings" "strings"
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketProject(t *testing.T) { func TestAccBitbucketProject(t *testing.T) {
@@ -50,7 +51,7 @@ func TestAccBitbucketProject(t *testing.T) {
} }
func testAccCheckBitbucketProjectDestroy(s *terraform.State) error { func testAccCheckBitbucketProjectDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*BitbucketServerProvider).BitbucketClient client := testAccProvider.Meta().(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
rs, ok := s.RootModule().Resources["bitbucketserver_project.test"] rs, ok := s.RootModule().Resources["bitbucketserver_project.test"]
if !ok { if !ok {
return fmt.Errorf("not found %s", "bitbucketserver_project.test") return fmt.Errorf("not found %s", "bitbucketserver_project.test")

View File

@@ -4,9 +4,11 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/client"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"strings" "strings"
) )
@@ -116,7 +118,7 @@ func newRepositoryFromResource(d *schema.ResourceData) (Repo *Repository) {
} }
func resourceRepositoryUpdate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repo := newRepositoryFromResource(d) repo := newRepositoryFromResource(d)
@@ -146,7 +148,7 @@ func resourceRepositoryUpdate(d *schema.ResourceData, m interface{}) error {
} }
func resourceRepositoryCreate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repoSlug := determineSlug(d) repoSlug := determineSlug(d)
@@ -185,7 +187,7 @@ func resourceRepositoryCreate(d *schema.ResourceData, m interface{}) error {
} }
} }
func createNewRepository(client *BitbucketClient, d *schema.ResourceData, project string) error { func createNewRepository(client *client.BitbucketClient, d *schema.ResourceData, project string) error {
repo := newRepositoryFromResource(d) repo := newRepositoryFromResource(d)
bytedata, err := json.Marshal(repo) bytedata, err := json.Marshal(repo)
@@ -204,7 +206,7 @@ func createNewRepository(client *BitbucketClient, d *schema.ResourceData, projec
return nil return nil
} }
func createNewRepositoryFromFork(client *BitbucketClient, d *schema.ResourceData, project string, repository string, forkProject string, forkRepository string) error { func createNewRepositoryFromFork(client *client.BitbucketClient, d *schema.ResourceData, project string, repository string, forkProject string, forkRepository string) error {
requestBody := &RepositoryFork{ requestBody := &RepositoryFork{
Name: repository, Name: repository,
Project: RepositoryForkProject{ Project: RepositoryForkProject{
@@ -225,7 +227,7 @@ func createNewRepositoryFromFork(client *BitbucketClient, d *schema.ResourceData
return nil return nil
} }
func handleRepositoryGitLFSChanges(client *BitbucketClient, project string, repoSlug string, d *schema.ResourceData) error { func handleRepositoryGitLFSChanges(client *client.BitbucketClient, project string, repoSlug string, d *schema.ResourceData) error {
enableGitLFS := d.Get("enable_git_lfs").(bool) enableGitLFS := d.Get("enable_git_lfs").(bool)
if (d.IsNewResource() && enableGitLFS) || d.HasChange("enable_git_lfs") { if (d.IsNewResource() && enableGitLFS) || d.HasChange("enable_git_lfs") {
if enableGitLFS { if enableGitLFS {
@@ -267,7 +269,7 @@ func resourceRepositoryRead(d *schema.ResourceData, m interface{}) error {
repoSlug := determineSlug(d) repoSlug := determineSlug(d)
project := d.Get("project").(string) project := d.Get("project").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s", repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s",
project, project,
repoSlug, repoSlug,
@@ -332,7 +334,7 @@ func resourceRepositoryExists(d *schema.ResourceData, m interface{}) (bool, erro
} }
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s", repo_req, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s",
project, project,
repoSlug, repoSlug,
@@ -352,7 +354,7 @@ func resourceRepositoryExists(d *schema.ResourceData, m interface{}) (bool, erro
func resourceRepositoryDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryDelete(d *schema.ResourceData, m interface{}) error {
repoSlug := determineSlug(d) repoSlug := determineSlug(d)
project := d.Get("project").(string) project := d.Get("project").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s",
project, project,
repoSlug, repoSlug,

View File

@@ -5,8 +5,9 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
@@ -165,7 +166,7 @@ func resourceRepositoryDeployKeyCreate(d *schema.ResourceData, m interface{}) er
request, err := json.Marshal(keyRequest) request, err := json.Marshal(keyRequest)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Post(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh", resp, err := client.Post(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),
@@ -178,7 +179,7 @@ func resourceRepositoryDeployKeyCreate(d *schema.ResourceData, m interface{}) er
} }
func resourceRepositoryDeployKeyRead(d *schema.ResourceData, m interface{}) error { func resourceRepositoryDeployKeyRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh/%s", resp, err := client.Get(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh/%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
@@ -192,7 +193,7 @@ func resourceRepositoryDeployKeyRead(d *schema.ResourceData, m interface{}) erro
} }
func resourceRepositoryDeployKeyDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryDeployKeyDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh/%s", _, err := client.Delete(fmt.Sprintf("/rest/keys/latest/projects/%s/repos/%s/ssh/%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceRepositoryDeployKey(t *testing.T) { func TestAccBitbucketResourceRepositoryDeployKey(t *testing.T) {
@@ -32,8 +32,8 @@ func TestAccBitbucketResourceRepositoryDeployKey(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"strings" "strings"
) )
@@ -43,7 +44,7 @@ func resourceRepositoryHook() *schema.Resource {
} }
func resourceRepositoryHookUpdate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryHookUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
@@ -95,7 +96,7 @@ func resourceRepositoryHookRead(d *schema.ResourceData, m interface{}) error {
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
hook := d.Get("hook").(string) hook := d.Get("hook").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks/%s/settings", resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks/%s/settings",
project, project,
repository, repository,
@@ -119,7 +120,7 @@ func resourceRepositoryHookRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceRepositoryHookDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryHookDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks/%s/enabled", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/settings/hooks/%s/enabled",
d.Get("project").(string), d.Get("project").(string),
d.Get("repository").(string), d.Get("repository").(string),

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceRepositoryHook_simple(t *testing.T) { func TestAccBitbucketResourceRepositoryHook_simple(t *testing.T) {
@@ -30,8 +30,8 @@ func TestAccBitbucketResourceRepositoryHook_simple(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"strings" "strings"
) )
@@ -44,7 +45,7 @@ func resourceRepositoryPermissionsGroup() *schema.Resource {
} }
func resourceRepositoryPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryPermissionsGroupUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups?permission=%s&name=%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),
@@ -100,7 +101,7 @@ func resourceRepositoryPermissionsGroupRead(d *schema.ResourceData, m interface{
} }
func resourceRepositoryPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryPermissionsGroupDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/groups?name=%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceRepositoryPermissionsGroup(t *testing.T) { func TestAccBitbucketResourceRepositoryPermissionsGroup(t *testing.T) {
@@ -34,8 +34,8 @@ func TestAccBitbucketResourceRepositoryPermissionsGroup(t *testing.T) {
configModified := strings.ReplaceAll(config, "REPO_WRITE", "REPO_READ") configModified := strings.ReplaceAll(config, "REPO_WRITE", "REPO_READ")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"net/url" "net/url"
"strings" "strings"
) )
@@ -44,7 +45,7 @@ func resourceRepositoryPermissionsUser() *schema.Resource {
} }
func resourceRepositoryPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryPermissionsUserUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users?permission=%s&name=%s", _, err := client.Put(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users?permission=%s&name=%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),
@@ -100,7 +101,7 @@ func resourceRepositoryPermissionsUserRead(d *schema.ResourceData, m interface{}
} }
func resourceRepositoryPermissionsUserDelete(d *schema.ResourceData, m interface{}) error { func resourceRepositoryPermissionsUserDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/permissions/users?name=%s",
url.QueryEscape(d.Get("project").(string)), url.QueryEscape(d.Get("project").(string)),
url.QueryEscape(d.Get("repository").(string)), url.QueryEscape(d.Get("repository").(string)),

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceRepositoryPermissionsUser(t *testing.T) { func TestAccBitbucketResourceRepositoryPermissionsUser(t *testing.T) {
@@ -40,8 +40,8 @@ func TestAccBitbucketResourceRepositoryPermissionsUser(t *testing.T) {
configModified := strings.ReplaceAll(config, "REPO_WRITE", "REPO_READ") configModified := strings.ReplaceAll(config, "REPO_WRITE", "REPO_READ")
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,13 +2,14 @@ package bitbucket
import ( import (
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"math/rand" "math/rand"
"strings" "strings"
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketRepository_basic(t *testing.T) { func TestAccBitbucketRepository_basic(t *testing.T) {
@@ -196,7 +197,7 @@ func TestAccBitbucketRepository_gitlfs(t *testing.T) {
} }
func testAccCheckBitbucketRepositoryDestroy(s *terraform.State) error { func testAccCheckBitbucketRepositoryDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*BitbucketServerProvider).BitbucketClient client := testAccProvider.Meta().(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
rs, ok := s.RootModule().Resources["bitbucketserver_repository.test_repo"] rs, ok := s.RootModule().Resources["bitbucketserver_repository.test_repo"]
if !ok { if !ok {
return fmt.Errorf("not found %s", "bitbucketserver_repository.test_repo") return fmt.Errorf("not found %s", "bitbucketserver_repository.test_repo")

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"strings" "strings"
) )
@@ -89,7 +90,7 @@ func resourceRepositoryWebhook() *schema.Resource {
} }
func resourceRepositoryWebhookUpdate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryWebhookUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
@@ -116,7 +117,7 @@ func resourceRepositoryWebhookUpdate(d *schema.ResourceData, m interface{}) erro
} }
func resourceRepositoryWebhookCreate(d *schema.ResourceData, m interface{}) error { func resourceRepositoryWebhookCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
project := d.Get("project").(string) project := d.Get("project").(string)
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
@@ -184,7 +185,7 @@ 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.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d", _, 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),
@@ -214,7 +215,7 @@ func getRepositoryWebhookFromId(d *schema.ResourceData, m interface{}) error {
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
id := d.Get("webhook_id").(int) id := d.Get("webhook_id").(int)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d", resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d",
project, project,
@@ -250,7 +251,7 @@ func getRepositoryWebhookFromList(d *schema.ResourceData, m interface{}) error {
repository := d.Get("repository").(string) repository := d.Get("repository").(string)
name := d.Get("name").(string) name := d.Get("name").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks", resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks",
project, project,

View File

@@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
) )
func TestAccBitbucketResourceRepositoryWebhook_simple(t *testing.T) { func TestAccBitbucketResourceRepositoryWebhook_simple(t *testing.T) {
@@ -33,8 +33,8 @@ func TestAccBitbucketResourceRepositoryWebhook_simple(t *testing.T) {
} }
`, projectKey, projectKey) `, projectKey, projectKey)
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -83,8 +83,8 @@ func TestAccBitbucketResourceRepositoryWebhook_complete(t *testing.T) {
// Create resource // Create resource
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -4,13 +4,14 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
"math/rand" "math/rand"
"net/url" "net/url"
"time" "time"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform/helper/validation" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
) )
type User struct { type User struct {
@@ -106,7 +107,7 @@ func newUserUpdateFromResource(d *schema.ResourceData) *UserUpdate {
} }
func resourceUserUpdate(d *schema.ResourceData, m interface{}) error { func resourceUserUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
user := newUserUpdateFromResource(d) user := newUserUpdateFromResource(d)
bytedata, err := json.Marshal(user) bytedata, err := json.Marshal(user)
@@ -125,7 +126,7 @@ func resourceUserUpdate(d *schema.ResourceData, m interface{}) error {
} }
func resourceUserCreate(d *schema.ResourceData, m interface{}) error { func resourceUserCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
user := newUserFromResource(d) user := newUserFromResource(d)
passwordLength := d.Get("password_length").(int) passwordLength := d.Get("password_length").(int)
@@ -156,7 +157,7 @@ func resourceUserRead(d *schema.ResourceData, m interface{}) error {
name := d.Get("name").(string) name := d.Get("name").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get(fmt.Sprintf("/rest/api/1.0/users/%s", req, err := client.Get(fmt.Sprintf("/rest/api/1.0/users/%s",
url.PathEscape(name), url.PathEscape(name),
)) ))
@@ -197,7 +198,7 @@ func resourceUserExists(d *schema.ResourceData, m interface{}) (bool, error) {
name = d.Get("name").(string) name = d.Get("name").(string)
} }
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get(fmt.Sprintf("/rest/api/1.0/users/%s", req, err := client.Get(fmt.Sprintf("/rest/api/1.0/users/%s",
url.PathEscape(name), url.PathEscape(name),
)) ))
@@ -215,7 +216,7 @@ func resourceUserExists(d *schema.ResourceData, m interface{}) (bool, error) {
func resourceUserDelete(d *schema.ResourceData, m interface{}) error { func resourceUserDelete(d *schema.ResourceData, m interface{}) error {
name := d.Get("name").(string) name := d.Get("name").(string)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/users?name=%s", _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/admin/users?name=%s",
url.QueryEscape(name), url.QueryEscape(name),
)) ))

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"io/ioutil" "io/ioutil"
) )
@@ -66,7 +67,7 @@ func resourceUserAccessToken() *schema.Resource {
} }
func resourceUserAccessTokenCreate(d *schema.ResourceData, m interface{}) error { func resourceUserAccessTokenCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
accessTokenRequest := &AccessTokenRequest{ accessTokenRequest := &AccessTokenRequest{
Name: d.Get("name").(string), Name: d.Get("name").(string),
@@ -105,7 +106,7 @@ func resourceUserAccessTokenCreate(d *schema.ResourceData, m interface{}) error
} }
func resourceUserAccessTokenUpdate(d *schema.ResourceData, m interface{}) error { func resourceUserAccessTokenUpdate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
accessTokenRequest := &AccessTokenRequest{ accessTokenRequest := &AccessTokenRequest{
Name: d.Get("name").(string), Name: d.Get("name").(string),
Permissions: d.Get("permissions").([]interface{}), Permissions: d.Get("permissions").([]interface{}),
@@ -130,7 +131,7 @@ func resourceUserAccessTokenUpdate(d *schema.ResourceData, m interface{}) error
func resourceUserAccessTokenRead(d *schema.ResourceData, m interface{}) error { func resourceUserAccessTokenRead(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
res, err := client.Get(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s", res, err := client.Get(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s",
d.Get("user").(string), d.Get("user").(string),
d.Id(), d.Id(),
@@ -160,7 +161,7 @@ func resourceUserAccessTokenRead(d *schema.ResourceData, m interface{}) error {
} }
func resourceUserAccessTokenExists(d *schema.ResourceData, m interface{}) (bool, error) { func resourceUserAccessTokenExists(d *schema.ResourceData, m interface{}) (bool, error) {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
req, err := client.Get(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s", req, err := client.Get(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s",
d.Get("user").(string), d.Get("user").(string),
d.Id(), d.Id(),
@@ -178,7 +179,7 @@ func resourceUserAccessTokenExists(d *schema.ResourceData, m interface{}) (bool,
} }
func resourceUserAccessTokenDelete(d *schema.ResourceData, m interface{}) error { func resourceUserAccessTokenDelete(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
_, err := client.Delete(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s", _, err := client.Delete(fmt.Sprintf("/rest/access-tokens/1.0/users/%s/%s",
d.Get("user").(string), d.Get("user").(string),
d.Id(), d.Id(),

View File

@@ -2,8 +2,9 @@ package bitbucket
import ( import (
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"strings" "strings"
"testing" "testing"
) )
@@ -53,7 +54,7 @@ func TestAccBitbucketUserAccessToken(t *testing.T) {
} }
func testAccCheckBitbucketUserAccessTokenDestroy(s *terraform.State) error { func testAccCheckBitbucketUserAccessTokenDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*BitbucketServerProvider).BitbucketClient client := testAccProvider.Meta().(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
rs, ok := s.RootModule().Resources["bitbucketserver_user_access_token.test"] rs, ok := s.RootModule().Resources["bitbucketserver_user_access_token.test"]
if !ok { if !ok {
return fmt.Errorf("not found %s", "bitbucketserver_user_access_token.test") return fmt.Errorf("not found %s", "bitbucketserver_user_access_token.test")

View File

@@ -4,7 +4,8 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"log" "log"
"strings" "strings"
) )
@@ -48,7 +49,7 @@ func newUserGroupFromResource(d *schema.ResourceData) *UserGroup {
} }
func resourceUserGroupCreate(d *schema.ResourceData, m interface{}) error { func resourceUserGroupCreate(d *schema.ResourceData, m interface{}) error {
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
type UserGroupRequest struct { type UserGroupRequest struct {
User string `json:"user,omitempty"` User string `json:"user,omitempty"`
@@ -113,7 +114,7 @@ func resourceUserGroupDelete(d *schema.ResourceData, m interface{}) error {
userGroup := newUserGroupFromResource(d) userGroup := newUserGroupFromResource(d)
client := m.(*BitbucketServerProvider).BitbucketClient client := m.(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
type RemoveRequest struct { type RemoveRequest struct {
User string `json:"context,omitempty"` User string `json:"context,omitempty"`

View File

@@ -1,7 +1,7 @@
package bitbucket package bitbucket
import ( import (
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"testing" "testing"
) )
@@ -19,8 +19,8 @@ func TestAccBitbucketResourceUserGroup_basic(t *testing.T) {
} }
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,
@@ -52,8 +52,8 @@ func TestAccBitbucketResourceUserGroup_new_group(t *testing.T) {
` `
resource.Test(t, resource.TestCase{ resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) }, PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders, ProtoV6ProviderFactories: ProviderFactories,
Steps: []resource.TestStep{ Steps: []resource.TestStep{
{ {
Config: config, Config: config,

View File

@@ -2,13 +2,14 @@ package bitbucket
import ( import (
"fmt" "fmt"
bitbucketTypes "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/types"
"math/rand" "math/rand"
"strings" "strings"
"testing" "testing"
"time" "time"
"github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
) )
func TestAccBitbucketUser(t *testing.T) { func TestAccBitbucketUser(t *testing.T) {
@@ -51,7 +52,7 @@ func TestAccBitbucketUser(t *testing.T) {
} }
func testAccCheckBitbucketUserDestroy(s *terraform.State) error { func testAccCheckBitbucketUserDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*BitbucketServerProvider).BitbucketClient client := testAccProvider.Meta().(*bitbucketTypes.BitbucketServerProvider).BitbucketClient
rs, ok := s.RootModule().Resources["bitbucketserver_user.test"] rs, ok := s.RootModule().Resources["bitbucketserver_user.test"]
if !ok { if !ok {
return fmt.Errorf("not found %s", "bitbucketserver_user.test") return fmt.Errorf("not found %s", "bitbucketserver_user.test")

View File

@@ -1,4 +1,4 @@
package bitbucket package client
import ( import (
"bytes" "bytes"

View File

@@ -0,0 +1,11 @@
package types
import (
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/marketplace"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket/util/client"
)
type BitbucketServerProvider struct {
BitbucketClient *client.BitbucketClient
MarketplaceClient *marketplace.Client
}

123
go.mod
View File

@@ -1,67 +1,66 @@
module github.com/xvlcwk-terraform/terraform-provider-bitbucketserver module github.com/xvlcwk-terraform/terraform-provider-bitbucketserver
require github.com/hashicorp/terraform v0.12.2
require ( require (
cloud.google.com/go v0.36.0 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
github.com/agext/levenshtein v1.2.2 // indirect github.com/hashicorp/terraform-plugin-framework v1.5.0
github.com/apparentlymart/go-cidr v1.0.0 // indirect github.com/hashicorp/terraform-plugin-framework-validators v0.12.0
github.com/apparentlymart/go-textseg v1.0.0 // indirect github.com/hashicorp/terraform-plugin-go v0.21.0
github.com/armon/go-radix v1.0.0 // indirect github.com/hashicorp/terraform-plugin-mux v0.14.0
github.com/aws/aws-sdk-go v1.19.18 // indirect github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fatih/color v1.7.0 // indirect
github.com/golang/protobuf v1.3.0 // indirect
github.com/google/go-cmp v0.3.0 // indirect
github.com/googleapis/gax-go/v2 v2.0.3 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.0 // indirect
github.com/hashicorp/go-getter v1.3.0 // indirect
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f // indirect
github.com/hashicorp/go-multierror v1.0.0 // indirect
github.com/hashicorp/go-plugin v1.0.1-0.20190610192547-a1bc61569a26 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-uuid v1.0.1 // indirect
github.com/hashicorp/go-version v1.1.0 // indirect
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f // indirect
github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef // indirect
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 // indirect
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb // indirect
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect
github.com/mattn/go-colorable v0.1.1 // indirect
github.com/mattn/go-isatty v0.0.5 // indirect
github.com/mitchellh/cli v1.0.0 // indirect
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mitchellh/go-homedir v1.0.0 // indirect
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
github.com/mitchellh/hashstructure v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.1.2 // indirect
github.com/mitchellh/reflectwalk v1.0.0 // indirect
github.com/oklog/run v1.0.0 // indirect
github.com/posener/complete v1.2.1 // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/spf13/afero v1.2.1 // indirect
github.com/ulikunitz/xz v0.5.5 // indirect
github.com/vmihailenco/msgpack v4.0.1+incompatible // indirect
github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec // indirect
github.com/zclconf/go-cty-yaml v0.1.0 // indirect
go.opencensus.io v0.18.0 // indirect
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 // indirect
golang.org/x/net v0.0.0-20190502183928-7f726cade0ab // indirect
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9 // indirect
golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 // indirect
golang.org/x/text v0.3.2 // indirect
google.golang.org/api v0.1.0 // indirect
google.golang.org/appengine v1.4.0 // indirect
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 // indirect
google.golang.org/grpc v1.18.0 // indirect
) )
go 1.20 require (
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
github.com/agext/levenshtein v1.2.2 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/dmarkham/enumer v1.5.9 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-plugin v1.6.0 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hashicorp/hc-install v0.6.1 // indirect
github.com/hashicorp/hcl/v2 v2.19.1 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-exec v0.19.0 // indirect
github.com/hashicorp/terraform-json v0.18.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
github.com/hashicorp/terraform-registry-address v0.2.3 // indirect
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/oklog/run v1.0.0 // indirect
github.com/pascaldekloe/name v1.0.0 // indirect
github.com/stretchr/testify v1.8.1 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
github.com/zclconf/go-cty v1.14.1 // indirect
golang.org/x/crypto v0.16.0 // indirect
golang.org/x/mod v0.13.0 // indirect
golang.org/x/net v0.18.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.14.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect
google.golang.org/grpc v1.61.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
)
go 1.21
toolchain go1.21.5

562
go.sum
View File

@@ -1,419 +1,219 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190329064014-6e358769c32a/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190103054945-8205d1f41e70/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/aliyun/aliyun-tablestore-go-sdk v4.1.2+incompatible/go.mod h1:LDQHRZylxvcg8H7wBIDfvO5g/cy4/sz1iucBlc2l3Jw= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
github.com/aws/aws-sdk-go v1.16.36/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.19.18 h1:Hb3+b9HCqrOrbAtFstUWg7H5TQ+/EcklJtE8VShVs8o=
github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k=
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dmarkham/enumer v1.5.9 h1:NM/1ma/AUNieHZg74w67GkHFBNB15muOt3sj486QVZk=
github.com/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dmarkham/enumer v1.5.9/go.mod h1:e4VILe2b1nYK3JKJpRmNdl5xbDQvELc6tQ8b+GsGk6E=
github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg=
github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.3.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
github.com/googleapis/gax-go/v2 v2.0.3 h1:siORttZ36U2R/WjiJuDz8znElWBiAlO9rVt+mqJt0Cc=
github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4=
github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
github.com/grpc-ecosystem/grpc-gateway v1.5.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
github.com/hashicorp/aws-sdk-go-base v0.2.0/go.mod h1:ZIWACGGi0N7a4DZbf15yuE1JQORmWLtBcVM6F5SXNFU=
github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI=
github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-azure-helpers v0.0.0-20190129193224-166dfd221bb2/go.mod h1:lu62V//auUow6k0IykxLK2DCNW8qTmpm8KqhYVWattA= github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-getter v1.3.0 h1:pFMSFlI9l5NaeuzkpE3L7BYk9qQ9juTAgXW/H0cqxcU= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-getter v1.3.0/go.mod h1:/O1k/AizTN0QmfEKknCYGvICeyKUDqCYA8vvWtGWDeQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f h1:Yv9YzBlAETjy6AOX9eLBZ3nshNVRREgerT/3nvxlGho= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c=
github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI=
github.com/hashicorp/go-plugin v1.0.1-0.20190610192547-a1bc61569a26 h1:hRho44SAoNu1CBtn5r8Q9J3rCs4ZverWZ4R+UeeNuWM=
github.com/hashicorp/go-plugin v1.0.1-0.20190610192547-a1bc61569a26/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
github.com/hashicorp/go-slug v0.3.0/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8=
github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-tfe v0.3.16/go.mod h1:SuPHR+OcxvzBZNye7nGPfwZTEyd3rWPfLVbCgyZPezM=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hc-install v0.6.1 h1:IGxShH7AVhPaSuSJpKtVi/EFORNjO+OYVJJrAtGG2mY=
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= github.com/hashicorp/hc-install v0.6.1/go.mod h1:0fW3jpg+wraYSnFDJ6Rlie3RvLf1bIqVIkzoon4KoVE=
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI=
github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE=
github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef h1:xZRvbcwHY8zhaxDwgkmpAp2emwZkVn7p3gat0zhq2X0=
github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef/go.mod h1:4oI94iqF3GB10QScn46WqbG0kgTUpha97SAzzg2+2ec=
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI=
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE= github.com/hashicorp/terraform-exec v0.19.0 h1:FpqZ6n50Tk95mItTSS9BjeOVUb4eg81SpgVtZNNtFSM=
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= github.com/hashicorp/terraform-exec v0.19.0/go.mod h1:tbxUpe3JKruE9Cuf65mycSIT8KiNPZ0FkuTE3H4urQg=
github.com/hashicorp/terraform v0.12.2 h1:P5yMdQc+IYEc+fWw3olShmKdbBiCN7DtPjVz+GieBpk= github.com/hashicorp/terraform-json v0.18.0 h1:pCjgJEqqDESv4y0Tzdqfxr/edOIGkjs8keY42xfNBwU=
github.com/hashicorp/terraform v0.12.2/go.mod h1:4MELVjPGm2DO5bK9E7jPXM5F+1pkvT4fYJYtMcQ2CMs= github.com/hashicorp/terraform-json v0.18.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk=
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI= github.com/hashicorp/terraform-plugin-framework v1.5.0 h1:8kcvqJs/x6QyOFSdeAyEgsenVOUeC/IyKpi2ul4fjTg=
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8= github.com/hashicorp/terraform-plugin-framework v1.5.0/go.mod h1:6waavirukIlFpVpthbGd2PUNYaFedB0RwW3MDzJ/rtc=
github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 h1:HOjBuMbOEzl7snOdOoUfE2Jgeto6JOjLVQ39Ls2nksc=
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0/go.mod h1:jfHGE/gzjxYz6XoUwi/aYiiKrJDeutQNUtGQXkaHklg=
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/terraform-plugin-go v0.21.0 h1:VSjdVQYNDKR0l2pi3vsFK1PdMQrw6vGOshJXMNFeVc0=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hashicorp/terraform-plugin-go v0.21.0/go.mod h1:piJp8UmO1uupCvC9/H74l2C6IyKG0rW4FDedIpwW5RQ=
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/hashicorp/terraform-plugin-mux v0.14.0 h1:+UeiTaYy8zPAk1pktNRp3288pIih8gxiRJ6O0e7fS0U=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/hashicorp/terraform-plugin-mux v0.14.0/go.mod h1:UzkNhewtpuqSnBvo1ZXSagAxu+hQ+Ir3F5Mpm86dWn0=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 h1:X7vB6vn5tON2b49ILa4W7mFAsndeqJ7bZFOGbVO+0Cc=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0/go.mod h1:ydFcxbdj6klCqYEPkPvdvFKiNGKZLUs+896ODUXCyao=
github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI=
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM=
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM=
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4/go.mod h1:YYMf4xtQnR8LRC0vKi3afvQ5QwRPQ17zjcpkBCufb+I=
github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo=
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/pascaldekloe/name v1.0.0 h1:n7LKFgHixETzxpRv2R77YgPUFo85QHGZKrdaYm7eY5U=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/pascaldekloe/name v1.0.0/go.mod h1:Z//MfYJnH4jVpQ9wkclwu2I2MkHmXTlT9wR5UZScttM=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI= github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM=
github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0=
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI=
github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU=
github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag=
github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg=
github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw=
github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y=
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ=
github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I=
github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0=
github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ=
github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk=
github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M=
github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok=
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/zclconf/go-cty v0.0.0-20190426224007-b18a157db9e2/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec h1:MSeYjmyjucsFbecMTxg63ASg23lcSARP/kr9sClTFfk= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
github.com/zclconf/go-cty-yaml v0.1.0 h1:OP5nkApyAuXB88t8mRUqxD9gbKZocSLuVovrBAt8z10= github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty-yaml v0.1.0/go.mod h1:Lk26EcRlO3XbaQ8U2fxIJbEtbgEteSZFUpEr3XFTtsU=
go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938=
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190502183928-7f726cade0ab h1:9RfW3ktsOZxgo9YNbBAjq1FWzc/igwEcUzZz8IXgSbk= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9 h1:pfyU+l9dEu0vZzDDMsdAKa1gZbJYEn6urYXj/+Xkz7s= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dzugGxJ/SQHoNufZJq1w= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI= golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0=
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 h1:mBVYJnbrXLA/ZCBTCe7PtEgAUP+1bg92qTaFoPHdz+8= google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.18.0 h1:IZl7mfBGfbhYx2p2rKRtYgDFw6SBz+kclmxYrCksPPA=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=

57
main.go
View File

@@ -1,11 +1,62 @@
package main package main
import ( import (
"github.com/hashicorp/terraform/plugin" "context"
"flag"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server"
"github.com/hashicorp/terraform-plugin-mux/tf5to6server"
"github.com/hashicorp/terraform-plugin-mux/tf6muxserver"
"log"
"github.com/hashicorp/terraform-plugin-framework/providerserver"
"github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket" "github.com/xvlcwk-terraform/terraform-provider-bitbucketserver/bitbucket"
) )
func main() { func main() {
plugin.Serve(&plugin.ServeOpts{ ctx := context.Background()
ProviderFunc: bitbucket.Provider})
var debug bool
flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve")
flag.Parse()
upgradedSdkServer, err := tf5to6server.UpgradeServer(
ctx,
// terraform-plugin-sdk provider
bitbucket.Provider().GRPCProvider, //nolint:staticcheck
)
if err != nil {
log.Fatal(err)
}
providers := []func() tfprotov6.ProviderServer{
providerserver.NewProtocol6(bitbucket.New()), // Example terraform-plugin-framework provider
func() tfprotov6.ProviderServer {
return upgradedSdkServer
},
}
muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...)
if err != nil {
log.Fatal(err)
}
var serveOpts []tf6server.ServeOpt
if debug {
serveOpts = append(serveOpts, tf6server.WithManagedDebug())
}
err = tf6server.Serve(
"registry.terraform.io/xvlcwk-terraform/terraform-provider-bitbucketserver",
muxServer.ProviderServer,
serveOpts...,
)
if err != nil {
log.Fatal(err)
}
} }

View File

@@ -9,7 +9,7 @@ if ! which errcheck > /dev/null; then
fi fi
err_files=$(errcheck -ignoretests \ err_files=$(errcheck -ignoretests \
-ignore 'github.com/hashicorp/terraform/helper/schema:Set' \ -ignore 'github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema:Set' \
-ignore 'bytes:.*' \ -ignore 'bytes:.*' \
-ignore 'io:Close|Write' \ -ignore 'io:Close|Write' \
$(go list ./...| grep -v /vendor/)) $(go list ./...| grep -v /vendor/))