mirror of
https://github.com/status-im/consul.git
synced 2025-02-16 15:47:21 +00:00
vendor: update github.com/hashicorp/go-discover
This commit is contained in:
parent
29373fa2b7
commit
da01cd112e
93
vendor/github.com/hashicorp/go-discover/README.md
generated
vendored
93
vendor/github.com/hashicorp/go-discover/README.md
generated
vendored
@ -1,57 +1,70 @@
|
||||
# Go Discover Nodes for Cloud Providers
|
||||
|
||||
`go-discover` is a Go (golang) library to discover ip addresses of nodes
|
||||
in cloud environments based on meta information like tags provided by
|
||||
the environment.
|
||||
`go-discover` is a Go (golang) library and command line tool to discover
|
||||
ip addresses of nodes in cloud environments based on meta information
|
||||
like tags provided by the environment.
|
||||
|
||||
The following cloud providers have built-in support but additional providers
|
||||
The configuration for the providers is provided as a list of `key=val
|
||||
key=val ...` tuples where the values can be URL encoded. The provider is
|
||||
determined through the `provider` key. Effectively, only spaces have to
|
||||
be encoded with a `+` and on the command line you have to observe
|
||||
quoting rules with your shell.
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
# Amazon AWS
|
||||
provider=aws region=eu-west-1 tag_key=consul tag_value=... access_key_id=... secret_access_key=...
|
||||
|
||||
# Google Cloud
|
||||
provider=gce project_name=... zone_pattern=eu-west-* tag_value=consul credentials_file=...
|
||||
|
||||
# Microsoft Azure
|
||||
provider=azure tag_name=consul tag_value=... tenant_id=... client_id=... subscription_id=... secret_access_key=...
|
||||
```
|
||||
|
||||
### Supported Providers
|
||||
|
||||
The following cloud providers are supported but additional providers
|
||||
can be added to the `discover.Disoverers` map.
|
||||
|
||||
* Amazon AWS
|
||||
* Google Cloud
|
||||
* Microsoft Azure
|
||||
|
||||
## Usage
|
||||
* Amazon AWS [Config options](http://godoc.org/github.com/hashicorp/go-discover/aws)
|
||||
* Google Cloud [Config options](http://godoc.org/github.com/hashicorp/go-discover/gce)
|
||||
* Microsoft Azure [Config options](http://godoc.org/github.com/hashicorp/go-discover/azure)
|
||||
|
||||
First, install the library:
|
||||
## Command Line Tool Usage
|
||||
|
||||
Install the command line tool with:
|
||||
|
||||
```
|
||||
go get -u github.com/hashicorp/go-discover/cmd/discover
|
||||
```
|
||||
|
||||
Then run it with:
|
||||
|
||||
```
|
||||
$ discover provider=aws region=eu-west-1 ...
|
||||
```
|
||||
|
||||
## Library Usage
|
||||
|
||||
Install the library with:
|
||||
|
||||
```
|
||||
go get -u github.com/hashicorp/go-discover
|
||||
```
|
||||
|
||||
All providers are configured with a "key=val key=val ..." format
|
||||
strings where the values are URL encoded. The `discover.Discover`
|
||||
function determines the provider through the `provider` key.
|
||||
Then call the `discover.Discover` function with the arguments
|
||||
for the provider you want to use:
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
provider=aws region=eu-west-1 ...
|
||||
```
|
||||
|
||||
### Amazon AWS
|
||||
|
||||
```
|
||||
```go
|
||||
# use ioutil.Discard for no log output
|
||||
l := log.New(os.Stderr, "", log.LstdFlags)
|
||||
args := "provider=aws region=eu-west-1 tag_key=consul tag_value=... access_key_id=... secret_access_key=..."
|
||||
nodes, err := discover.Discover(args, l)
|
||||
args := "provider=aws region=eu-west-1 ..."
|
||||
addrs, err := discover.Discover(args, l)
|
||||
```
|
||||
|
||||
### Google Cloud
|
||||
|
||||
```
|
||||
l := log.New(os.Stderr, "", log.LstdFlags)
|
||||
args := "provider=gce project_name=... zone_pattern=eu-west-* tag_value=consul credentials_file=..."
|
||||
nodes, err := discover.Discover(args, l)
|
||||
```
|
||||
|
||||
### Microsoft Azure
|
||||
|
||||
```
|
||||
l := log.New(os.Stderr, "", log.LstdFlags)
|
||||
args := "provider=azure tag_name=consul tag_value=... tenant_id=... client_id=... subscription_id=... secret_access_key=..."
|
||||
nodes, err := discover.Discover(args, l)
|
||||
```
|
||||
|
||||
For complete API documentation, see [GoDoc](https://godoc.org/github.com/hashicorp/go-discover).
|
||||
For complete API documentation, see [GoDoc](https://godoc.org/github.com/hashicorp/go-discover) and
|
||||
the [supported providers](http://godoc.org/github.com/hashicorp/go-discover#pkg-subdirectories).
|
||||
|
||||
|
7
vendor/github.com/hashicorp/go-discover/aws/aws_discover.go
generated
vendored
7
vendor/github.com/hashicorp/go-discover/aws/aws_discover.go
generated
vendored
@ -2,6 +2,7 @@
|
||||
package aws
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
@ -35,7 +36,7 @@ import (
|
||||
func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
m, err := config.Parse(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-aws: %s", err)
|
||||
}
|
||||
|
||||
region := m["region"]
|
||||
@ -49,7 +50,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
ec2meta := ec2metadata.New(session.New())
|
||||
identity, err := ec2meta.GetInstanceIdentityDocument()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-aws: %s", err)
|
||||
}
|
||||
region = identity.Region
|
||||
}
|
||||
@ -80,7 +81,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-aws: %s", err)
|
||||
}
|
||||
l.Printf("[INFO] discover-aws: Filter instances by %s=%s", tagKey, tagValue)
|
||||
|
||||
|
8
vendor/github.com/hashicorp/go-discover/azure/azure_discover.go
generated
vendored
8
vendor/github.com/hashicorp/go-discover/azure/azure_discover.go
generated
vendored
@ -34,7 +34,7 @@ import (
|
||||
func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
m, err := config.Parse(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-azure: %s", err)
|
||||
}
|
||||
|
||||
tenantID := m["tenant_id"]
|
||||
@ -47,13 +47,13 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
// Only works for the Azure PublicCLoud for now; no ability to test other Environment
|
||||
oauthConfig, err := azure.PublicCloud.OAuthConfigForTenant(tenantID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-azure: %s", err)
|
||||
}
|
||||
|
||||
// Get the ServicePrincipalToken for use searching the NetworkInterfaces
|
||||
sbt, err := azure.NewServicePrincipalToken(*oauthConfig, clientID, secretKey, azure.PublicCloud.ResourceManagerEndpoint)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-azure: %s", err)
|
||||
}
|
||||
|
||||
// Setup the client using autorest; followed the structure from Terraform
|
||||
@ -66,7 +66,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
// unless there is a compelling reason to restrict
|
||||
netres, err := vmnet.ListAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-azure: %s", err)
|
||||
}
|
||||
|
||||
// For now, ignore Primary interfaces, choose any PrivateIPAddress with the matching tags
|
||||
|
38
vendor/github.com/hashicorp/go-discover/cmd/discover/main.go
generated
vendored
Normal file
38
vendor/github.com/hashicorp/go-discover/cmd/discover/main.go
generated
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
// discover provides node discovery on the command line.
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
discover "github.com/hashicorp/go-discover"
|
||||
)
|
||||
|
||||
func main() {
|
||||
help := flag.Bool("h", false, "show help")
|
||||
quiet := flag.Bool("q", false, "no output")
|
||||
flag.Parse()
|
||||
|
||||
args := strings.Join(flag.Args(), " ")
|
||||
if *help || args == "" {
|
||||
fmt.Println("Usage: discover key=val key=val ...")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
var w io.Writer = os.Stderr
|
||||
if *quiet {
|
||||
w = ioutil.Discard
|
||||
}
|
||||
l := log.New(w, "", log.LstdFlags)
|
||||
|
||||
addrs, err := discover.Discover(args, l)
|
||||
if err != nil {
|
||||
l.Fatal("[ERR] ", err)
|
||||
}
|
||||
fmt.Println(strings.Join(addrs, " "))
|
||||
}
|
4
vendor/github.com/hashicorp/go-discover/config/parse.go
generated
vendored
4
vendor/github.com/hashicorp/go-discover/config/parse.go
generated
vendored
@ -19,12 +19,12 @@ func Parse(s string) (map[string]string, error) {
|
||||
for _, v := range strings.Fields(s) {
|
||||
p := strings.SplitN(v, "=", 2)
|
||||
if len(p) != 2 {
|
||||
return nil, fmt.Errorf("discover: invalid format: %s", v)
|
||||
return nil, fmt.Errorf("invalid format: %s", v)
|
||||
}
|
||||
key := p[0]
|
||||
val, err := url.QueryUnescape(p[1])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("discover: invalid format: %s", v)
|
||||
return nil, fmt.Errorf("invalid format: %s", v)
|
||||
}
|
||||
m[key] = val
|
||||
}
|
||||
|
8
vendor/github.com/hashicorp/go-discover/discover.go
generated
vendored
8
vendor/github.com/hashicorp/go-discover/discover.go
generated
vendored
@ -3,7 +3,6 @@ package discover
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/hashicorp/go-discover/aws"
|
||||
"github.com/hashicorp/go-discover/azure"
|
||||
@ -36,10 +35,9 @@ func init() {
|
||||
// provider=aws region=eu-west-1 ...
|
||||
//
|
||||
func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
args := strings.SplitN(cfg, " ", 2)
|
||||
m, err := config.Parse(args[0])
|
||||
m, err := config.Parse(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover: %s", err)
|
||||
}
|
||||
p := m["provider"]
|
||||
if p == "" {
|
||||
@ -49,5 +47,5 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
if d == nil {
|
||||
return nil, fmt.Errorf("discover: unknown provider %q", p)
|
||||
}
|
||||
return d(args[1], l)
|
||||
return d(cfg, l)
|
||||
}
|
||||
|
12
vendor/github.com/hashicorp/go-discover/gce/gce_discover.go
generated
vendored
12
vendor/github.com/hashicorp/go-discover/gce/gce_discover.go
generated
vendored
@ -44,7 +44,7 @@ import (
|
||||
func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
m, err := config.Parse(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
|
||||
project := m["project_name"]
|
||||
@ -57,7 +57,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
l.Println("[INFO] discover-gce: Looking up project name")
|
||||
p, err := lookupProject()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
project = p
|
||||
}
|
||||
@ -69,11 +69,11 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
}
|
||||
client, err := client(creds)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
svc, err := compute.New(client)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
|
||||
// lookup the project zones to look in
|
||||
@ -84,7 +84,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
}
|
||||
zones, err := lookupZones(svc, project, zone)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
l.Printf("[INFO] discover-gce: Found zones %v", zones)
|
||||
|
||||
@ -93,7 +93,7 @@ func Discover(cfg string, l *log.Logger) ([]string, error) {
|
||||
for _, zone := range zones {
|
||||
a, err := lookupAddrs(svc, project, zone, tagValue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("discover-gce: %s", err)
|
||||
}
|
||||
l.Printf("[INFO] discover-gce: Zone %q has %v", zone, a)
|
||||
addrs = append(addrs, a...)
|
||||
|
6
vendor/vendor.json
vendored
6
vendor/vendor.json
vendored
@ -246,10 +246,10 @@
|
||||
"revisionTime": "2017-02-11T01:34:15Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "8emlOr8dXbbAfm/JrNiHJcSpCLg=",
|
||||
"checksumSHA1": "SZ5/I9XKRS2myif+8kRgZbhVUHE=",
|
||||
"path": "github.com/hashicorp/go-discover",
|
||||
"revision": "403f22046550d37902eb57353ad20431377f2967",
|
||||
"revisionTime": "2017-06-20T11:59:42Z",
|
||||
"revision": "2c6c2771ed739d39922779b1a81e8b99c5eef6b2",
|
||||
"revisionTime": "2017-06-22T10:42:22Z",
|
||||
"tree": true
|
||||
},
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user