Add support for the Base URL endpoint so the GitHub provider can support GitHub Enterprise (#6434)
This commit is contained in:
parent
02d4458ec2
commit
0cec1c19d7
|
@ -1,6 +1,8 @@
|
|||
package github
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
|
||||
"github.com/google/go-github/github"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
@ -8,6 +10,7 @@ import (
|
|||
type Config struct {
|
||||
Token string
|
||||
Organization string
|
||||
BaseURL string
|
||||
}
|
||||
|
||||
type Organization struct {
|
||||
|
@ -25,5 +28,12 @@ func (c *Config) Client() (interface{}, error) {
|
|||
tc := oauth2.NewClient(oauth2.NoContext, ts)
|
||||
|
||||
org.client = github.NewClient(tc)
|
||||
if c.BaseURL != "" {
|
||||
u, err := url.Parse(c.BaseURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
org.client.BaseURL = u
|
||||
}
|
||||
return &org, nil
|
||||
}
|
||||
|
|
|
@ -23,6 +23,12 @@ func Provider() terraform.ResourceProvider {
|
|||
DefaultFunc: schema.EnvDefaultFunc("GITHUB_ORGANIZATION", nil),
|
||||
Description: descriptions["organization"],
|
||||
},
|
||||
"base_url": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
DefaultFunc: schema.EnvDefaultFunc("GITHUB_BASE_URL", ""),
|
||||
Description: descriptions["base_url"],
|
||||
},
|
||||
},
|
||||
|
||||
ResourcesMap: map[string]*schema.Resource{
|
||||
|
@ -43,6 +49,8 @@ func init() {
|
|||
"token": "The OAuth token used to connect to GitHub.",
|
||||
|
||||
"organization": "The GitHub organization name to manage.",
|
||||
|
||||
"base_url": "The GitHub Base API URL",
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,6 +58,7 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
|
|||
config := Config{
|
||||
Token: d.Get("token").(string),
|
||||
Organization: d.Get("organization").(string),
|
||||
BaseURL: d.Get("base_url").(string),
|
||||
}
|
||||
|
||||
return config.Client()
|
||||
|
|
|
@ -40,3 +40,7 @@ The following arguments are supported in the `provider` block:
|
|||
* `organization` - (Optional) This is the target GitHub organization to manage. The account
|
||||
corresponding to the token will need "owner" privileges for this organization. It must be provided, but
|
||||
it can also be sourced from the `GITHUB_ORGANIZATION` environment variable.
|
||||
|
||||
* `base_url` - (Optional) This is the target GitHub base API endpoint. Providing a value is a
|
||||
requirement when working with GitHub Enterprise. It is optional to provide this value and
|
||||
it can also be sourced from the `GITHUB_BASE_URL` environment variable. The value must end with a slash.
|
||||
|
|
Loading…
Reference in New Issue