├── .circleci └── config.yml ├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── README.md ├── build.sh ├── init.sh ├── install.sh ├── kubernetes ├── client │ ├── client.go │ └── utils.go ├── cluster │ └── cluster.go ├── model │ ├── model.go │ └── utils.go ├── provider_kubernetes.go ├── resource_kubernetes_cluster.go └── resource_kubernetes_resource.go ├── main.go ├── schema └── schema.go ├── terraform-provider-kubernetes.iml └── vendor └── vendor.json /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: circleci/golang:1.9 6 | working_directory: /go/src/github.com/maxmanuylov/terraform-provider-kubernetes 7 | steps: 8 | - checkout 9 | - run: /bin/sh ./build.sh 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/workspace.xml 2 | /bin/ 3 | 4 | /vendor/* 5 | !/vendor/vendor.json 6 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 1.8 28 | 29 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Terraform Kubernetes Provider 2 | 3 | This is a plugin for HashiCorp [Terraform](https://terraform.io), which helps deploying Kubernetes resources like pods, services, replication controllers, etc. 4 | 5 | ## Usage 6 | 7 | - Download the plugin from [Releases](https://github.com/maxmanuylov/terraform-provider-kubernetes/releases) page. 8 | - [Install](https://terraform.io/docs/plugins/basics.html) it, or put into a directory with configuration files. 9 | - Create a sample configuration file `example.tf`: 10 | ``` 11 | provider "k8s" { 12 | # Either "k8s" provider or "k8s_cluster" resource should be configured 13 | 14 | # Kubernetes API server, both HTTP and HTTPS are supported 15 | api_server = "https://192.168.0.1:6443" 16 | 17 | # TLS options are optional, see "tls" Terraform provider (built-in) for certificates/keys generating 18 | ca_cert = "" 19 | client_cert = "" 20 | client_key = "" 21 | } 22 | 23 | resource "k8s_cluster" "main" { 24 | # Either "k8s" provider or "k8s_cluster" resource should be configured 25 | 26 | # Kubernetes API server, both HTTP and HTTPS are supported 27 | api_server = "https://192.168.0.1:6443" 28 | 29 | # TLS options are optional, see "tls" Terraform provider (built-in) for certificates/keys generating 30 | ca_cert = "" 31 | client_cert = "" 32 | client_key = "" 33 | } 34 | 35 | resource "k8s_resource" "mypod" { 36 | # Optional; if specified, must link on the corresponding "k8s_cluster" resource; otherwise provider configuration is used 37 | cluster = "${k8s_cluster.main.cluster}" 38 | 39 | # Required; resource contents must be in JSON or YAML format 40 | contents = "${file("mypod.yaml")}" 41 | 42 | # Optional; specifies "contents" format; possible values are "yaml" (default) and "json" 43 | encoding = "yaml" 44 | } 45 | ``` 46 | - Run: 47 | ``` 48 | $ terraform apply 49 | ``` 50 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VERSION="v1.3.4" 4 | 5 | govendor sync 6 | 7 | rm -rf bin 8 | 9 | export GO15VENDOREXPERIMENT=1 10 | export GOARCH=amd64 11 | 12 | GOOS=darwin go build -o bin/macos/terraform-provider-k8s 13 | GOOS=linux go build -o bin/linux/terraform-provider-k8s 14 | GOOS=windows go build -o bin/windows/terraform-provider-k8s.exe 15 | 16 | tar czf bin/terraform-provider-k8s-$VERSION-macos.tar.gz --directory=bin/macos terraform-provider-k8s 17 | tar czf bin/terraform-provider-k8s-$VERSION-linux.tar.gz --directory=bin/linux terraform-provider-k8s 18 | zip bin/terraform-provider-k8s-$VERSION-windows.zip -j bin/windows/terraform-provider-k8s.exe 19 | 20 | go run schema/schema.go k8s bin 21 | -------------------------------------------------------------------------------- /init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TERRAFORM_VERSION="v0.10.0" 4 | 5 | rm -rf vendor 6 | 7 | govendor init 8 | 9 | govendor fetch gopkg.in/yaml.v2 10 | govendor fetch github.com/maxmanuylov/go-rest/client 11 | govendor fetch github.com/maxmanuylov/utils/http/transport/tls 12 | govendor fetch github.com/hashicorp/go-plugin@f72692aebca2008343a9deb06ddb4b17f7051c15 13 | govendor fetch github.com/hashicorp/terraform@=$TERRAFORM_VERSION 14 | govendor fetch github.com/maxmanuylov/utils/intellij-hcl/terraform/provider-schema-generator@=v2.2 15 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TERRAFORM_DIR="" 4 | LOCAL_OS="" 5 | 6 | cp -f bin/k8s.json "$HOME/.terraform.d/schemas/k8s.json" 7 | cp -f "bin/$LOCAL_OS/terraform-provider-k8s" "$TERRAFORM_DIR/terraform-provider-k8s" 8 | -------------------------------------------------------------------------------- /kubernetes/client/client.go: -------------------------------------------------------------------------------- 1 | package kubernetes_client 2 | 3 | import ( 4 | "fmt" 5 | "github.com/maxmanuylov/go-rest/client" 6 | "github.com/maxmanuylov/go-rest/error" 7 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/cluster" 8 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/model" 9 | "net/http" 10 | "strings" 11 | "time" 12 | ) 13 | 14 | var ( 15 | ErrNotFound = rest_error.NewByCode(http.StatusNotFound) 16 | ErrConflict = rest_error.NewByCode(http.StatusConflict) 17 | ) 18 | 19 | type KubeClient struct { 20 | restClient *rest_client.Client 21 | } 22 | 23 | func New(cluster *kubernetes_cluster.Cluster) (*KubeClient, error) { 24 | transport, err := newTransport(cluster) 25 | if err != nil { 26 | return nil, err 27 | } 28 | 29 | return &KubeClient{ 30 | restClient: rest_client.New(strings.TrimSuffix(cluster.ApiServer, "/"), &http.Client{ 31 | Transport: transport, 32 | Timeout: 10 * time.Second, 33 | }), 34 | }, nil 35 | } 36 | 37 | func (client *KubeClient) WaitForAPIServer() error { 38 | action := "connect to Kubernetes API server" 39 | 40 | eh := retryLong(action, nil, func() error { 41 | _, err := client.restClient.Do("GET", kubernetes_model.DefaultApiPath, rest_client.Json, nil) 42 | return err 43 | }) 44 | 45 | if eh.error != nil { 46 | dumpErrorsToFile(action, nil, eh) 47 | } 48 | 49 | return eh.error 50 | } 51 | 52 | func (client *KubeClient) Create(resource *kubernetes_model.KubeResource) error { 53 | collection := client.restClient.Collection(resource.CollectionPath()) 54 | action := fmt.Sprintf("create %s", resource.Path()) 55 | 56 | eh := retryLong(action, resource.Contents, func() error { 57 | err := createResource(collection, resource.Encoding, resource.Contents) 58 | if err == http.ErrNoLocation { 59 | return nil 60 | } 61 | return err 62 | }) 63 | 64 | if eh.error == ErrConflict { // resource already exists 65 | return client.Update(resource) 66 | } 67 | 68 | if eh.error != nil { 69 | dumpErrorsToFile(action, resource.Contents, eh) 70 | return eh.error 71 | } 72 | 73 | return nil 74 | } 75 | 76 | func (client *KubeClient) Update(resource *kubernetes_model.KubeResource) error { 77 | collection := client.restClient.Collection(resource.CollectionPath()) 78 | action := fmt.Sprintf("update %s", resource.Path()) 79 | 80 | eh := retryLong(action, resource.Contents, func() error { 81 | return updateResource(collection, resource.Name, resource.Encoding, resource.Contents) 82 | }) 83 | 84 | if eh.error != nil { 85 | dumpErrorsToFile(action, resource.Contents, eh) 86 | } 87 | 88 | return eh.error 89 | } 90 | 91 | func (client *KubeClient) Exists(resourcePath *kubernetes_model.KubeResourcePath) (bool, error) { 92 | collection := client.restClient.Collection(resourcePath.CollectionPath()) 93 | action := fmt.Sprintf("check existence of %s", resourcePath.Path()) 94 | 95 | exists := false 96 | eh := retryShort(action, nil, func() error { 97 | var err error 98 | exists, err = collection.Exists(resourcePath.Name) 99 | return err 100 | }) 101 | 102 | return exists, eh.error 103 | } 104 | 105 | func (client *KubeClient) Delete(resourcePath *kubernetes_model.KubeResourcePath) error { 106 | if resourcePath.CannotBeDeleted() { 107 | return nil 108 | } 109 | 110 | collection := client.restClient.Collection(resourcePath.CollectionPath()) 111 | action := fmt.Sprintf("delete %s", resourcePath.Path()) 112 | 113 | eh := retryShort(action, nil, func() error { 114 | return collection.Delete(resourcePath.Name) 115 | }) 116 | 117 | if eh.error == ErrNotFound { 118 | return nil 119 | } 120 | 121 | if eh.error != nil { 122 | dumpErrorsToFile(action, nil, eh) 123 | } 124 | 125 | return eh.error 126 | } 127 | -------------------------------------------------------------------------------- /kubernetes/client/utils.go: -------------------------------------------------------------------------------- 1 | package kubernetes_client 2 | 3 | import ( 4 | "fmt" 5 | "github.com/maxmanuylov/go-rest/client" 6 | "github.com/maxmanuylov/go-rest/error" 7 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/cluster" 8 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/model" 9 | "github.com/maxmanuylov/utils/http/transport/tls" 10 | "io" 11 | "net/http" 12 | "os" 13 | "time" 14 | ) 15 | 16 | func newTransport(cluster *kubernetes_cluster.Cluster) (http.RoundTripper, error) { 17 | if cluster.CaCert != "" && cluster.ClientCert != "" && cluster.ClientKey != "" { 18 | return tls_transport.New([]byte(cluster.CaCert), []byte(cluster.ClientCert), []byte(cluster.ClientKey)) 19 | } 20 | return http.DefaultTransport, nil 21 | } 22 | 23 | type errorHistory struct { 24 | error error 25 | history []error 26 | } 27 | 28 | func errInvalidEncoding(encoding string) error { 29 | return fmt.Errorf("Invalid encoding: %s", encoding) 30 | } 31 | 32 | func createResource(collection rest_client.Collection, encoding string, contents []byte) error { 33 | if encoding == kubernetes_model.EncodingJson { 34 | _, err := collection.CreateJson(contents) 35 | return err 36 | } else if encoding == kubernetes_model.EncodingYaml { 37 | _, err := collection.CreateYaml(contents) 38 | return err 39 | } 40 | return errInvalidEncoding(encoding) 41 | } 42 | 43 | func updateResource(collection rest_client.Collection, name, encoding string, contents []byte) error { 44 | if encoding == kubernetes_model.EncodingJson { 45 | return collection.ReplaceJson(name, contents) 46 | } else if encoding == kubernetes_model.EncodingYaml { 47 | return collection.ReplaceYaml(name, contents) 48 | } 49 | return errInvalidEncoding(encoding) 50 | } 51 | 52 | func retryLong(action string, contents []byte, do func() error) *errorHistory { 53 | return retry(200, action, contents, do) // 10 minutes 54 | } 55 | 56 | func retryShort(action string, contents []byte, do func() error) *errorHistory { 57 | return retry(3, action, contents, do) // 3 times 58 | } 59 | 60 | func retry(n int, action string, contents []byte, do func() error) *errorHistory { 61 | eh := &errorHistory{ 62 | history: make([]error, 0), 63 | } 64 | 65 | var done bool 66 | 67 | for i := 0; i < n; i++ { 68 | if i != 0 { 69 | time.Sleep(3 * time.Second) 70 | } 71 | 72 | done, eh.error = try(do) 73 | if eh.error != nil { 74 | eh.history = append(eh.history, eh.error) 75 | } 76 | 77 | if done { 78 | return eh 79 | } 80 | 81 | if eh.error != nil { 82 | dumpErrors(os.Stderr, action, contents, eh.error) 83 | } 84 | } 85 | 86 | return eh 87 | } 88 | 89 | func try(do func() error) (bool, error) { 90 | err := do() 91 | if err == nil { 92 | return true, nil 93 | } 94 | 95 | restErr, ok := err.(*rest_error.Error) 96 | if !ok { 97 | return false, err 98 | } 99 | 100 | if restErr.IsClientError() { 101 | if restErr.Code == http.StatusNotFound { 102 | return true, ErrNotFound 103 | } 104 | if restErr.Code == http.StatusConflict { 105 | return true, ErrConflict 106 | } 107 | if restErr.Code == http.StatusForbidden { // Illegal Kubernetes state, need to retry 108 | return false, restErr 109 | } 110 | return true, restErr 111 | } 112 | 113 | return false, restErr 114 | } 115 | 116 | func dumpErrorsToFile(action string, contents []byte, eh *errorHistory) { 117 | file, err := os.Create("kubernetes-error.log") 118 | if err != nil { 119 | return 120 | } 121 | 122 | defer file.Close() 123 | defer file.Sync() 124 | 125 | fmt.Fprintf(file, "%s\n\n", time.Now().String()) 126 | 127 | dumpErrors(file, action, contents, eh.history...) 128 | } 129 | 130 | func dumpErrors(writer io.Writer, action string, contents []byte, errors... error) { 131 | fmt.Fprintf(writer, "Failed to %s\n\n", action) 132 | 133 | for _, err := range errors { 134 | fmt.Fprintln(writer, "=================================================================") 135 | fmt.Fprintf(writer, "\n%v\n\n", err) 136 | } 137 | 138 | if contents != nil { 139 | fmt.Fprintln(writer, "==============") 140 | fmt.Fprintln(writer, "== Contents ==") 141 | fmt.Fprintln(writer, "==============") 142 | fmt.Fprintf(writer, "\n%s\n\n", contents) 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /kubernetes/cluster/cluster.go: -------------------------------------------------------------------------------- 1 | package kubernetes_cluster 2 | 3 | import ( 4 | "github.com/hashicorp/terraform/helper/schema" 5 | "encoding/json" 6 | ) 7 | 8 | type Cluster struct { 9 | ApiServer string 10 | CaCert string 11 | ClientCert string 12 | ClientKey string 13 | } 14 | 15 | func New(clusterData *schema.ResourceData) *Cluster { 16 | return &Cluster{ 17 | ApiServer: clusterData.Get("api_server").(string), 18 | CaCert: clusterData.Get("ca_cert").(string), 19 | ClientCert: clusterData.Get("client_cert").(string), 20 | ClientKey: clusterData.Get("client_key").(string), 21 | } 22 | } 23 | 24 | func Load(resourceData *schema.ResourceData, meta interface{}) (*Cluster, error) { 25 | if encodedCluster := resourceData.Get("cluster").(string); encodedCluster != "" { 26 | return Decode(encodedCluster) 27 | } 28 | return meta.(*Cluster), nil 29 | } 30 | 31 | func (c *Cluster) Encode() (string, error) { 32 | encodedCluster, err := json.Marshal(c) 33 | return string(encodedCluster), err 34 | } 35 | 36 | func Decode(encodedCluster string) (*Cluster, error) { 37 | cluster := &Cluster{} 38 | return cluster, json.Unmarshal([]byte(encodedCluster), cluster) 39 | } 40 | -------------------------------------------------------------------------------- /kubernetes/model/model.go: -------------------------------------------------------------------------------- 1 | package kubernetes_model 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | const ( 8 | DefaultApiPath = "api/v1" 9 | DefaultNamespace = "default" 10 | EncodingJson = "json" 11 | EncodingYaml = "yaml" 12 | namespacesCollection = "namespaces" 13 | ) 14 | 15 | type KubeResourcePath struct { 16 | ApiPath string 17 | Namespace string 18 | Collection string 19 | Name string 20 | } 21 | 22 | type KubeResource struct { 23 | *KubeResourcePath 24 | 25 | Contents []byte 26 | Encoding string 27 | } 28 | 29 | func (resourcePath *KubeResourcePath) IsGlobal() bool { 30 | return resourcePath.Namespace == "" 31 | } 32 | 33 | func (resourcePath *KubeResourcePath) IsNamespace() bool { 34 | return resourcePath.Collection == namespacesCollection 35 | } 36 | 37 | func (resourcePath *KubeResourcePath) CannotBeDeleted() bool { 38 | return resourcePath.IsNamespace() && (resourcePath.Name == DefaultNamespace || resourcePath.Name == "kube-system" || resourcePath.Name == "kube-public") 39 | } 40 | 41 | func (resourcePath *KubeResourcePath) CollectionPath() string { 42 | if resourcePath.IsGlobal() { 43 | return fmt.Sprintf("%s/%s", resourcePath.ApiPath, resourcePath.Collection) 44 | } 45 | return fmt.Sprintf("%s/%s/%s/%s", resourcePath.ApiPath, namespacesCollection, resourcePath.Namespace, resourcePath.Collection) 46 | } 47 | 48 | func (resourcePath *KubeResourcePath) Path() string { 49 | return fmt.Sprintf("%s/%s", resourcePath.CollectionPath(), resourcePath.Name) 50 | } 51 | -------------------------------------------------------------------------------- /kubernetes/model/utils.go: -------------------------------------------------------------------------------- 1 | package kubernetes_model 2 | 3 | import ( 4 | "encoding/json" 5 | "errors" 6 | "fmt" 7 | "github.com/hashicorp/terraform/helper/schema" 8 | "gopkg.in/yaml.v2" 9 | "strings" 10 | ) 11 | 12 | type k8sEntity struct { 13 | ApiVersion string `json:"apiVersion" yaml:"apiVersion"` 14 | Kind string 15 | Metadata struct { 16 | Name string 17 | Namespace string 18 | } 19 | } 20 | 21 | func (e *k8sEntity) GetApiPath() string { 22 | if e.ApiVersion == "" || e.ApiVersion == "v1" { 23 | return DefaultApiPath 24 | } 25 | return fmt.Sprintf("apis/%s", strings.Trim(e.ApiVersion, "/")) 26 | } 27 | 28 | func (e *k8sEntity) IsNamespace() bool { 29 | return strings.ToLower(e.Kind) == "namespace" 30 | } 31 | 32 | func (e *k8sEntity) GetNamespace(global bool) string { 33 | if global || e.IsNamespace() { 34 | return "" 35 | } 36 | 37 | if e.Metadata.Namespace == "" { 38 | return DefaultNamespace 39 | } 40 | 41 | return e.Metadata.Namespace 42 | } 43 | 44 | func (e *k8sEntity) GetCollection() string { 45 | lowerKind := strings.ToLower(e.Kind) 46 | if strings.HasSuffix(lowerKind, "s") { 47 | return fmt.Sprintf("%ses", lowerKind) 48 | } 49 | return fmt.Sprintf("%ss", lowerKind) 50 | } 51 | 52 | func ParseResource(resourceData *schema.ResourceData) (*KubeResource, error) { 53 | contents := []byte(resourceData.Get("contents").(string)) 54 | encoding := resourceData.Get("encoding").(string) 55 | global := resourceData.Get("global").(bool) 56 | 57 | entity := &k8sEntity{} 58 | if encoding == EncodingJson { 59 | if err := json.Unmarshal(contents, entity); err != nil { 60 | return nil, err 61 | } 62 | } else { 63 | if err := yaml.Unmarshal(contents, entity); err != nil { 64 | return nil, err 65 | } 66 | } 67 | 68 | if entity.Kind == "" { 69 | return nil, errors.New("Kind is not specified") 70 | } 71 | 72 | if entity.Metadata.Name == "" { 73 | return nil, errors.New("Name is not specified") 74 | } 75 | 76 | return &KubeResource{ 77 | KubeResourcePath: &KubeResourcePath{ 78 | ApiPath: entity.GetApiPath(), 79 | Namespace: entity.GetNamespace(global), 80 | Collection: entity.GetCollection(), 81 | Name: entity.Metadata.Name, 82 | }, 83 | Contents: contents, 84 | Encoding: encoding, 85 | }, nil 86 | } 87 | 88 | func ParsePath(path string) *KubeResourcePath { 89 | resourceName, collectionPath := splitOne(path) 90 | collectionName, restPath := splitOne(collectionPath) 91 | 92 | if collectionName == namespacesCollection { 93 | return &KubeResourcePath{ 94 | ApiPath: restPath, 95 | Namespace: "", 96 | Collection: namespacesCollection, 97 | Name: resourceName, 98 | } 99 | } 100 | 101 | namespaceName, namespacesCollectionPath := splitOne(restPath) 102 | namespacesCollectionName, apiPath := splitOne(namespacesCollectionPath) 103 | 104 | if namespacesCollectionName == namespacesCollection { 105 | return &KubeResourcePath{ 106 | ApiPath: apiPath, 107 | Namespace: namespaceName, 108 | Collection: collectionName, 109 | Name: resourceName, 110 | } 111 | } 112 | 113 | return &KubeResourcePath{ 114 | ApiPath: restPath, 115 | Namespace: "", 116 | Collection: collectionName, 117 | Name: resourceName, 118 | } 119 | } 120 | 121 | func splitOne(path string) (string, string) { 122 | if slashPos := strings.LastIndex(path, "/"); slashPos == -1 { 123 | return path, "" 124 | } else { 125 | return path[slashPos + 1:], path[:slashPos] 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /kubernetes/provider_kubernetes.go: -------------------------------------------------------------------------------- 1 | package kubernetes 2 | 3 | import ( 4 | "fmt" 5 | "github.com/hashicorp/terraform/helper/schema" 6 | "github.com/hashicorp/terraform/terraform" 7 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/cluster" 8 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/model" 9 | "strings" 10 | ) 11 | 12 | func Provider() terraform.ResourceProvider { 13 | return &schema.Provider{ 14 | Schema: clusterSchema(false), 15 | ConfigureFunc: configureKubernetesProvider, 16 | 17 | ResourcesMap: map[string]*schema.Resource{ 18 | "k8s_cluster": { 19 | Schema: clusterSchema(true), 20 | Create: createKubernetesCluster, 21 | Read: readKubernetesCluster, 22 | Update: updateKubernetesCluster, 23 | Delete: deleteKubernetesCluster, 24 | }, 25 | 26 | "k8s_resource": { 27 | Schema: map[string]*schema.Schema{ 28 | "cluster": { 29 | Type: schema.TypeString, 30 | Sensitive: true, 31 | Optional: true, 32 | }, 33 | "contents": { 34 | Type: schema.TypeString, 35 | Required: true, 36 | Sensitive: true, 37 | }, 38 | "encoding": { 39 | Type: schema.TypeString, 40 | Optional: true, 41 | Default: kubernetes_model.EncodingYaml, 42 | ValidateFunc: validateResourceEncoding, 43 | }, 44 | "global": { 45 | Type: schema.TypeBool, 46 | Optional: true, 47 | Default: false, 48 | }, 49 | "path": { 50 | Type: schema.TypeString, 51 | Computed: true, 52 | }, 53 | }, 54 | Create: createKubernetesResource, 55 | Read: readKubernetesResource, 56 | Update: updateKubernetesResource, 57 | Delete: deleteKubernetesResource, 58 | Exists: kubernetesResourceExists, 59 | }, 60 | }, 61 | } 62 | } 63 | 64 | func clusterSchema(clusterResource bool) map[string]*schema.Schema { 65 | clusterSchema := map[string]*schema.Schema{ 66 | "api_server": { 67 | Type: schema.TypeString, 68 | Required: clusterResource, 69 | Optional: !clusterResource, 70 | }, 71 | "ca_cert": { 72 | Type: schema.TypeString, 73 | Optional: true, 74 | Sensitive: true, 75 | }, 76 | "client_cert": { 77 | Type: schema.TypeString, 78 | Optional: true, 79 | Sensitive: true, 80 | }, 81 | "client_key": { 82 | Type: schema.TypeString, 83 | Optional: true, 84 | Sensitive: true, 85 | }, 86 | } 87 | 88 | if clusterResource { 89 | clusterSchema["cluster"] = &schema.Schema{ 90 | Type: schema.TypeString, 91 | Sensitive: true, 92 | Computed: true, 93 | } 94 | } 95 | 96 | return clusterSchema 97 | } 98 | 99 | func validateResourceEncoding(v interface{}, _ string) ([]string, []error) { 100 | if value := strings.ToLower(v.(string)); value != kubernetes_model.EncodingJson && value != kubernetes_model.EncodingYaml { 101 | return nil, []error{ 102 | fmt.Errorf("Invalid encoding: %v; possible values are \"%s\" and \"%s\"", v, kubernetes_model.EncodingJson, kubernetes_model.EncodingYaml), 103 | } 104 | } 105 | return nil, nil 106 | } 107 | 108 | func configureKubernetesProvider(clusterData *schema.ResourceData) (interface{}, error) { 109 | return kubernetes_cluster.New(clusterData), nil 110 | } 111 | -------------------------------------------------------------------------------- /kubernetes/resource_kubernetes_cluster.go: -------------------------------------------------------------------------------- 1 | package kubernetes 2 | 3 | import ( 4 | "github.com/hashicorp/go-uuid" 5 | "github.com/hashicorp/terraform/helper/schema" 6 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/client" 7 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/cluster" 8 | ) 9 | 10 | func createKubernetesCluster(clusterData *schema.ResourceData, _ interface{}) error { 11 | id, err := uuid.GenerateUUID() 12 | if err != nil { 13 | return err 14 | } 15 | 16 | cluster := kubernetes_cluster.New(clusterData) 17 | 18 | client, err := kubernetes_client.New(cluster) 19 | if err != nil { 20 | return err 21 | } 22 | 23 | if err = client.WaitForAPIServer(); err != nil { 24 | return err 25 | } 26 | 27 | if err := updateCluster(clusterData, cluster); err != nil { 28 | return err 29 | } 30 | 31 | clusterData.SetId(id) 32 | 33 | return nil 34 | } 35 | 36 | func readKubernetesCluster(_ *schema.ResourceData, _ interface{}) error { 37 | return nil 38 | } 39 | 40 | func updateKubernetesCluster(clusterData *schema.ResourceData, _ interface{}) error { 41 | return updateCluster(clusterData, kubernetes_cluster.New(clusterData)) 42 | } 43 | 44 | func deleteKubernetesCluster(clusterData *schema.ResourceData, _ interface{}) error { 45 | clusterData.SetId("") 46 | clusterData.Set("cluster", "") 47 | 48 | return nil 49 | } 50 | 51 | func updateCluster(clusterData *schema.ResourceData, cluster *kubernetes_cluster.Cluster) error { 52 | encodedCluster, err := cluster.Encode() 53 | if err != nil { 54 | return err 55 | } 56 | 57 | clusterData.Set("cluster", encodedCluster) 58 | 59 | return nil 60 | } 61 | -------------------------------------------------------------------------------- /kubernetes/resource_kubernetes_resource.go: -------------------------------------------------------------------------------- 1 | package kubernetes 2 | 3 | import ( 4 | "github.com/hashicorp/go-uuid" 5 | "github.com/hashicorp/terraform/helper/schema" 6 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/client" 7 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/cluster" 8 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes/model" 9 | ) 10 | 11 | func createKubernetesResource(resourceData *schema.ResourceData, meta interface{}) error { 12 | kubeClient, err := loadClient(resourceData, meta) 13 | if err != nil { 14 | return err 15 | } 16 | 17 | id, err := uuid.GenerateUUID() 18 | if err != nil { 19 | return err 20 | } 21 | 22 | kubeResource, err := kubernetes_model.ParseResource(resourceData) 23 | if err != nil { 24 | return err 25 | } 26 | 27 | if err := kubeClient.Create(kubeResource); err != nil { 28 | return err 29 | } 30 | 31 | resourceData.Set("path", kubeResource.Path()) 32 | resourceData.SetId(id) 33 | 34 | return nil 35 | } 36 | 37 | func readKubernetesResource(resourceData *schema.ResourceData, meta interface{}) error { 38 | exists, err := kubernetesResourceExists(resourceData, meta) 39 | if err != nil { 40 | return err 41 | } 42 | 43 | if !exists { 44 | resourceData.SetId("") 45 | } 46 | 47 | return nil 48 | } 49 | 50 | func updateKubernetesResource(resourceData *schema.ResourceData, meta interface{}) error { 51 | kubeClient, err := loadClient(resourceData, meta) 52 | if err != nil { 53 | return err 54 | } 55 | 56 | kubeResource, err := kubernetes_model.ParseResource(resourceData) 57 | if err != nil { 58 | return err 59 | } 60 | 61 | if path := resourceData.Get("path").(string); path == "" { 62 | if err := kubeClient.Create(kubeResource); err != nil { 63 | return err 64 | } 65 | 66 | resourceData.Set("path", kubeResource.Path()) 67 | } else if newPath := kubeResource.Path(); newPath != path { 68 | if err := kubeClient.Delete(kubernetes_model.ParsePath(path)); err != nil { 69 | return err 70 | } 71 | 72 | if err := kubeClient.Create(kubeResource); err != nil { 73 | return err 74 | } 75 | 76 | resourceData.Set("path", newPath) 77 | } else { 78 | return kubeClient.Update(kubeResource) 79 | } 80 | 81 | return nil 82 | } 83 | 84 | func deleteKubernetesResource(resourceData *schema.ResourceData, meta interface{}) error { 85 | kubeClient, err := loadClient(resourceData, meta) 86 | if err != nil { 87 | return err 88 | } 89 | 90 | if path := resourceData.Get("path").(string); path != "" { 91 | if err := kubeClient.Delete(kubernetes_model.ParsePath(path)); err != nil { 92 | return err 93 | } 94 | } 95 | 96 | resourceData.SetId("") 97 | 98 | return nil 99 | } 100 | 101 | func kubernetesResourceExists(resourceData *schema.ResourceData, meta interface{}) (bool, error) { 102 | kubeClient, err := loadClient(resourceData, meta) 103 | if err != nil { 104 | return false, err 105 | } 106 | 107 | if path := resourceData.Get("path").(string); path != "" { 108 | return kubeClient.Exists(kubernetes_model.ParsePath(path)) 109 | } 110 | 111 | return false, nil 112 | } 113 | 114 | func loadClient(resourceData *schema.ResourceData, meta interface{}) (*kubernetes_client.KubeClient, error) { 115 | cluster, err := kubernetes_cluster.Load(resourceData, meta) 116 | if err != nil { 117 | return nil, err 118 | } 119 | 120 | return kubernetes_client.New(cluster) 121 | } 122 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/hashicorp/terraform/plugin" 5 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes" 6 | //"log" 7 | //"net/http" 8 | //_ "net/http/pprof" 9 | ) 10 | 11 | func main() { 12 | //go func() { 13 | // log.Println(http.ListenAndServe("localhost:9999", nil)) 14 | //}() 15 | 16 | plugin.Serve(&plugin.ServeOpts{ 17 | ProviderFunc: kubernetes.Provider, 18 | }) 19 | } -------------------------------------------------------------------------------- /schema/schema.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/hashicorp/terraform/helper/schema" 5 | "github.com/maxmanuylov/terraform-provider-kubernetes/kubernetes" 6 | "github.com/maxmanuylov/utils/intellij-hcl/terraform/provider-schema-generator" 7 | ) 8 | 9 | func main() { 10 | provider_schema_generator.Generate(kubernetes.Provider().(*schema.Provider)) 11 | } 12 | -------------------------------------------------------------------------------- /terraform-provider-kubernetes.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /vendor/vendor.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "", 3 | "ignore": "test", 4 | "package": [ 5 | { 6 | "path": "appengine", 7 | "revision": "" 8 | }, 9 | { 10 | "path": "appengine_internal", 11 | "revision": "" 12 | }, 13 | { 14 | "path": "appengine_internal/base", 15 | "revision": "" 16 | }, 17 | { 18 | "checksumSHA1": "AH7jcN7pvaPDU6UjHdpT081DDGk=", 19 | "path": "cloud.google.com/go/compute/metadata", 20 | "revision": "9be7f826df5cb36bc19f57a919cffb1c1b6d9696", 21 | "revisionTime": "2017-08-04T20:09:44Z" 22 | }, 23 | { 24 | "checksumSHA1": "nnKBzCGFHnLydxMbi1vCzEOHyBY=", 25 | "path": "github.com/Azure/azure-sdk-for-go/arm/storage", 26 | "revision": "0b09de4174ca0cadcd3abb4aa31267c6f5ccebbb", 27 | "revisionTime": "2017-08-02T21:42:24Z" 28 | }, 29 | { 30 | "checksumSHA1": "d0xhF6pIGji1eV5aEEdlq3vliWo=", 31 | "path": "github.com/Azure/azure-sdk-for-go/storage", 32 | "revision": "0b09de4174ca0cadcd3abb4aa31267c6f5ccebbb", 33 | "revisionTime": "2017-08-02T21:42:24Z" 34 | }, 35 | { 36 | "checksumSHA1": "d/hUAUf5zYB0JmqmET5EfWYI2aU=", 37 | "path": "github.com/Azure/go-autorest/autorest", 38 | "revision": "6f4bed77c3e634d04c82be26863d9dddad62fa9e", 39 | "revisionTime": "2017-08-04T19:50:48Z" 40 | }, 41 | { 42 | "checksumSHA1": "KOETWLsF6QW+lrPVPsMNHDZP+xA=", 43 | "path": "github.com/Azure/go-autorest/autorest/adal", 44 | "revision": "6f4bed77c3e634d04c82be26863d9dddad62fa9e", 45 | "revisionTime": "2017-08-04T19:50:48Z" 46 | }, 47 | { 48 | "checksumSHA1": "2KdBFgT4qY+fMOkBTa5vA9V0AiM=", 49 | "path": "github.com/Azure/go-autorest/autorest/azure", 50 | "revision": "6f4bed77c3e634d04c82be26863d9dddad62fa9e", 51 | "revisionTime": "2017-08-04T19:50:48Z" 52 | }, 53 | { 54 | "checksumSHA1": "LSF/pNrjhIxl6jiS6bKooBFCOxI=", 55 | "path": "github.com/Azure/go-autorest/autorest/date", 56 | "revision": "6f4bed77c3e634d04c82be26863d9dddad62fa9e", 57 | "revisionTime": "2017-08-04T19:50:48Z" 58 | }, 59 | { 60 | "checksumSHA1": "oBixceM+55gdk47iff8DSEIh3po=", 61 | "path": "github.com/Azure/go-autorest/autorest/validation", 62 | "revision": "6f4bed77c3e634d04c82be26863d9dddad62fa9e", 63 | "revisionTime": "2017-08-04T19:50:48Z" 64 | }, 65 | { 66 | "checksumSHA1": "PYNaEEt9v8iAvGVUD4do0YIeR1A=", 67 | "path": "github.com/Azure/go-ntlmssp", 68 | "revision": "c92175d540060095c69ced311f76aea56c83ecdb", 69 | "revisionTime": "2017-08-03T03:49:30Z" 70 | }, 71 | { 72 | "checksumSHA1": "7HXb3cry6luicWeJM9Uxwzfo9Rs=", 73 | "path": "github.com/Unknwon/com", 74 | "revision": "0db4a625e949e956314d7d1adea9bf82384cc10c", 75 | "revisionTime": "2017-02-13T07:20:14Z" 76 | }, 77 | { 78 | "checksumSHA1": "7eAIWei337IlBYIfzA3HyOEV9WE=", 79 | "path": "github.com/apparentlymart/go-cidr/cidr", 80 | "revision": "2bd8b58cf4275aeb086ade613de226773e29e853", 81 | "revisionTime": "2017-06-16T19:18:03Z" 82 | }, 83 | { 84 | "checksumSHA1": "l0iFqayYAaEip6Olaq3/LCOa/Sg=", 85 | "path": "github.com/armon/circbuf", 86 | "revision": "bbbad097214e2918d8543d5201d12bfd7bca254d", 87 | "revisionTime": "2015-08-27T00:49:46Z" 88 | }, 89 | { 90 | "checksumSHA1": "GCTVJ1J/SGZstNZauuLAnTFOhGA=", 91 | "path": "github.com/armon/go-radix", 92 | "revision": "1fca145dffbcaa8fe914309b1ec0cfc67500fe61", 93 | "revisionTime": "2017-07-27T15:54:43Z" 94 | }, 95 | { 96 | "checksumSHA1": "HFGrR1N5ZOmbKlyqtz9Um/n9WJ0=", 97 | "path": "github.com/aws/aws-sdk-go/aws", 98 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 99 | "revisionTime": "2017-08-07T17:13:30Z" 100 | }, 101 | { 102 | "checksumSHA1": "Y9W+4GimK4Fuxq+vyIskVYFRnX4=", 103 | "path": "github.com/aws/aws-sdk-go/aws/awserr", 104 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 105 | "revisionTime": "2017-08-07T17:13:30Z" 106 | }, 107 | { 108 | "checksumSHA1": "yyYr41HZ1Aq0hWc3J5ijXwYEcac=", 109 | "path": "github.com/aws/aws-sdk-go/aws/awsutil", 110 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 111 | "revisionTime": "2017-08-07T17:13:30Z" 112 | }, 113 | { 114 | "checksumSHA1": "n98FANpNeRT5kf6pizdpI7nm6Sw=", 115 | "path": "github.com/aws/aws-sdk-go/aws/client", 116 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 117 | "revisionTime": "2017-08-07T17:13:30Z" 118 | }, 119 | { 120 | "checksumSHA1": "ieAJ+Cvp/PKv1LpUEnUXpc3OI6E=", 121 | "path": "github.com/aws/aws-sdk-go/aws/client/metadata", 122 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 123 | "revisionTime": "2017-08-07T17:13:30Z" 124 | }, 125 | { 126 | "checksumSHA1": "7/8j/q0TWtOgXyvEcv4B2Dhl00o=", 127 | "path": "github.com/aws/aws-sdk-go/aws/corehandlers", 128 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 129 | "revisionTime": "2017-08-07T17:13:30Z" 130 | }, 131 | { 132 | "checksumSHA1": "Y+cPwQL0dZMyqp3wI+KJWmA9KQ8=", 133 | "path": "github.com/aws/aws-sdk-go/aws/credentials", 134 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 135 | "revisionTime": "2017-08-07T17:13:30Z" 136 | }, 137 | { 138 | "checksumSHA1": "u3GOAJLmdvbuNUeUEcZSEAOeL/0=", 139 | "path": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", 140 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 141 | "revisionTime": "2017-08-07T17:13:30Z" 142 | }, 143 | { 144 | "checksumSHA1": "NUJUTWlc1sV8b7WjfiYc4JZbXl0=", 145 | "path": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds", 146 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 147 | "revisionTime": "2017-08-07T17:13:30Z" 148 | }, 149 | { 150 | "checksumSHA1": "JEYqmF83O5n5bHkupAzA6STm0no=", 151 | "path": "github.com/aws/aws-sdk-go/aws/credentials/stscreds", 152 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 153 | "revisionTime": "2017-08-07T17:13:30Z" 154 | }, 155 | { 156 | "checksumSHA1": "ZdtYh3ZHSgP/WEIaqwJHTEhpkbs=", 157 | "path": "github.com/aws/aws-sdk-go/aws/defaults", 158 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 159 | "revisionTime": "2017-08-07T17:13:30Z" 160 | }, 161 | { 162 | "checksumSHA1": "/EXbk/z2TWjWc1Hvb4QYs3Wmhb8=", 163 | "path": "github.com/aws/aws-sdk-go/aws/ec2metadata", 164 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 165 | "revisionTime": "2017-08-07T17:13:30Z" 166 | }, 167 | { 168 | "checksumSHA1": "W45tSKW4ZVgBk9H4lx5RbGi9OVg=", 169 | "path": "github.com/aws/aws-sdk-go/aws/endpoints", 170 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 171 | "revisionTime": "2017-08-07T17:13:30Z" 172 | }, 173 | { 174 | "checksumSHA1": "zhO4REZnumWpIaIlT+Wn9aqZCn0=", 175 | "path": "github.com/aws/aws-sdk-go/aws/request", 176 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 177 | "revisionTime": "2017-08-07T17:13:30Z" 178 | }, 179 | { 180 | "checksumSHA1": "SK5Mn4Ga9+equOQTYA1DTSb3LWY=", 181 | "path": "github.com/aws/aws-sdk-go/aws/session", 182 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 183 | "revisionTime": "2017-08-07T17:13:30Z" 184 | }, 185 | { 186 | "checksumSHA1": "1+ZxEwzc1Vz8X2l+kXkS2iATtas=", 187 | "path": "github.com/aws/aws-sdk-go/aws/signer/v4", 188 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 189 | "revisionTime": "2017-08-07T17:13:30Z" 190 | }, 191 | { 192 | "checksumSHA1": "04ypv4x12l4q0TksA1zEVsmgpvw=", 193 | "path": "github.com/aws/aws-sdk-go/internal/shareddefaults", 194 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 195 | "revisionTime": "2017-08-07T17:13:30Z" 196 | }, 197 | { 198 | "checksumSHA1": "wk7EyvDaHwb5qqoOP/4d3cV0708=", 199 | "path": "github.com/aws/aws-sdk-go/private/protocol", 200 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 201 | "revisionTime": "2017-08-07T17:13:30Z" 202 | }, 203 | { 204 | "checksumSHA1": "1QmQ3FqV37w0Zi44qv8pA1GeR0A=", 205 | "path": "github.com/aws/aws-sdk-go/private/protocol/ec2query", 206 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 207 | "revisionTime": "2017-08-07T17:13:30Z" 208 | }, 209 | { 210 | "checksumSHA1": "O6hcK24yI6w7FA+g4Pbr+eQ7pys=", 211 | "path": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil", 212 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 213 | "revisionTime": "2017-08-07T17:13:30Z" 214 | }, 215 | { 216 | "checksumSHA1": "R00RL5jJXRYq1iiK1+PGvMfvXyM=", 217 | "path": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc", 218 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 219 | "revisionTime": "2017-08-07T17:13:30Z" 220 | }, 221 | { 222 | "checksumSHA1": "ZqY5RWavBLWTo6j9xqdyBEaNFRk=", 223 | "path": "github.com/aws/aws-sdk-go/private/protocol/query", 224 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 225 | "revisionTime": "2017-08-07T17:13:30Z" 226 | }, 227 | { 228 | "checksumSHA1": "Drt1JfLMa0DQEZLWrnMlTWaIcC8=", 229 | "path": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", 230 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 231 | "revisionTime": "2017-08-07T17:13:30Z" 232 | }, 233 | { 234 | "checksumSHA1": "VCTh+dEaqqhog5ncy/WTt9+/gFM=", 235 | "path": "github.com/aws/aws-sdk-go/private/protocol/rest", 236 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 237 | "revisionTime": "2017-08-07T17:13:30Z" 238 | }, 239 | { 240 | "checksumSHA1": "Rpu8KBtHZgvhkwHxUfaky+qW+G4=", 241 | "path": "github.com/aws/aws-sdk-go/private/protocol/restjson", 242 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 243 | "revisionTime": "2017-08-07T17:13:30Z" 244 | }, 245 | { 246 | "checksumSHA1": "ODo+ko8D6unAxZuN1jGzMcN4QCc=", 247 | "path": "github.com/aws/aws-sdk-go/private/protocol/restxml", 248 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 249 | "revisionTime": "2017-08-07T17:13:30Z" 250 | }, 251 | { 252 | "checksumSHA1": "0qYPUga28aQVkxZgBR3Z86AbGUQ=", 253 | "path": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", 254 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 255 | "revisionTime": "2017-08-07T17:13:30Z" 256 | }, 257 | { 258 | "checksumSHA1": "F6mth+G7dXN1GI+nktaGo8Lx8aE=", 259 | "path": "github.com/aws/aws-sdk-go/private/signer/v2", 260 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 261 | "revisionTime": "2017-08-07T17:13:30Z" 262 | }, 263 | { 264 | "checksumSHA1": "BXuQo73qo4WLmc+TdE5pAwalLUQ=", 265 | "path": "github.com/aws/aws-sdk-go/service/acm", 266 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 267 | "revisionTime": "2017-08-07T17:13:30Z" 268 | }, 269 | { 270 | "checksumSHA1": "yKXkhhDv9rWmn8GofXPBoN6k730=", 271 | "path": "github.com/aws/aws-sdk-go/service/apigateway", 272 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 273 | "revisionTime": "2017-08-07T17:13:30Z" 274 | }, 275 | { 276 | "checksumSHA1": "gT6mD+yVXS+z0z1skK90jLGeMgA=", 277 | "path": "github.com/aws/aws-sdk-go/service/applicationautoscaling", 278 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 279 | "revisionTime": "2017-08-07T17:13:30Z" 280 | }, 281 | { 282 | "checksumSHA1": "F4H+hrCxf3AthBTeQedUEk5GrfU=", 283 | "path": "github.com/aws/aws-sdk-go/service/autoscaling", 284 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 285 | "revisionTime": "2017-08-07T17:13:30Z" 286 | }, 287 | { 288 | "checksumSHA1": "VNJcrPTHE+pWTOrgLwDgI/cFvL4=", 289 | "path": "github.com/aws/aws-sdk-go/service/cloudformation", 290 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 291 | "revisionTime": "2017-08-07T17:13:30Z" 292 | }, 293 | { 294 | "checksumSHA1": "8S9gwy79xKxoL5aipkmM8Dz/hII=", 295 | "path": "github.com/aws/aws-sdk-go/service/cloudfront", 296 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 297 | "revisionTime": "2017-08-07T17:13:30Z" 298 | }, 299 | { 300 | "checksumSHA1": "59kV70/8PuutX4eFkGfCCtdunIA=", 301 | "path": "github.com/aws/aws-sdk-go/service/cloudtrail", 302 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 303 | "revisionTime": "2017-08-07T17:13:30Z" 304 | }, 305 | { 306 | "checksumSHA1": "FuNvyvz3Cc5ijAwhU6J7EQRQHkY=", 307 | "path": "github.com/aws/aws-sdk-go/service/cloudwatch", 308 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 309 | "revisionTime": "2017-08-07T17:13:30Z" 310 | }, 311 | { 312 | "checksumSHA1": "puxztE1Umuw+w1CTBmo3hsRItGE=", 313 | "path": "github.com/aws/aws-sdk-go/service/cloudwatchevents", 314 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 315 | "revisionTime": "2017-08-07T17:13:30Z" 316 | }, 317 | { 318 | "checksumSHA1": "0w5/i4GBC7HxyvMXax/8oiTjLQE=", 319 | "path": "github.com/aws/aws-sdk-go/service/cloudwatchlogs", 320 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 321 | "revisionTime": "2017-08-07T17:13:30Z" 322 | }, 323 | { 324 | "checksumSHA1": "SPUa3IkKMPktYyQYEAQgdmFSqPk=", 325 | "path": "github.com/aws/aws-sdk-go/service/codebuild", 326 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 327 | "revisionTime": "2017-08-07T17:13:30Z" 328 | }, 329 | { 330 | "checksumSHA1": "XkyZPfxHxB3ohK+/qdF54nvMS0o=", 331 | "path": "github.com/aws/aws-sdk-go/service/codecommit", 332 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 333 | "revisionTime": "2017-08-07T17:13:30Z" 334 | }, 335 | { 336 | "checksumSHA1": "X4DJ9O+G0+DpRfzpzx8nRmrbHDE=", 337 | "path": "github.com/aws/aws-sdk-go/service/codedeploy", 338 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 339 | "revisionTime": "2017-08-07T17:13:30Z" 340 | }, 341 | { 342 | "checksumSHA1": "pL/7qVyn6qVry1uJ0Nw4/8tkGLM=", 343 | "path": "github.com/aws/aws-sdk-go/service/codepipeline", 344 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 345 | "revisionTime": "2017-08-07T17:13:30Z" 346 | }, 347 | { 348 | "checksumSHA1": "7bm1eOY2oKYSesmEOd1qXvTRH2s=", 349 | "path": "github.com/aws/aws-sdk-go/service/cognitoidentity", 350 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 351 | "revisionTime": "2017-08-07T17:13:30Z" 352 | }, 353 | { 354 | "checksumSHA1": "V3QpE1495nFtpAOw24WY6AsVT1w=", 355 | "path": "github.com/aws/aws-sdk-go/service/configservice", 356 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 357 | "revisionTime": "2017-08-07T17:13:30Z" 358 | }, 359 | { 360 | "checksumSHA1": "8UoYKgC9u/gjExZe4a6ZZf4dDl8=", 361 | "path": "github.com/aws/aws-sdk-go/service/databasemigrationservice", 362 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 363 | "revisionTime": "2017-08-07T17:13:30Z" 364 | }, 365 | { 366 | "checksumSHA1": "HfaX42uqVu9hosilU6JwEQhgI/o=", 367 | "path": "github.com/aws/aws-sdk-go/service/devicefarm", 368 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 369 | "revisionTime": "2017-08-07T17:13:30Z" 370 | }, 371 | { 372 | "checksumSHA1": "1O8BtYGfkXglIqgl/uxunrq3Djs=", 373 | "path": "github.com/aws/aws-sdk-go/service/directoryservice", 374 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 375 | "revisionTime": "2017-08-07T17:13:30Z" 376 | }, 377 | { 378 | "checksumSHA1": "E41+3ODVEuNmyLMyhLT3yu6/AJ4=", 379 | "path": "github.com/aws/aws-sdk-go/service/dynamodb", 380 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 381 | "revisionTime": "2017-08-07T17:13:30Z" 382 | }, 383 | { 384 | "checksumSHA1": "VzUS7j1f2K3hh8yCTrKyVgASKi4=", 385 | "path": "github.com/aws/aws-sdk-go/service/ec2", 386 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 387 | "revisionTime": "2017-08-07T17:13:30Z" 388 | }, 389 | { 390 | "checksumSHA1": "YNq7YhasHn9ceelWX2aG0Cg0Ga0=", 391 | "path": "github.com/aws/aws-sdk-go/service/ecr", 392 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 393 | "revisionTime": "2017-08-07T17:13:30Z" 394 | }, 395 | { 396 | "checksumSHA1": "1qXTlCrrFAev6QTBrWdSO1FGrQM=", 397 | "path": "github.com/aws/aws-sdk-go/service/ecs", 398 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 399 | "revisionTime": "2017-08-07T17:13:30Z" 400 | }, 401 | { 402 | "checksumSHA1": "ddrbliij6SgxIrCQoHqmRTVtT4M=", 403 | "path": "github.com/aws/aws-sdk-go/service/efs", 404 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 405 | "revisionTime": "2017-08-07T17:13:30Z" 406 | }, 407 | { 408 | "checksumSHA1": "FJajM0d7XtorMUTMCdMW5QdQSnU=", 409 | "path": "github.com/aws/aws-sdk-go/service/elasticache", 410 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 411 | "revisionTime": "2017-08-07T17:13:30Z" 412 | }, 413 | { 414 | "checksumSHA1": "9yFc0Nt7c1067EBS9X1T1snqapY=", 415 | "path": "github.com/aws/aws-sdk-go/service/elasticbeanstalk", 416 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 417 | "revisionTime": "2017-08-07T17:13:30Z" 418 | }, 419 | { 420 | "checksumSHA1": "wca8VaMOBpTBJUjVlfceB+RI/aw=", 421 | "path": "github.com/aws/aws-sdk-go/service/elasticsearchservice", 422 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 423 | "revisionTime": "2017-08-07T17:13:30Z" 424 | }, 425 | { 426 | "checksumSHA1": "bzUOQIGF9rhYJTFAxyfOkZrekmQ=", 427 | "path": "github.com/aws/aws-sdk-go/service/elastictranscoder", 428 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 429 | "revisionTime": "2017-08-07T17:13:30Z" 430 | }, 431 | { 432 | "checksumSHA1": "+3C0i6/x6g/I0E3G59rbQlnw2Pk=", 433 | "path": "github.com/aws/aws-sdk-go/service/elb", 434 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 435 | "revisionTime": "2017-08-07T17:13:30Z" 436 | }, 437 | { 438 | "checksumSHA1": "md17/nOuhKsp+QE4jjBGEdGo2TU=", 439 | "path": "github.com/aws/aws-sdk-go/service/elbv2", 440 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 441 | "revisionTime": "2017-08-07T17:13:30Z" 442 | }, 443 | { 444 | "checksumSHA1": "a6WmIL0y1RIQcaf6w+CvNgEmGXc=", 445 | "path": "github.com/aws/aws-sdk-go/service/emr", 446 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 447 | "revisionTime": "2017-08-07T17:13:30Z" 448 | }, 449 | { 450 | "checksumSHA1": "wDZwsQurOYqUHNYoFF8+lF+01h8=", 451 | "path": "github.com/aws/aws-sdk-go/service/firehose", 452 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 453 | "revisionTime": "2017-08-07T17:13:30Z" 454 | }, 455 | { 456 | "checksumSHA1": "jSg4VT/uP/pL4s/cy8Kw6btU/+E=", 457 | "path": "github.com/aws/aws-sdk-go/service/glacier", 458 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 459 | "revisionTime": "2017-08-07T17:13:30Z" 460 | }, 461 | { 462 | "checksumSHA1": "jAbnrJFlGJifWkcr8RpG2G2NFWY=", 463 | "path": "github.com/aws/aws-sdk-go/service/iam", 464 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 465 | "revisionTime": "2017-08-07T17:13:30Z" 466 | }, 467 | { 468 | "checksumSHA1": "v0OUl6sTwF7EOmXyzk9ppc5ljLw=", 469 | "path": "github.com/aws/aws-sdk-go/service/inspector", 470 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 471 | "revisionTime": "2017-08-07T17:13:30Z" 472 | }, 473 | { 474 | "checksumSHA1": "D92k3ymegRbjpgnuAy9rWjgV7vs=", 475 | "path": "github.com/aws/aws-sdk-go/service/iot", 476 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 477 | "revisionTime": "2017-08-07T17:13:30Z" 478 | }, 479 | { 480 | "checksumSHA1": "ZSCDopQE5mscZ+NIwmmnUGILNfU=", 481 | "path": "github.com/aws/aws-sdk-go/service/kinesis", 482 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 483 | "revisionTime": "2017-08-07T17:13:30Z" 484 | }, 485 | { 486 | "checksumSHA1": "wwFYsrpInh4Tow/vTI7bD+r5gBU=", 487 | "path": "github.com/aws/aws-sdk-go/service/kms", 488 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 489 | "revisionTime": "2017-08-07T17:13:30Z" 490 | }, 491 | { 492 | "checksumSHA1": "I9kIOQqqkoWjqYSrYixJpSDWqM8=", 493 | "path": "github.com/aws/aws-sdk-go/service/lambda", 494 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 495 | "revisionTime": "2017-08-07T17:13:30Z" 496 | }, 497 | { 498 | "checksumSHA1": "eHMwitdHY0uOEA5kkmJ1nGHe0z0=", 499 | "path": "github.com/aws/aws-sdk-go/service/lightsail", 500 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 501 | "revisionTime": "2017-08-07T17:13:30Z" 502 | }, 503 | { 504 | "checksumSHA1": "vvGFczUoKSfDrMPnczQnkFyuT6s=", 505 | "path": "github.com/aws/aws-sdk-go/service/opsworks", 506 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 507 | "revisionTime": "2017-08-07T17:13:30Z" 508 | }, 509 | { 510 | "checksumSHA1": "EbrH6+AFa5Ju3ADym2Q1zGrTqdo=", 511 | "path": "github.com/aws/aws-sdk-go/service/rds", 512 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 513 | "revisionTime": "2017-08-07T17:13:30Z" 514 | }, 515 | { 516 | "checksumSHA1": "tW2tuORhDYkfZIdQbDgHkeMvIeI=", 517 | "path": "github.com/aws/aws-sdk-go/service/redshift", 518 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 519 | "revisionTime": "2017-08-07T17:13:30Z" 520 | }, 521 | { 522 | "checksumSHA1": "F9V2XrVGSjzP07ZVDsO8HL5IvAo=", 523 | "path": "github.com/aws/aws-sdk-go/service/route53", 524 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 525 | "revisionTime": "2017-08-07T17:13:30Z" 526 | }, 527 | { 528 | "checksumSHA1": "RnXxyRSnEtv00oTjNpiVxocI1qA=", 529 | "path": "github.com/aws/aws-sdk-go/service/s3", 530 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 531 | "revisionTime": "2017-08-07T17:13:30Z" 532 | }, 533 | { 534 | "checksumSHA1": "2ndfS3xwCPkannxwrJRzZtBzjQk=", 535 | "path": "github.com/aws/aws-sdk-go/service/ses", 536 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 537 | "revisionTime": "2017-08-07T17:13:30Z" 538 | }, 539 | { 540 | "checksumSHA1": "u8xk+JtK/HwIKB2ume3or9Sstp8=", 541 | "path": "github.com/aws/aws-sdk-go/service/sfn", 542 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 543 | "revisionTime": "2017-08-07T17:13:30Z" 544 | }, 545 | { 546 | "checksumSHA1": "hOcVb1zJiDUmafXSJQhkEascWwA=", 547 | "path": "github.com/aws/aws-sdk-go/service/simpledb", 548 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 549 | "revisionTime": "2017-08-07T17:13:30Z" 550 | }, 551 | { 552 | "checksumSHA1": "1jN0ZDW5c9QEGSQIQ+KrbTACvm8=", 553 | "path": "github.com/aws/aws-sdk-go/service/sns", 554 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 555 | "revisionTime": "2017-08-07T17:13:30Z" 556 | }, 557 | { 558 | "checksumSHA1": "SXH7QxrUFaor3KaNX0xPCV3eOhU=", 559 | "path": "github.com/aws/aws-sdk-go/service/sqs", 560 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 561 | "revisionTime": "2017-08-07T17:13:30Z" 562 | }, 563 | { 564 | "checksumSHA1": "zESyJ6Jmt2Okq2eVuSV31xpJppc=", 565 | "path": "github.com/aws/aws-sdk-go/service/ssm", 566 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 567 | "revisionTime": "2017-08-07T17:13:30Z" 568 | }, 569 | { 570 | "checksumSHA1": "MerduaV3PxtZAWvOGpgoBIglo38=", 571 | "path": "github.com/aws/aws-sdk-go/service/sts", 572 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 573 | "revisionTime": "2017-08-07T17:13:30Z" 574 | }, 575 | { 576 | "checksumSHA1": "vFinPalK+r0kaIbPMaHhFbTi2QQ=", 577 | "path": "github.com/aws/aws-sdk-go/service/waf", 578 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 579 | "revisionTime": "2017-08-07T17:13:30Z" 580 | }, 581 | { 582 | "checksumSHA1": "qe7HsjfCked/MaRvH2c0uJndWdM=", 583 | "path": "github.com/aws/aws-sdk-go/service/wafregional", 584 | "revision": "3ca2244f3d0dd9a0af59a43172243b0091c6cf48", 585 | "revisionTime": "2017-08-07T17:13:30Z" 586 | }, 587 | { 588 | "checksumSHA1": "nqw2Qn5xUklssHTubS5HDvEL9L4=", 589 | "path": "github.com/bgentry/go-netrc/netrc", 590 | "revision": "9fd32a8b3d3d3f9d43c341bfe098430e07609480", 591 | "revisionTime": "2014-04-22T17:41:19Z" 592 | }, 593 | { 594 | "checksumSHA1": "oTmBS67uxM6OXB/+OJUAG9LK4jw=", 595 | "path": "github.com/bgentry/speakeasy", 596 | "revision": "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd", 597 | "revisionTime": "2017-04-17T20:07:03Z" 598 | }, 599 | { 600 | "checksumSHA1": "OT4XN9z5k69e2RsMSpwW74B+yk4=", 601 | "path": "github.com/blang/semver", 602 | "revision": "2ee87856327ba09384cabd113bc6b5d174e9ec0f", 603 | "revisionTime": "2017-07-27T06:48:18Z" 604 | }, 605 | { 606 | "checksumSHA1": "aTYPm16eYDQhbVLgreCGwvV2klw=", 607 | "path": "github.com/chzyer/readline", 608 | "revision": "41eea22f717c616615e1e59aa06cf831f9901f35", 609 | "revisionTime": "2017-03-13T23:49:21Z" 610 | }, 611 | { 612 | "checksumSHA1": "1+T3s64i3hz9NXbXz4Mszg2Yl6I=", 613 | "path": "github.com/coreos/etcd/client", 614 | "revision": "a9b9ef5640a2d0df0e3b9a23360ecd85eac22604", 615 | "revisionTime": "2017-08-07T16:21:50Z" 616 | }, 617 | { 618 | "checksumSHA1": "mKIXx1kDwmVmdIpZ3pJtRBuUKso=", 619 | "path": "github.com/coreos/etcd/pkg/pathutil", 620 | "revision": "a9b9ef5640a2d0df0e3b9a23360ecd85eac22604", 621 | "revisionTime": "2017-08-07T16:21:50Z" 622 | }, 623 | { 624 | "checksumSHA1": "in4X4M2FFl6+eAXgxdxxSOZi1Vw=", 625 | "path": "github.com/coreos/etcd/pkg/srv", 626 | "revision": "a9b9ef5640a2d0df0e3b9a23360ecd85eac22604", 627 | "revisionTime": "2017-08-07T16:21:50Z" 628 | }, 629 | { 630 | "checksumSHA1": "gx1gJIMU6T0UNQ0bPZ/drQ8cpCI=", 631 | "path": "github.com/coreos/etcd/pkg/types", 632 | "revision": "a9b9ef5640a2d0df0e3b9a23360ecd85eac22604", 633 | "revisionTime": "2017-08-07T16:21:50Z" 634 | }, 635 | { 636 | "checksumSHA1": "sp2FkEyaIGiQFOEZCTDkBZgyHOs=", 637 | "path": "github.com/coreos/etcd/version", 638 | "revision": "a9b9ef5640a2d0df0e3b9a23360ecd85eac22604", 639 | "revisionTime": "2017-08-07T16:21:50Z" 640 | }, 641 | { 642 | "checksumSHA1": "97BsbXOiZ8+Kr+LIuZkQFtSj7H4=", 643 | "path": "github.com/coreos/go-semver/semver", 644 | "revision": "1817cd4bea52af76542157eeabd74b057d1a199e", 645 | "revisionTime": "2017-06-13T09:22:38Z" 646 | }, 647 | { 648 | "checksumSHA1": "mrz/kicZiUaHxkyfvC/DyQcr8Do=", 649 | "path": "github.com/davecgh/go-spew/spew", 650 | "revision": "adab96458c51a58dc1783b3335dcce5461522e75", 651 | "revisionTime": "2017-07-11T18:34:51Z" 652 | }, 653 | { 654 | "checksumSHA1": "GXOurDGgsLmJs0wounpdWZZRSGw=", 655 | "path": "github.com/dgrijalva/jwt-go", 656 | "revision": "a539ee1a749a2b895533f979515ac7e6e0f5b650", 657 | "revisionTime": "2017-06-08T00:51:49Z" 658 | }, 659 | { 660 | "checksumSHA1": "GCskdwYAPW2S34918Z5CgNMJ2Wc=", 661 | "path": "github.com/dylanmei/iso8601", 662 | "revision": "2075bf119b58e5576c6ed9f867b8f3d17f2e54d4", 663 | "revisionTime": "2015-01-25T03:41:22Z" 664 | }, 665 | { 666 | "checksumSHA1": "by8KnjbSvP58haObPorGWR2CJfk=", 667 | "path": "github.com/dylanmei/winrmtest", 668 | "revision": "025617847eb2cf9bd1d851bc3b22ed28e6245ce5", 669 | "revisionTime": "2015-12-26T19:50:28Z" 670 | }, 671 | { 672 | "checksumSHA1": "Ecn0UexWoWRG6Di0wdWvIfms/jc=", 673 | "path": "github.com/go-ini/ini", 674 | "revision": "3d73f4b845efdf9989fffd4b4e562727744a34ba", 675 | "revisionTime": "2017-06-27T23:12:24Z" 676 | }, 677 | { 678 | "checksumSHA1": "yqF125xVSkmfLpIVGrLlfE05IUk=", 679 | "path": "github.com/golang/protobuf/proto", 680 | "revision": "1909bc2f63dc92bb931deace8b8312c4db72d12f", 681 | "revisionTime": "2017-08-08T02:16:21Z" 682 | }, 683 | { 684 | "checksumSHA1": "p/8vSviYF91gFflhrt5vkyksroo=", 685 | "path": "github.com/golang/snappy", 686 | "revision": "553a641470496b2327abcac10b36396bd98e45c9", 687 | "revisionTime": "2017-02-15T23:32:05Z" 688 | }, 689 | { 690 | "checksumSHA1": "Kr1WtXpkMU6JFSctTZq3hHwzKnk=", 691 | "path": "github.com/gophercloud/gophercloud", 692 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 693 | "revisionTime": "2017-08-07T03:32:09Z" 694 | }, 695 | { 696 | "checksumSHA1": "b7g9TcU1OmW7e2UySYeOAmcfHpY=", 697 | "path": "github.com/gophercloud/gophercloud/internal", 698 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 699 | "revisionTime": "2017-08-07T03:32:09Z" 700 | }, 701 | { 702 | "checksumSHA1": "24DO5BEQdFKNl1rfWgI2b4+ry5U=", 703 | "path": "github.com/gophercloud/gophercloud/openstack", 704 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 705 | "revisionTime": "2017-08-07T03:32:09Z" 706 | }, 707 | { 708 | "checksumSHA1": "zj+auDFQsKegnWw0swnh3VVKj3s=", 709 | "path": "github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions", 710 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 711 | "revisionTime": "2017-08-07T03:32:09Z" 712 | }, 713 | { 714 | "checksumSHA1": "lfD3gq0G0BLLrwS3/7IE2SabPXI=", 715 | "path": "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes", 716 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 717 | "revisionTime": "2017-08-07T03:32:09Z" 718 | }, 719 | { 720 | "checksumSHA1": "B4IXSmq364HcBruvvV0QjDFxZgc=", 721 | "path": "github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes", 722 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 723 | "revisionTime": "2017-08-07T03:32:09Z" 724 | }, 725 | { 726 | "checksumSHA1": "y49Ur726Juznj85+23ZgqMvehgg=", 727 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones", 728 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 729 | "revisionTime": "2017-08-07T03:32:09Z" 730 | }, 731 | { 732 | "checksumSHA1": "w2wHF5eEBE89ZYlkS9GAJsSIq9U=", 733 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume", 734 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 735 | "revisionTime": "2017-08-07T03:32:09Z" 736 | }, 737 | { 738 | "checksumSHA1": "e7AW3YDVYJPKUjpqsB4AL9RRlTw=", 739 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips", 740 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 741 | "revisionTime": "2017-08-07T03:32:09Z" 742 | }, 743 | { 744 | "checksumSHA1": "bx6QnHtpgB6nKmN4QRVKa5PszqY=", 745 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs", 746 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 747 | "revisionTime": "2017-08-07T03:32:09Z" 748 | }, 749 | { 750 | "checksumSHA1": "2OCKRUFv9XNtRoMWxP6R6nTLlIA=", 751 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/schedulerhints", 752 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 753 | "revisionTime": "2017-08-07T03:32:09Z" 754 | }, 755 | { 756 | "checksumSHA1": "jNrUTQf+9dYfaD7YqvKwC+kGvyY=", 757 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups", 758 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 759 | "revisionTime": "2017-08-07T03:32:09Z" 760 | }, 761 | { 762 | "checksumSHA1": "ci4gzd7Uy9JC4NcQ2ms19pjtW6s=", 763 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/servergroups", 764 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 765 | "revisionTime": "2017-08-07T03:32:09Z" 766 | }, 767 | { 768 | "checksumSHA1": "qBpGbX7LQMPATdO8XyQmU7IXDiI=", 769 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/startstop", 770 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 771 | "revisionTime": "2017-08-07T03:32:09Z" 772 | }, 773 | { 774 | "checksumSHA1": "5JuziAp9BSRA/z+8pTjVLTWeTw4=", 775 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tenantnetworks", 776 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 777 | "revisionTime": "2017-08-07T03:32:09Z" 778 | }, 779 | { 780 | "checksumSHA1": "2VNgU0F9PDax5VKClvMLmbzuksw=", 781 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach", 782 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 783 | "revisionTime": "2017-08-07T03:32:09Z" 784 | }, 785 | { 786 | "checksumSHA1": "vTyXSR+Znw7/o/70UBOWG0F09r8=", 787 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/flavors", 788 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 789 | "revisionTime": "2017-08-07T03:32:09Z" 790 | }, 791 | { 792 | "checksumSHA1": "Rnzx2YgOD41k8KoPA08tR992PxQ=", 793 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/images", 794 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 795 | "revisionTime": "2017-08-07T03:32:09Z" 796 | }, 797 | { 798 | "checksumSHA1": "CJWHn6ljZbuCIB/A5GLrOfbiEVE=", 799 | "path": "github.com/gophercloud/gophercloud/openstack/compute/v2/servers", 800 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 801 | "revisionTime": "2017-08-07T03:32:09Z" 802 | }, 803 | { 804 | "checksumSHA1": "CmUBDSj7l85N82a7el3sY1QZsJg=", 805 | "path": "github.com/gophercloud/gophercloud/openstack/dns/v2/recordsets", 806 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 807 | "revisionTime": "2017-08-07T03:32:09Z" 808 | }, 809 | { 810 | "checksumSHA1": "otGdEUIFcxFSZ2ieGzn9SXDil8Q=", 811 | "path": "github.com/gophercloud/gophercloud/openstack/dns/v2/zones", 812 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 813 | "revisionTime": "2017-08-07T03:32:09Z" 814 | }, 815 | { 816 | "checksumSHA1": "S8bHmOP+NjtlYioJC89zIBVvhYc=", 817 | "path": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants", 818 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 819 | "revisionTime": "2017-08-07T03:32:09Z" 820 | }, 821 | { 822 | "checksumSHA1": "AvUU5En9YpG25iLlcAPDgcQODjI=", 823 | "path": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens", 824 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 825 | "revisionTime": "2017-08-07T03:32:09Z" 826 | }, 827 | { 828 | "checksumSHA1": "rqE0NwmQ9qhXADXxg3DcuZ4A3wk=", 829 | "path": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", 830 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 831 | "revisionTime": "2017-08-07T03:32:09Z" 832 | }, 833 | { 834 | "checksumSHA1": "5+wNKnxGvSGV8lHS+7km0ZiNEts=", 835 | "path": "github.com/gophercloud/gophercloud/openstack/imageservice/v2/imagedata", 836 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 837 | "revisionTime": "2017-08-07T03:32:09Z" 838 | }, 839 | { 840 | "checksumSHA1": "p2ivHupXGBmyHkusnob2NsbsCQk=", 841 | "path": "github.com/gophercloud/gophercloud/openstack/imageservice/v2/images", 842 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 843 | "revisionTime": "2017-08-07T03:32:09Z" 844 | }, 845 | { 846 | "checksumSHA1": "YqqqrMdOCKY2xwFkwxskkx8XtTQ=", 847 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/firewalls", 848 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 849 | "revisionTime": "2017-08-07T03:32:09Z" 850 | }, 851 | { 852 | "checksumSHA1": "14ZhP0wE/WCL/6oujcML755AaH4=", 853 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/policies", 854 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 855 | "revisionTime": "2017-08-07T03:32:09Z" 856 | }, 857 | { 858 | "checksumSHA1": "nHGhVRP69paJsebTRp4Q1cfQtag=", 859 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/routerinsertion", 860 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 861 | "revisionTime": "2017-08-07T03:32:09Z" 862 | }, 863 | { 864 | "checksumSHA1": "sYET5A7WTyJ7dpuxR/VXYoReldw=", 865 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/rules", 866 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 867 | "revisionTime": "2017-08-07T03:32:09Z" 868 | }, 869 | { 870 | "checksumSHA1": "uCWcJXDBstBRPAcnY2Ri+xU+9mY=", 871 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips", 872 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 873 | "revisionTime": "2017-08-07T03:32:09Z" 874 | }, 875 | { 876 | "checksumSHA1": "Mjt7GwFygyqPxygY8xZZnUasHmk=", 877 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers", 878 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 879 | "revisionTime": "2017-08-07T03:32:09Z" 880 | }, 881 | { 882 | "checksumSHA1": "mCTz2rnyVfhjJ+AD/WihCNcYWiY=", 883 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members", 884 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 885 | "revisionTime": "2017-08-07T03:32:09Z" 886 | }, 887 | { 888 | "checksumSHA1": "B2mtHvADREtFLam72wyijyQh/Ds=", 889 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors", 890 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 891 | "revisionTime": "2017-08-07T03:32:09Z" 892 | }, 893 | { 894 | "checksumSHA1": "pTr22CKKJ26yvhgd0SRxFF4jkEs=", 895 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools", 896 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 897 | "revisionTime": "2017-08-07T03:32:09Z" 898 | }, 899 | { 900 | "checksumSHA1": "E7/Z7g5O9o+ge+8YklheTpKgWNw=", 901 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/vips", 902 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 903 | "revisionTime": "2017-08-07T03:32:09Z" 904 | }, 905 | { 906 | "checksumSHA1": "mhpwj5tPv7Uw5aUfC55fhLPBcKo=", 907 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners", 908 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 909 | "revisionTime": "2017-08-07T03:32:09Z" 910 | }, 911 | { 912 | "checksumSHA1": "5efJz6UH7JCFeav5ZCCzicXCFTU=", 913 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers", 914 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 915 | "revisionTime": "2017-08-07T03:32:09Z" 916 | }, 917 | { 918 | "checksumSHA1": "TVFgBTz7B6bb1R4TWdgAkbE1/fk=", 919 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors", 920 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 921 | "revisionTime": "2017-08-07T03:32:09Z" 922 | }, 923 | { 924 | "checksumSHA1": "xirjw9vJIN6rmkT3T56bfPfOLUM=", 925 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools", 926 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 927 | "revisionTime": "2017-08-07T03:32:09Z" 928 | }, 929 | { 930 | "checksumSHA1": "hrR1rAmShCHCANo6d2hi9duwSMA=", 931 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/provider", 932 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 933 | "revisionTime": "2017-08-07T03:32:09Z" 934 | }, 935 | { 936 | "checksumSHA1": "qabBGU1tfT99h1YXyxO9nGxMghE=", 937 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups", 938 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 939 | "revisionTime": "2017-08-07T03:32:09Z" 940 | }, 941 | { 942 | "checksumSHA1": "E/5q7DTCoOD15K1KGFXSwFCGDE4=", 943 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules", 944 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 945 | "revisionTime": "2017-08-07T03:32:09Z" 946 | }, 947 | { 948 | "checksumSHA1": "CIVK1pz+Vwq1Te4XYV0sib5Mm+I=", 949 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/networks", 950 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 951 | "revisionTime": "2017-08-07T03:32:09Z" 952 | }, 953 | { 954 | "checksumSHA1": "Lx257Qaf6y2weNwHTx6lm3OY7a8=", 955 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/ports", 956 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 957 | "revisionTime": "2017-08-07T03:32:09Z" 958 | }, 959 | { 960 | "checksumSHA1": "mNRf4F3OjUIivhWTPZD/FjJNuCk=", 961 | "path": "github.com/gophercloud/gophercloud/openstack/networking/v2/subnets", 962 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 963 | "revisionTime": "2017-08-07T03:32:09Z" 964 | }, 965 | { 966 | "checksumSHA1": "LtdQKIKKRKe6FOGdBvrBz/bg1Gc=", 967 | "path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/accounts", 968 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 969 | "revisionTime": "2017-08-07T03:32:09Z" 970 | }, 971 | { 972 | "checksumSHA1": "1lwXcRrM5A7iCfekbn3bpfNLe3g=", 973 | "path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/containers", 974 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 975 | "revisionTime": "2017-08-07T03:32:09Z" 976 | }, 977 | { 978 | "checksumSHA1": "dotTh+ZsNiyv8e9Z4e0chPEZDKE=", 979 | "path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/objects", 980 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 981 | "revisionTime": "2017-08-07T03:32:09Z" 982 | }, 983 | { 984 | "checksumSHA1": "roxPPVwS2CjJhf0CApHNQxAX7EA=", 985 | "path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/swauth", 986 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 987 | "revisionTime": "2017-08-07T03:32:09Z" 988 | }, 989 | { 990 | "checksumSHA1": "TDOZnaS0TO0NirpxV1QwPerAQTY=", 991 | "path": "github.com/gophercloud/gophercloud/openstack/utils", 992 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 993 | "revisionTime": "2017-08-07T03:32:09Z" 994 | }, 995 | { 996 | "checksumSHA1": "YspETi3tOMvawKIT91HyuqaA5lM=", 997 | "path": "github.com/gophercloud/gophercloud/pagination", 998 | "revision": "c0406a133c4a74a838baf0ddff3c2fab21155fba", 999 | "revisionTime": "2017-08-07T03:32:09Z" 1000 | }, 1001 | { 1002 | "checksumSHA1": "FUiF2WLrih0JdHsUTMMDz3DRokw=", 1003 | "path": "github.com/hashicorp/atlas-go/archive", 1004 | "revision": "1ea2527d6a49b4c9f18753aa21627aae6a7c26a1", 1005 | "revisionTime": "2017-06-19T22:02:35Z" 1006 | }, 1007 | { 1008 | "checksumSHA1": "80gaa7+4fFr8IY/jdTYq65xVnUA=", 1009 | "path": "github.com/hashicorp/atlas-go/v1", 1010 | "revision": "1ea2527d6a49b4c9f18753aa21627aae6a7c26a1", 1011 | "revisionTime": "2017-06-19T22:02:35Z" 1012 | }, 1013 | { 1014 | "checksumSHA1": "Uthu/iJv5FUKyraXPk2IXSVb0Ts=", 1015 | "path": "github.com/hashicorp/consul/api", 1016 | "revision": "eb8b2f5778f5c23f9e069679e0815201269df3af", 1017 | "revisionTime": "2017-08-07T23:37:56Z" 1018 | }, 1019 | { 1020 | "checksumSHA1": "cdOCt0Yb+hdErz8NAQqayxPmRsY=", 1021 | "path": "github.com/hashicorp/errwrap", 1022 | "revision": "7554cd9344cec97297fa6649b055a8c98c2a1e55", 1023 | "revisionTime": "2014-10-28T05:47:10Z" 1024 | }, 1025 | { 1026 | "checksumSHA1": "vnuMNXv3FJSg/I8ig04OTEHjk1c=", 1027 | "path": "github.com/hashicorp/go-checkpoint", 1028 | "revision": "a8d0786e7fa88adb6b3bcaa341a99af7f9740671", 1029 | "revisionTime": "2017-06-24T02:34:07Z" 1030 | }, 1031 | { 1032 | "checksumSHA1": "b8F628srIitj5p7Y130xc9k0QWs=", 1033 | "path": "github.com/hashicorp/go-cleanhttp", 1034 | "revision": "3573b8b52aa7b37b9358d966a898feb387f62437", 1035 | "revisionTime": "2017-02-11T01:34:15Z" 1036 | }, 1037 | { 1038 | "checksumSHA1": "Glhu9BTy826XCLfMw7rexQ5mKeY=", 1039 | "path": "github.com/hashicorp/go-getter", 1040 | "revision": "6aae8e4e2dee8131187c6a54b52664796e5a02b0", 1041 | "revisionTime": "2017-07-13T01:23:01Z" 1042 | }, 1043 | { 1044 | "checksumSHA1": "9J+kDr29yDrwsdu2ULzewmqGjpA=", 1045 | "path": "github.com/hashicorp/go-getter/helper/url", 1046 | "revision": "6aae8e4e2dee8131187c6a54b52664796e5a02b0", 1047 | "revisionTime": "2017-07-13T01:23:01Z" 1048 | }, 1049 | { 1050 | "checksumSHA1": "g7uHECbzuaWwdxvwoyxBwgeERPk=", 1051 | "path": "github.com/hashicorp/go-multierror", 1052 | "revision": "83588e72410abfbe4df460eeb6f30841ae47d4c4", 1053 | "revisionTime": "2017-06-22T06:09:55Z" 1054 | }, 1055 | { 1056 | "checksumSHA1": "b0nQutPMJHeUmz4SjpreotAo6Yk=", 1057 | "path": "github.com/hashicorp/go-plugin", 1058 | "revision": "f72692aebca2008343a9deb06ddb4b17f7051c15", 1059 | "revisionTime": "2017-02-17T16:27:05Z" 1060 | }, 1061 | { 1062 | "checksumSHA1": "ErJHGU6AVPZM9yoY/xV11TwSjQs=", 1063 | "path": "github.com/hashicorp/go-retryablehttp", 1064 | "revision": "2d5f5dbd904dbad432492c3ca2c12c72c9e3045a", 1065 | "revisionTime": "2017-04-21T23:29:22Z" 1066 | }, 1067 | { 1068 | "checksumSHA1": "A1PcINvF3UiwHRKn8UcgARgvGRs=", 1069 | "path": "github.com/hashicorp/go-rootcerts", 1070 | "revision": "6bb64b370b90e7ef1fa532be9e591a81c3493e00", 1071 | "revisionTime": "2016-05-03T14:34:40Z" 1072 | }, 1073 | { 1074 | "checksumSHA1": "mAkPa/RLuIwN53GbwIEMATexams=", 1075 | "path": "github.com/hashicorp/go-uuid", 1076 | "revision": "64130c7a86d732268a38cb04cfbaf0cc987fda98", 1077 | "revisionTime": "2016-07-17T02:21:40Z" 1078 | }, 1079 | { 1080 | "checksumSHA1": "tUGxc7rfX0cmhOOUDhMuAZ9rWsA=", 1081 | "path": "github.com/hashicorp/go-version", 1082 | "revision": "03c5bf6be031b6dd45afec16b1cf94fc8938bc77", 1083 | "revisionTime": "2017-02-02T08:07:59Z" 1084 | }, 1085 | { 1086 | "checksumSHA1": "7JBkp3EZoc0MSbiyWfzVhO4RYoY=", 1087 | "path": "github.com/hashicorp/hcl", 1088 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1089 | "revisionTime": "2017-05-05T08:58:37Z" 1090 | }, 1091 | { 1092 | "checksumSHA1": "XQmjDva9JCGGkIecOgwtBEMCJhU=", 1093 | "path": "github.com/hashicorp/hcl/hcl/ast", 1094 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1095 | "revisionTime": "2017-05-05T08:58:37Z" 1096 | }, 1097 | { 1098 | "checksumSHA1": "DaQmLi48oUAwctWcX6A6DNN61UY=", 1099 | "path": "github.com/hashicorp/hcl/hcl/fmtcmd", 1100 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1101 | "revisionTime": "2017-05-05T08:58:37Z" 1102 | }, 1103 | { 1104 | "checksumSHA1": "teokXoyRXEJ0vZHOWBD11l5YFNI=", 1105 | "path": "github.com/hashicorp/hcl/hcl/parser", 1106 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1107 | "revisionTime": "2017-05-05T08:58:37Z" 1108 | }, 1109 | { 1110 | "checksumSHA1": "WR1BjzDKgv6uE+3ShcDTYz0Gl6A=", 1111 | "path": "github.com/hashicorp/hcl/hcl/printer", 1112 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1113 | "revisionTime": "2017-05-05T08:58:37Z" 1114 | }, 1115 | { 1116 | "checksumSHA1": "z6wdP4mRw4GVjShkNHDaOWkbxS0=", 1117 | "path": "github.com/hashicorp/hcl/hcl/scanner", 1118 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1119 | "revisionTime": "2017-05-05T08:58:37Z" 1120 | }, 1121 | { 1122 | "checksumSHA1": "oS3SCN9Wd6D8/LG0Yx1fu84a7gI=", 1123 | "path": "github.com/hashicorp/hcl/hcl/strconv", 1124 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1125 | "revisionTime": "2017-05-05T08:58:37Z" 1126 | }, 1127 | { 1128 | "checksumSHA1": "c6yprzj06ASwCo18TtbbNNBHljA=", 1129 | "path": "github.com/hashicorp/hcl/hcl/token", 1130 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1131 | "revisionTime": "2017-05-05T08:58:37Z" 1132 | }, 1133 | { 1134 | "checksumSHA1": "PwlfXt7mFS8UYzWxOK5DOq0yxS0=", 1135 | "path": "github.com/hashicorp/hcl/json/parser", 1136 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1137 | "revisionTime": "2017-05-05T08:58:37Z" 1138 | }, 1139 | { 1140 | "checksumSHA1": "YdvFsNOMSWMLnY6fcliWQa0O5Fw=", 1141 | "path": "github.com/hashicorp/hcl/json/scanner", 1142 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1143 | "revisionTime": "2017-05-05T08:58:37Z" 1144 | }, 1145 | { 1146 | "checksumSHA1": "fNlXQCQEnb+B3k5UDL/r15xtSJY=", 1147 | "path": "github.com/hashicorp/hcl/json/token", 1148 | "revision": "392dba7d905ed5d04a5794ba89f558b27e2ba1ca", 1149 | "revisionTime": "2017-05-05T08:58:37Z" 1150 | }, 1151 | { 1152 | "checksumSHA1": "M09yxoBoCEtG7EcHR8aEWLzMMJc=", 1153 | "path": "github.com/hashicorp/hil", 1154 | "revision": "fa9f258a92500514cc8e9c67020487709df92432", 1155 | "revisionTime": "2017-02-13T18:49:38Z" 1156 | }, 1157 | { 1158 | "checksumSHA1": "0S0KeBcfqVFYBPeZkuJ4fhQ5mCA=", 1159 | "path": "github.com/hashicorp/hil/ast", 1160 | "revision": "fa9f258a92500514cc8e9c67020487709df92432", 1161 | "revisionTime": "2017-02-13T18:49:38Z" 1162 | }, 1163 | { 1164 | "checksumSHA1": "P5PZ3k7SmqWmxgJ8Q0gLzeNpGhE=", 1165 | "path": "github.com/hashicorp/hil/parser", 1166 | "revision": "fa9f258a92500514cc8e9c67020487709df92432", 1167 | "revisionTime": "2017-02-13T18:49:38Z" 1168 | }, 1169 | { 1170 | "checksumSHA1": "ekmuVa77ebGDPXI+4FaskrID8lQ=", 1171 | "path": "github.com/hashicorp/hil/scanner", 1172 | "revision": "fa9f258a92500514cc8e9c67020487709df92432", 1173 | "revisionTime": "2017-02-13T18:49:38Z" 1174 | }, 1175 | { 1176 | "checksumSHA1": "vt+P9D2yWDO3gdvdgCzwqunlhxU=", 1177 | "path": "github.com/hashicorp/logutils", 1178 | "revision": "0dc08b1671f34c4250ce212759ebd880f743d883", 1179 | "revisionTime": "2015-06-09T07:04:31Z" 1180 | }, 1181 | { 1182 | "checksumSHA1": "/oss17GO4hXGM7QnUdI3VzcAHzA=", 1183 | "path": "github.com/hashicorp/serf/coordinate", 1184 | "revision": "e0e11d82226a61dd9b31c1df562dc9101ee86142", 1185 | "revisionTime": "2017-08-02T19:05:30Z" 1186 | }, 1187 | { 1188 | "checksumSHA1": "f6PIzvwe/rpiEDCqqd0hkxpY6E8=", 1189 | "path": "github.com/hashicorp/terraform", 1190 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1191 | "revisionTime": "2017-08-02T18:39:14Z", 1192 | "version": "=v0.10.0", 1193 | "versionExact": "v0.10.0" 1194 | }, 1195 | { 1196 | "checksumSHA1": "ExrDQgeh/AFUiAmwczS0O+4iv2k=", 1197 | "path": "github.com/hashicorp/terraform/backend", 1198 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1199 | "revisionTime": "2017-08-02T18:39:14Z", 1200 | "version": "=v0.10.0", 1201 | "versionExact": "v0.10.0" 1202 | }, 1203 | { 1204 | "checksumSHA1": "ZWqZhZxaT2AMNy4dzCcvMKc46GY=", 1205 | "path": "github.com/hashicorp/terraform/backend/atlas", 1206 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1207 | "revisionTime": "2017-08-02T18:39:14Z", 1208 | "version": "=v0.10.0", 1209 | "versionExact": "v0.10.0" 1210 | }, 1211 | { 1212 | "checksumSHA1": "tpENC7Upm0NCz26xgED30Wi8RwA=", 1213 | "path": "github.com/hashicorp/terraform/backend/init", 1214 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1215 | "revisionTime": "2017-08-02T18:39:14Z", 1216 | "version": "=v0.10.0", 1217 | "versionExact": "v0.10.0" 1218 | }, 1219 | { 1220 | "checksumSHA1": "ISwgLoSPkcEYAcwFoYu5FNsMDD0=", 1221 | "path": "github.com/hashicorp/terraform/backend/legacy", 1222 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1223 | "revisionTime": "2017-08-02T18:39:14Z", 1224 | "version": "=v0.10.0", 1225 | "versionExact": "v0.10.0" 1226 | }, 1227 | { 1228 | "checksumSHA1": "LxrFHRlPRk+YFnCg0XZG9j9/gEc=", 1229 | "path": "github.com/hashicorp/terraform/backend/local", 1230 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1231 | "revisionTime": "2017-08-02T18:39:14Z", 1232 | "version": "=v0.10.0", 1233 | "versionExact": "v0.10.0" 1234 | }, 1235 | { 1236 | "checksumSHA1": "dm2mPVgLkl0LEg8hnDL7agzsLtw=", 1237 | "path": "github.com/hashicorp/terraform/backend/remote-state", 1238 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1239 | "revisionTime": "2017-08-02T18:39:14Z", 1240 | "version": "=v0.10.0", 1241 | "versionExact": "v0.10.0" 1242 | }, 1243 | { 1244 | "checksumSHA1": "ckRjYzdabaVIFIHfCo9/McYi3PI=", 1245 | "path": "github.com/hashicorp/terraform/backend/remote-state/consul", 1246 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1247 | "revisionTime": "2017-08-02T18:39:14Z", 1248 | "version": "=v0.10.0", 1249 | "versionExact": "v0.10.0" 1250 | }, 1251 | { 1252 | "checksumSHA1": "2DlWhwNky9LZSRAy0LmSdPHhF2s=", 1253 | "path": "github.com/hashicorp/terraform/backend/remote-state/inmem", 1254 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1255 | "revisionTime": "2017-08-02T18:39:14Z", 1256 | "version": "=v0.10.0", 1257 | "versionExact": "v0.10.0" 1258 | }, 1259 | { 1260 | "checksumSHA1": "WgzSa5s1Gflzw5MR6KFQrIoHy64=", 1261 | "path": "github.com/hashicorp/terraform/backend/remote-state/s3", 1262 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1263 | "revisionTime": "2017-08-02T18:39:14Z", 1264 | "version": "=v0.10.0", 1265 | "versionExact": "v0.10.0" 1266 | }, 1267 | { 1268 | "checksumSHA1": "l0SZPCxWxxlYHOedkUCZUCWw4R0=", 1269 | "path": "github.com/hashicorp/terraform/backend/remote-state/swift", 1270 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1271 | "revisionTime": "2017-08-02T18:39:14Z", 1272 | "version": "=v0.10.0", 1273 | "versionExact": "v0.10.0" 1274 | }, 1275 | { 1276 | "checksumSHA1": "/x8LyJMq8kPYSRNu4xyB8zcf9DQ=", 1277 | "path": "github.com/hashicorp/terraform/builtin/provisioners/chef", 1278 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1279 | "revisionTime": "2017-08-02T18:39:14Z", 1280 | "version": "=v0.10.0", 1281 | "versionExact": "v0.10.0" 1282 | }, 1283 | { 1284 | "checksumSHA1": "EtcHzH4aXhylC1Uu8yBQis6IzfU=", 1285 | "path": "github.com/hashicorp/terraform/builtin/provisioners/file", 1286 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1287 | "revisionTime": "2017-08-02T18:39:14Z", 1288 | "version": "=v0.10.0", 1289 | "versionExact": "v0.10.0" 1290 | }, 1291 | { 1292 | "checksumSHA1": "cqsxeQ91qnrGUicLBKoDZCuozMM=", 1293 | "path": "github.com/hashicorp/terraform/builtin/provisioners/local-exec", 1294 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1295 | "revisionTime": "2017-08-02T18:39:14Z", 1296 | "version": "=v0.10.0", 1297 | "versionExact": "v0.10.0" 1298 | }, 1299 | { 1300 | "checksumSHA1": "OChAYHSZ6OJKTCQVMgpaIz5MEMA=", 1301 | "path": "github.com/hashicorp/terraform/builtin/provisioners/remote-exec", 1302 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1303 | "revisionTime": "2017-08-02T18:39:14Z", 1304 | "version": "=v0.10.0", 1305 | "versionExact": "v0.10.0" 1306 | }, 1307 | { 1308 | "checksumSHA1": "RuHDe6nFcPIhiFEsrJ+Qzzlu74U=", 1309 | "path": "github.com/hashicorp/terraform/command", 1310 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1311 | "revisionTime": "2017-08-02T18:39:14Z", 1312 | "version": "=v0.10.0", 1313 | "versionExact": "v0.10.0" 1314 | }, 1315 | { 1316 | "checksumSHA1": "HWbnuaEFdfRFeKxZdlYUWZm+DU0=", 1317 | "path": "github.com/hashicorp/terraform/command/clistate", 1318 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1319 | "revisionTime": "2017-08-02T18:39:14Z", 1320 | "version": "=v0.10.0", 1321 | "versionExact": "v0.10.0" 1322 | }, 1323 | { 1324 | "checksumSHA1": "Nf4HkguPGljvTOOXidsSLYEAMOM=", 1325 | "path": "github.com/hashicorp/terraform/command/format", 1326 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1327 | "revisionTime": "2017-08-02T18:39:14Z", 1328 | "version": "=v0.10.0", 1329 | "versionExact": "v0.10.0" 1330 | }, 1331 | { 1332 | "checksumSHA1": "Pg0fge6Fl6a34pYl2fH1eb6kgNE=", 1333 | "path": "github.com/hashicorp/terraform/communicator", 1334 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1335 | "revisionTime": "2017-08-02T18:39:14Z", 1336 | "version": "=v0.10.0", 1337 | "versionExact": "v0.10.0" 1338 | }, 1339 | { 1340 | "checksumSHA1": "zCAC53a+zRYTwnfw7vUFJmvqxQc=", 1341 | "path": "github.com/hashicorp/terraform/communicator/remote", 1342 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1343 | "revisionTime": "2017-08-02T18:39:14Z", 1344 | "version": "=v0.10.0", 1345 | "versionExact": "v0.10.0" 1346 | }, 1347 | { 1348 | "checksumSHA1": "gOdZ52GCuL8KLiqYGEVNVZyMO5U=", 1349 | "path": "github.com/hashicorp/terraform/communicator/shared", 1350 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1351 | "revisionTime": "2017-08-02T18:39:14Z", 1352 | "version": "=v0.10.0", 1353 | "versionExact": "v0.10.0" 1354 | }, 1355 | { 1356 | "checksumSHA1": "go3oS7xtI1wIdMv0XyhEt33dA0Y=", 1357 | "path": "github.com/hashicorp/terraform/communicator/ssh", 1358 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1359 | "revisionTime": "2017-08-02T18:39:14Z", 1360 | "version": "=v0.10.0", 1361 | "versionExact": "v0.10.0" 1362 | }, 1363 | { 1364 | "checksumSHA1": "OpE2PWCmoN2WCmWGGVnoeCaeOTQ=", 1365 | "path": "github.com/hashicorp/terraform/communicator/winrm", 1366 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1367 | "revisionTime": "2017-08-02T18:39:14Z", 1368 | "version": "=v0.10.0", 1369 | "versionExact": "v0.10.0" 1370 | }, 1371 | { 1372 | "checksumSHA1": "KPrCMDPNcLmO7K6xPcJSl86LwPk=", 1373 | "path": "github.com/hashicorp/terraform/config", 1374 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1375 | "revisionTime": "2017-08-02T18:39:14Z", 1376 | "version": "=v0.10.0", 1377 | "versionExact": "v0.10.0" 1378 | }, 1379 | { 1380 | "checksumSHA1": "uPCJ6seQo9kvoNSfwNWKX9KzVMk=", 1381 | "path": "github.com/hashicorp/terraform/config/module", 1382 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1383 | "revisionTime": "2017-08-02T18:39:14Z", 1384 | "version": "=v0.10.0", 1385 | "versionExact": "v0.10.0" 1386 | }, 1387 | { 1388 | "checksumSHA1": "w+l+UGTmwYNJ+L0p2vTd6+yqjok=", 1389 | "path": "github.com/hashicorp/terraform/dag", 1390 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1391 | "revisionTime": "2017-08-02T18:39:14Z", 1392 | "version": "=v0.10.0", 1393 | "versionExact": "v0.10.0" 1394 | }, 1395 | { 1396 | "checksumSHA1": "P8gNPDuOzmiK4Lz9xG7OBy4Rlm8=", 1397 | "path": "github.com/hashicorp/terraform/flatmap", 1398 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1399 | "revisionTime": "2017-08-02T18:39:14Z", 1400 | "version": "=v0.10.0", 1401 | "versionExact": "v0.10.0" 1402 | }, 1403 | { 1404 | "checksumSHA1": "uT6Q9RdSRAkDjyUgQlJ2XKJRab4=", 1405 | "path": "github.com/hashicorp/terraform/helper/config", 1406 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1407 | "revisionTime": "2017-08-02T18:39:14Z", 1408 | "version": "=v0.10.0", 1409 | "versionExact": "v0.10.0" 1410 | }, 1411 | { 1412 | "checksumSHA1": "FH5eOEHfHgdxPC/JnfmCeSBk66U=", 1413 | "path": "github.com/hashicorp/terraform/helper/encryption", 1414 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1415 | "revisionTime": "2017-08-02T18:39:14Z", 1416 | "version": "=v0.10.0", 1417 | "versionExact": "v0.10.0" 1418 | }, 1419 | { 1420 | "checksumSHA1": "Vbo55GDzPgG/L/+W2pcvDhxrPZc=", 1421 | "path": "github.com/hashicorp/terraform/helper/experiment", 1422 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1423 | "revisionTime": "2017-08-02T18:39:14Z", 1424 | "version": "=v0.10.0", 1425 | "versionExact": "v0.10.0" 1426 | }, 1427 | { 1428 | "checksumSHA1": "BmIPKTr0zDutSJdyq7pYXrK1I3E=", 1429 | "path": "github.com/hashicorp/terraform/helper/hashcode", 1430 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1431 | "revisionTime": "2017-08-02T18:39:14Z", 1432 | "version": "=v0.10.0", 1433 | "versionExact": "v0.10.0" 1434 | }, 1435 | { 1436 | "checksumSHA1": "B267stWNQd0/pBTXHfI/tJsxzfc=", 1437 | "path": "github.com/hashicorp/terraform/helper/hilmapstructure", 1438 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1439 | "revisionTime": "2017-08-02T18:39:14Z", 1440 | "version": "=v0.10.0", 1441 | "versionExact": "v0.10.0" 1442 | }, 1443 | { 1444 | "checksumSHA1": "2wJa9F3BGlbe2DNqH5lb5POayRI=", 1445 | "path": "github.com/hashicorp/terraform/helper/logging", 1446 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1447 | "revisionTime": "2017-08-02T18:39:14Z", 1448 | "version": "=v0.10.0", 1449 | "versionExact": "v0.10.0" 1450 | }, 1451 | { 1452 | "checksumSHA1": "twkFd4x71kBnDfrdqO5nhs8dMOY=", 1453 | "path": "github.com/hashicorp/terraform/helper/mutexkv", 1454 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1455 | "revisionTime": "2017-08-02T18:39:14Z", 1456 | "version": "=v0.10.0", 1457 | "versionExact": "v0.10.0" 1458 | }, 1459 | { 1460 | "checksumSHA1": "ImyqbHM/xe3eAT2moIjLI8ksuks=", 1461 | "path": "github.com/hashicorp/terraform/helper/pathorcontents", 1462 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1463 | "revisionTime": "2017-08-02T18:39:14Z", 1464 | "version": "=v0.10.0", 1465 | "versionExact": "v0.10.0" 1466 | }, 1467 | { 1468 | "checksumSHA1": "dhU2woQaSEI2OnbYLdkHxf7/nu8=", 1469 | "path": "github.com/hashicorp/terraform/helper/resource", 1470 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1471 | "revisionTime": "2017-08-02T18:39:14Z", 1472 | "version": "=v0.10.0", 1473 | "versionExact": "v0.10.0" 1474 | }, 1475 | { 1476 | "checksumSHA1": "0smlb90amL15c/6nWtW4DV6Lqh8=", 1477 | "path": "github.com/hashicorp/terraform/helper/schema", 1478 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1479 | "revisionTime": "2017-08-02T18:39:14Z", 1480 | "version": "=v0.10.0", 1481 | "versionExact": "v0.10.0" 1482 | }, 1483 | { 1484 | "checksumSHA1": "1yCGh/Wl4H4ODBBRmIRFcV025b0=", 1485 | "path": "github.com/hashicorp/terraform/helper/shadow", 1486 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1487 | "revisionTime": "2017-08-02T18:39:14Z", 1488 | "version": "=v0.10.0", 1489 | "versionExact": "v0.10.0" 1490 | }, 1491 | { 1492 | "checksumSHA1": "eQ6F8nDi/R+F/SX51xCEY8iPZOE=", 1493 | "path": "github.com/hashicorp/terraform/helper/slowmessage", 1494 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1495 | "revisionTime": "2017-08-02T18:39:14Z", 1496 | "version": "=v0.10.0", 1497 | "versionExact": "v0.10.0" 1498 | }, 1499 | { 1500 | "checksumSHA1": "Fzbv+N7hFXOtrR6E7ZcHT3jEE9s=", 1501 | "path": "github.com/hashicorp/terraform/helper/structure", 1502 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1503 | "revisionTime": "2017-08-02T18:39:14Z", 1504 | "version": "=v0.10.0", 1505 | "versionExact": "v0.10.0" 1506 | }, 1507 | { 1508 | "checksumSHA1": "qsI85GvNukAIUv+kcy8CdgP7um8=", 1509 | "path": "github.com/hashicorp/terraform/helper/validation", 1510 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1511 | "revisionTime": "2017-08-02T18:39:14Z", 1512 | "version": "=v0.10.0", 1513 | "versionExact": "v0.10.0" 1514 | }, 1515 | { 1516 | "checksumSHA1": "a1YCqJht+4G5O0UNTnOTD8vfXb0=", 1517 | "path": "github.com/hashicorp/terraform/helper/variables", 1518 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1519 | "revisionTime": "2017-08-02T18:39:14Z", 1520 | "version": "=v0.10.0", 1521 | "versionExact": "v0.10.0" 1522 | }, 1523 | { 1524 | "checksumSHA1": "ExvF2RbMeCfxuq2eASmOChEcRgQ=", 1525 | "path": "github.com/hashicorp/terraform/helper/wrappedreadline", 1526 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1527 | "revisionTime": "2017-08-02T18:39:14Z", 1528 | "version": "=v0.10.0", 1529 | "versionExact": "v0.10.0" 1530 | }, 1531 | { 1532 | "checksumSHA1": "q96i9foHLGSZ+9dFOV7jUseq7zs=", 1533 | "path": "github.com/hashicorp/terraform/helper/wrappedstreams", 1534 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1535 | "revisionTime": "2017-08-02T18:39:14Z", 1536 | "version": "=v0.10.0", 1537 | "versionExact": "v0.10.0" 1538 | }, 1539 | { 1540 | "checksumSHA1": "yFWmdS6yEJZpRJzUqd/mULqCYGk=", 1541 | "path": "github.com/hashicorp/terraform/moduledeps", 1542 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1543 | "revisionTime": "2017-08-02T18:39:14Z", 1544 | "version": "=v0.10.0", 1545 | "versionExact": "v0.10.0" 1546 | }, 1547 | { 1548 | "checksumSHA1": "4ODNVUds3lyBf7gV02X1EeYR4GA=", 1549 | "path": "github.com/hashicorp/terraform/plugin", 1550 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1551 | "revisionTime": "2017-08-02T18:39:14Z", 1552 | "version": "=v0.10.0", 1553 | "versionExact": "v0.10.0" 1554 | }, 1555 | { 1556 | "checksumSHA1": "mujz3BDg1X82ynvJncCFUT6/7XI=", 1557 | "path": "github.com/hashicorp/terraform/plugin/discovery", 1558 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1559 | "revisionTime": "2017-08-02T18:39:14Z", 1560 | "version": "=v0.10.0", 1561 | "versionExact": "v0.10.0" 1562 | }, 1563 | { 1564 | "checksumSHA1": "vW75JRFcEDJNxNCB2mrlFeYOyX4=", 1565 | "path": "github.com/hashicorp/terraform/repl", 1566 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1567 | "revisionTime": "2017-08-02T18:39:14Z", 1568 | "version": "=v0.10.0", 1569 | "versionExact": "v0.10.0" 1570 | }, 1571 | { 1572 | "checksumSHA1": "6GDMHApWhgYT4AVkhSBknxK0YyU=", 1573 | "path": "github.com/hashicorp/terraform/state", 1574 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1575 | "revisionTime": "2017-08-02T18:39:14Z", 1576 | "version": "=v0.10.0", 1577 | "versionExact": "v0.10.0" 1578 | }, 1579 | { 1580 | "checksumSHA1": "uHQBceHkR/Im5m7TLBfrRK78k8s=", 1581 | "path": "github.com/hashicorp/terraform/state/remote", 1582 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1583 | "revisionTime": "2017-08-02T18:39:14Z", 1584 | "version": "=v0.10.0", 1585 | "versionExact": "v0.10.0" 1586 | }, 1587 | { 1588 | "checksumSHA1": "ksfNQjZs/6llziARojABd6iuvdw=", 1589 | "path": "github.com/hashicorp/terraform/terraform", 1590 | "revision": "2041053ee9444fa8175a298093b55a89586a1823", 1591 | "revisionTime": "2017-08-02T18:39:14Z", 1592 | "version": "=v0.10.0", 1593 | "versionExact": "v0.10.0" 1594 | }, 1595 | { 1596 | "checksumSHA1": "au+CDkddC4sVFV15UaPiI7FvSw0=", 1597 | "path": "github.com/hashicorp/vault/helper/compressutil", 1598 | "revision": "01d1c20e4c71a3664c29070a0fee3c80f0fed6d7", 1599 | "revisionTime": "2017-08-08T04:18:59Z" 1600 | }, 1601 | { 1602 | "checksumSHA1": "yUiSTPf0QUuL2r/81sjuytqBoeQ=", 1603 | "path": "github.com/hashicorp/vault/helper/jsonutil", 1604 | "revision": "01d1c20e4c71a3664c29070a0fee3c80f0fed6d7", 1605 | "revisionTime": "2017-08-08T04:18:59Z" 1606 | }, 1607 | { 1608 | "checksumSHA1": "YmXAnTwbzhLLBZM+1tQrJiG3qpc=", 1609 | "path": "github.com/hashicorp/vault/helper/pgpkeys", 1610 | "revision": "01d1c20e4c71a3664c29070a0fee3c80f0fed6d7", 1611 | "revisionTime": "2017-08-08T04:18:59Z" 1612 | }, 1613 | { 1614 | "checksumSHA1": "ZhK6IO2XN81Y+3RAjTcVm1Ic7oU=", 1615 | "path": "github.com/hashicorp/yamux", 1616 | "revision": "d1caa6c97c9fc1cc9e83bbe34d0603f9ff0ce8bd", 1617 | "revisionTime": "2016-07-20T23:31:40Z" 1618 | }, 1619 | { 1620 | "checksumSHA1": "rixrz9zVpq9gss5jHqc/nGNpSw0=", 1621 | "path": "github.com/jen20/awspolicyequivalence", 1622 | "revision": "ed4c14ea400d756059e9312e409477a9ebf448f4", 1623 | "revisionTime": "2017-01-03T19:23:32Z" 1624 | }, 1625 | { 1626 | "checksumSHA1": "hD8LA+lIAv6MB82Db29L71c2Jjc=", 1627 | "path": "github.com/jen20/riviera/azure", 1628 | "revision": "6d39def2c43fa5854b413c44da7a2fef012e464d", 1629 | "revisionTime": "2017-07-28T08:41:01Z" 1630 | }, 1631 | { 1632 | "checksumSHA1": "0ZrwvB6KoGPj2PoDNSEJwxQ6Mog=", 1633 | "path": "github.com/jmespath/go-jmespath", 1634 | "revision": "bd40a432e4c76585ef6b72d3fd96fb9b6dc7b68d", 1635 | "revisionTime": "2016-08-03T19:07:31Z" 1636 | }, 1637 | { 1638 | "checksumSHA1": "NOwNdnb70M6s9LvhaPFabBVwlBs=", 1639 | "path": "github.com/joyent/gocommon", 1640 | "revision": "b78708995d1c2ebdb64a3061b0bca5d8ccdf0fc2", 1641 | "revisionTime": "2016-12-02T19:23:17Z" 1642 | }, 1643 | { 1644 | "checksumSHA1": "O0WFPpYSMzeDL11yO84IYBSXrmk=", 1645 | "path": "github.com/joyent/gocommon/client", 1646 | "revision": "b78708995d1c2ebdb64a3061b0bca5d8ccdf0fc2", 1647 | "revisionTime": "2016-12-02T19:23:17Z" 1648 | }, 1649 | { 1650 | "checksumSHA1": "fsnHUI4h0h1BUeiWNhkRJhzZD/s=", 1651 | "path": "github.com/joyent/gocommon/errors", 1652 | "revision": "b78708995d1c2ebdb64a3061b0bca5d8ccdf0fc2", 1653 | "revisionTime": "2016-12-02T19:23:17Z" 1654 | }, 1655 | { 1656 | "checksumSHA1": "cz4amcSofbyq0dH1sdOHNUvznWw=", 1657 | "path": "github.com/joyent/gocommon/http", 1658 | "revision": "b78708995d1c2ebdb64a3061b0bca5d8ccdf0fc2", 1659 | "revisionTime": "2016-12-02T19:23:17Z" 1660 | }, 1661 | { 1662 | "checksumSHA1": "yMJdr6tmhoSgkjLjfyeDZL6vuXo=", 1663 | "path": "github.com/joyent/gocommon/jpc", 1664 | "revision": "b78708995d1c2ebdb64a3061b0bca5d8ccdf0fc2", 1665 | "revisionTime": "2016-12-02T19:23:17Z" 1666 | }, 1667 | { 1668 | "checksumSHA1": "ysHPYOB/xV0dMIAES8ZOQu9KwQQ=", 1669 | "path": "github.com/joyent/gomanta/manta", 1670 | "revision": "41c8bc3faef9789454337062b5fac84699f75834", 1671 | "revisionTime": "2016-12-02T19:23:08Z" 1672 | }, 1673 | { 1674 | "checksumSHA1": "N0NRIcJF7aj1wd56DA1N9GpYq/4=", 1675 | "path": "github.com/joyent/gosign/auth", 1676 | "revision": "9abcee278795b82b36858cdfc857c8a0e7de797c", 1677 | "revisionTime": "2016-11-14T19:17:44Z" 1678 | }, 1679 | { 1680 | "checksumSHA1": "gEjGS03N1eysvpQ+FCHTxPcbxXc=", 1681 | "path": "github.com/kardianos/osext", 1682 | "revision": "ae77be60afb1dcacde03767a8c37337fad28ac14", 1683 | "revisionTime": "2017-05-10T13:15:34Z" 1684 | }, 1685 | { 1686 | "checksumSHA1": "VJk3rOWfxEV9Ilig5lgzH1qg8Ss=", 1687 | "path": "github.com/keybase/go-crypto/brainpool", 1688 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1689 | "revisionTime": "2017-06-28T15:29:38Z" 1690 | }, 1691 | { 1692 | "checksumSHA1": "rnRjEJs5luF+DIXp2J6LFcQk8Gg=", 1693 | "path": "github.com/keybase/go-crypto/cast5", 1694 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1695 | "revisionTime": "2017-06-28T15:29:38Z" 1696 | }, 1697 | { 1698 | "checksumSHA1": "F5++ZQS5Vt7hd6lxPCKTffvph1A=", 1699 | "path": "github.com/keybase/go-crypto/curve25519", 1700 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1701 | "revisionTime": "2017-06-28T15:29:38Z" 1702 | }, 1703 | { 1704 | "checksumSHA1": "IvrDXwIixB5yPPbo6tq1/1cSn78=", 1705 | "path": "github.com/keybase/go-crypto/ed25519", 1706 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1707 | "revisionTime": "2017-06-28T15:29:38Z" 1708 | }, 1709 | { 1710 | "checksumSHA1": "4+fslB6pCbplNq4viy6CrOkkY6Y=", 1711 | "path": "github.com/keybase/go-crypto/ed25519/internal/edwards25519", 1712 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1713 | "revisionTime": "2017-06-28T15:29:38Z" 1714 | }, 1715 | { 1716 | "checksumSHA1": "fgFlkfkaotUjBVhJik2979oCeJw=", 1717 | "path": "github.com/keybase/go-crypto/openpgp", 1718 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1719 | "revisionTime": "2017-06-28T15:29:38Z" 1720 | }, 1721 | { 1722 | "checksumSHA1": "+spfcEChljh3yeIg4K/xHOQ2pVM=", 1723 | "path": "github.com/keybase/go-crypto/openpgp/armor", 1724 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1725 | "revisionTime": "2017-06-28T15:29:38Z" 1726 | }, 1727 | { 1728 | "checksumSHA1": "nWhmwjBJqPSvkCWqaap2Z9EiS1k=", 1729 | "path": "github.com/keybase/go-crypto/openpgp/ecdh", 1730 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1731 | "revisionTime": "2017-06-28T15:29:38Z" 1732 | }, 1733 | { 1734 | "checksumSHA1": "uxXG9IC/XF8jwwvZUbW65+x8/+M=", 1735 | "path": "github.com/keybase/go-crypto/openpgp/elgamal", 1736 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1737 | "revisionTime": "2017-06-28T15:29:38Z" 1738 | }, 1739 | { 1740 | "checksumSHA1": "EyUf82Yknzc75m8RcA21CNQINw0=", 1741 | "path": "github.com/keybase/go-crypto/openpgp/errors", 1742 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1743 | "revisionTime": "2017-06-28T15:29:38Z" 1744 | }, 1745 | { 1746 | "checksumSHA1": "tw0BkvixAuw9Ai80hHzFy6W5mnk=", 1747 | "path": "github.com/keybase/go-crypto/openpgp/packet", 1748 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1749 | "revisionTime": "2017-06-28T15:29:38Z" 1750 | }, 1751 | { 1752 | "checksumSHA1": "BGDxg1Xtsz0DSPzdQGJLLQqfYc8=", 1753 | "path": "github.com/keybase/go-crypto/openpgp/s2k", 1754 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1755 | "revisionTime": "2017-06-28T15:29:38Z" 1756 | }, 1757 | { 1758 | "checksumSHA1": "rE3pp7b3gfcmBregzpIvN5IdFhY=", 1759 | "path": "github.com/keybase/go-crypto/rsa", 1760 | "revision": "433e2f3d43ef1bd31387582a899389b2fbe2005e", 1761 | "revisionTime": "2017-06-28T15:29:38Z" 1762 | }, 1763 | { 1764 | "checksumSHA1": "90/rTD6BDXVZZSY3Qeqnrg9Wb10=", 1765 | "path": "github.com/lusis/go-artifactory/src/artifactory.v401", 1766 | "revision": "5784f4fd4b5d87c367611658aa28c38f231dab40", 1767 | "revisionTime": "2017-06-25T00:40:56Z" 1768 | }, 1769 | { 1770 | "checksumSHA1": "t7hEeujQesCSzjZIPcE80XgQ9M0=", 1771 | "path": "github.com/masterzen/azure-sdk-for-go/core/http", 1772 | "revision": "ee4f0065d00cd12b542f18f5bc45799e88163b12", 1773 | "revisionTime": "2016-10-14T13:56:28Z" 1774 | }, 1775 | { 1776 | "checksumSHA1": "xJVMikTtYbfI2KqKeUXaO4292JU=", 1777 | "path": "github.com/masterzen/azure-sdk-for-go/core/tls", 1778 | "revision": "ee4f0065d00cd12b542f18f5bc45799e88163b12", 1779 | "revisionTime": "2016-10-14T13:56:28Z" 1780 | }, 1781 | { 1782 | "checksumSHA1": "yg57Q4J8Ob0LoYvqDxsWZ6AHffE=", 1783 | "path": "github.com/masterzen/simplexml/dom", 1784 | "revision": "4572e39b1ab9fe03ee513ce6fc7e289e98482190", 1785 | "revisionTime": "2016-06-08T18:30:07Z" 1786 | }, 1787 | { 1788 | "checksumSHA1": "LY1os7cX/gWXWTWYCHCtEaf5jSw=", 1789 | "path": "github.com/masterzen/winrm", 1790 | "revision": "1ca0ba637a877ee12b69abc73c6161fccb77b70a", 1791 | "revisionTime": "2017-06-01T21:16:37Z" 1792 | }, 1793 | { 1794 | "checksumSHA1": "KTsgWipT3ennAAtaKxEZairxero=", 1795 | "path": "github.com/masterzen/winrm/soap", 1796 | "revision": "1ca0ba637a877ee12b69abc73c6161fccb77b70a", 1797 | "revisionTime": "2017-06-01T21:16:37Z" 1798 | }, 1799 | { 1800 | "path": "github.com/masterzen/winrm/winrm", 1801 | "revision": "" 1802 | }, 1803 | { 1804 | "checksumSHA1": "bx+egnFe0OB0BZBcgZcaqsvcmS4=", 1805 | "path": "github.com/masterzen/xmlpath", 1806 | "revision": "13f4951698adc0fa9c1dda3e275d489a24201161", 1807 | "revisionTime": "2014-02-18T18:59:01Z" 1808 | }, 1809 | { 1810 | "checksumSHA1": "VdvWgxaqcC3pKk/6Q7dRfH7THjM=", 1811 | "path": "github.com/mattn/go-colorable", 1812 | "revision": "6c0fd4aa6ec5818d5e3ea9e03ae436972a6c5a9a", 1813 | "revisionTime": "2017-08-02T01:54:08Z" 1814 | }, 1815 | { 1816 | "checksumSHA1": "U6lX43KDDlNOn+Z0Yyww+ZzHfFo=", 1817 | "path": "github.com/mattn/go-isatty", 1818 | "revision": "fc9e8d8ef48496124e79ae0df75490096eccf6fe", 1819 | "revisionTime": "2017-03-22T23:44:13Z" 1820 | }, 1821 | { 1822 | "checksumSHA1": "pUXq8lowSC+hh+JB2MQDOoL7u4I=", 1823 | "path": "github.com/mattn/go-shellwords", 1824 | "revision": "9858af9cca4c73576f0b8c6609a396eb0878023c", 1825 | "revisionTime": "2017-08-03T00:17:40Z" 1826 | }, 1827 | { 1828 | "checksumSHA1": "sDE6oXLKXrDSNTscUxCrDsMvuQM=", 1829 | "path": "github.com/maxmanuylov/go-rest/client", 1830 | "revision": "dfacc896a538b675415c13eae071b3216d57fb69", 1831 | "revisionTime": "2017-07-31T13:08:33Z" 1832 | }, 1833 | { 1834 | "checksumSHA1": "5qJRWxgDN18ARmtokGnDwth7Xdc=", 1835 | "path": "github.com/maxmanuylov/go-rest/error", 1836 | "revision": "dfacc896a538b675415c13eae071b3216d57fb69", 1837 | "revisionTime": "2017-07-31T13:08:33Z" 1838 | }, 1839 | { 1840 | "checksumSHA1": "4GjPKGX52VcHQrvaANF3OuLzex8=", 1841 | "path": "github.com/maxmanuylov/utils/http/transport", 1842 | "revision": "81338fd1e9a12cd5c6c69caa0dd503c370578e05", 1843 | "revisionTime": "2017-08-07T16:45:39Z" 1844 | }, 1845 | { 1846 | "checksumSHA1": "LPWoHtRUtvwWh7vAUvGFFout7Jc=", 1847 | "path": "github.com/maxmanuylov/utils/http/transport/tls", 1848 | "revision": "81338fd1e9a12cd5c6c69caa0dd503c370578e05", 1849 | "revisionTime": "2017-08-07T16:45:39Z" 1850 | }, 1851 | { 1852 | "checksumSHA1": "c3d/obuVYbUya1V4rcPzEnaagFw=", 1853 | "path": "github.com/maxmanuylov/utils/intellij-hcl/terraform/provider-schema-generator", 1854 | "revision": "ffe3052bf1fc806357e6ed5041e829bcd9f3e5c0", 1855 | "revisionTime": "2017-08-24T10:21:07Z", 1856 | "version": "=v2.2", 1857 | "versionExact": "v2.2" 1858 | }, 1859 | { 1860 | "checksumSHA1": "jXakiCRizt6jtyeGh+DeuA76Bh0=", 1861 | "path": "github.com/mitchellh/cli", 1862 | "revision": "8a539dbef410aa4191e0bcc7a6246c104b313009", 1863 | "revisionTime": "2017-08-03T04:29:10Z" 1864 | }, 1865 | { 1866 | "checksumSHA1": "ttEN1Aupb7xpPMkQLqb3tzLFdXs=", 1867 | "path": "github.com/mitchellh/colorstring", 1868 | "revision": "8631ce90f28644f54aeedcb3e389a85174e067d1", 1869 | "revisionTime": "2015-09-17T21:48:07Z" 1870 | }, 1871 | { 1872 | "checksumSHA1": "+p4JY4wmFQAppCdlrJ8Kxybmht8=", 1873 | "path": "github.com/mitchellh/copystructure", 1874 | "revision": "d23ffcb85de31694d6ccaa23ccb4a03e55c1303f", 1875 | "revisionTime": "2017-05-25T01:39:02Z" 1876 | }, 1877 | { 1878 | "checksumSHA1": "V/quM7+em2ByJbWBLOsEwnY3j/Q=", 1879 | "path": "github.com/mitchellh/go-homedir", 1880 | "revision": "b8bc1bf767474819792c23f32d8286a45736f1c6", 1881 | "revisionTime": "2016-12-03T19:45:07Z" 1882 | }, 1883 | { 1884 | "checksumSHA1": "y7Az37mGuIJ4q0I8yDFKJjYj+E0=", 1885 | "path": "github.com/mitchellh/go-linereader", 1886 | "revision": "07bab5fdd9580500aea6ada0e09df4aa28e68abd", 1887 | "revisionTime": "2014-10-13T18:55:33Z" 1888 | }, 1889 | { 1890 | "checksumSHA1": "6TBW88DSxRHf4WvOC9K5ilBZx/8=", 1891 | "path": "github.com/mitchellh/go-testing-interface", 1892 | "revision": "9a441910b16872f7b8283682619b3761a9aa2222", 1893 | "revisionTime": "2017-07-30T05:09:07Z" 1894 | }, 1895 | { 1896 | "checksumSHA1": "tWUjKyFOGJtYExocPWVYiXBYsfE=", 1897 | "path": "github.com/mitchellh/hashstructure", 1898 | "revision": "2bca23e0e452137f789efbc8610126fd8b94f73b", 1899 | "revisionTime": "2017-06-09T04:59:27Z" 1900 | }, 1901 | { 1902 | "checksumSHA1": "EHjhpHipgm+XGccrRAms9AW3Ewk=", 1903 | "path": "github.com/mitchellh/mapstructure", 1904 | "revision": "d0303fe809921458f417bcf828397a65db30a7e4", 1905 | "revisionTime": "2017-05-23T03:00:23Z" 1906 | }, 1907 | { 1908 | "checksumSHA1": "m2L8ohfZiFRsMW3iynaH/TWgnSY=", 1909 | "path": "github.com/mitchellh/panicwrap", 1910 | "revision": "fce601fe55579125e1b3cb0b992287e7290f7b83", 1911 | "revisionTime": "2017-01-06T18:23:40Z" 1912 | }, 1913 | { 1914 | "checksumSHA1": "h+ODp7a8Vj8XMUsORLbhtQMWOO4=", 1915 | "path": "github.com/mitchellh/prefixedio", 1916 | "revision": "6e6954073784f7ee67b28f2d22749d6479151ed7", 1917 | "revisionTime": "2015-12-14T00:22:11Z" 1918 | }, 1919 | { 1920 | "checksumSHA1": "AMU63CNOg4XmIhVR/S/Xttt1/f0=", 1921 | "path": "github.com/mitchellh/reflectwalk", 1922 | "revision": "63d60e9d0dbc60cf9164e6510889b0db6683d98c", 1923 | "revisionTime": "2017-07-26T20:21:17Z" 1924 | }, 1925 | { 1926 | "checksumSHA1": "gcLub3oB+u4QrOJZcYmk/y2AP4k=", 1927 | "path": "github.com/nu7hatch/gouuid", 1928 | "revision": "179d4d0c4d8d407a32af483c2354df1d2c91e6c3", 1929 | "revisionTime": "2013-12-21T20:05:32Z" 1930 | }, 1931 | { 1932 | "checksumSHA1": "iApv8tX8vuAvzyY6VkOvW+IzJF8=", 1933 | "path": "github.com/packer-community/winrmcp/winrmcp", 1934 | "revision": "078cc0a785c9da54158c0775f06f505fc1e867f8", 1935 | "revisionTime": "2017-06-07T14:21:56Z" 1936 | }, 1937 | { 1938 | "checksumSHA1": "6OEUkwOM0qgI6YxR+BDEn6YMvpU=", 1939 | "path": "github.com/posener/complete", 1940 | "revision": "f4461a52b6329c11190f11fe3384ec8aa964e21c", 1941 | "revisionTime": "2017-07-30T19:30:24Z" 1942 | }, 1943 | { 1944 | "checksumSHA1": "NB7uVS0/BJDmNu68vPAlbrq4TME=", 1945 | "path": "github.com/posener/complete/cmd", 1946 | "revision": "f4461a52b6329c11190f11fe3384ec8aa964e21c", 1947 | "revisionTime": "2017-07-30T19:30:24Z" 1948 | }, 1949 | { 1950 | "checksumSHA1": "kuS9vs+TMQzTGzXteL6EZ5HuKrU=", 1951 | "path": "github.com/posener/complete/cmd/install", 1952 | "revision": "f4461a52b6329c11190f11fe3384ec8aa964e21c", 1953 | "revisionTime": "2017-07-30T19:30:24Z" 1954 | }, 1955 | { 1956 | "checksumSHA1": "DMo94FwJAm9ZCYCiYdJU2+bh4no=", 1957 | "path": "github.com/posener/complete/match", 1958 | "revision": "f4461a52b6329c11190f11fe3384ec8aa964e21c", 1959 | "revisionTime": "2017-07-30T19:30:24Z" 1960 | }, 1961 | { 1962 | "checksumSHA1": "M57Rrfc8Z966p+IBtQ91QOcUtcg=", 1963 | "path": "github.com/ryanuber/columnize", 1964 | "revision": "abc90934186a77966e2beeac62ed966aac0561d5", 1965 | "revisionTime": "2017-07-03T20:58:27Z" 1966 | }, 1967 | { 1968 | "checksumSHA1": "zmC8/3V4ls53DJlNTKDZwPSC/dA=", 1969 | "path": "github.com/satori/go.uuid", 1970 | "revision": "5bf94b69c6b68ee1b541973bb8e1144db23a194b", 1971 | "revisionTime": "2017-03-21T23:07:31Z" 1972 | }, 1973 | { 1974 | "checksumSHA1": "iqUXcP3VA+G1/gVLRpQpBUt/BuA=", 1975 | "path": "github.com/satori/uuid", 1976 | "revision": "5bf94b69c6b68ee1b541973bb8e1144db23a194b", 1977 | "revisionTime": "2017-03-21T23:07:31Z" 1978 | }, 1979 | { 1980 | "checksumSHA1": "UxgAKjDS6mher0PL9dw61QnPQ7w=", 1981 | "path": "github.com/terraform-providers/terraform-provider-aws/aws", 1982 | "revision": "37cf4e6f4086285603c0a447de7d3b62bc3e9348", 1983 | "revisionTime": "2017-08-07T19:20:06Z" 1984 | }, 1985 | { 1986 | "checksumSHA1": "R+2QkZ1uCKhGJN7Nak++jdKx59I=", 1987 | "path": "github.com/terraform-providers/terraform-provider-openstack/openstack", 1988 | "revision": "b1d20f39d0e43d2828437e4d4ea7995ab71e2506", 1989 | "revisionTime": "2017-08-07T16:25:03Z" 1990 | }, 1991 | { 1992 | "checksumSHA1": "9Zw986fuQM/hCoVd8vmHoSM+8sU=", 1993 | "path": "github.com/ugorji/go/codec", 1994 | "revision": "5efa3251c7f7d05e5d9704a69a984ec9f1386a40", 1995 | "revisionTime": "2017-06-20T10:48:52Z" 1996 | }, 1997 | { 1998 | "checksumSHA1": "z2kAtVle4NFV2OExI85fZoTcsI4=", 1999 | "path": "github.com/ulikunitz/xz", 2000 | "revision": "0c6b41e72360850ca4f98dc341fd999726ea007f", 2001 | "revisionTime": "2017-06-05T21:53:11Z" 2002 | }, 2003 | { 2004 | "checksumSHA1": "vjnTkzNrMs5Xj6so/fq0mQ6dT1c=", 2005 | "path": "github.com/ulikunitz/xz/internal/hash", 2006 | "revision": "0c6b41e72360850ca4f98dc341fd999726ea007f", 2007 | "revisionTime": "2017-06-05T21:53:11Z" 2008 | }, 2009 | { 2010 | "checksumSHA1": "m0pm57ASBK/CTdmC0ppRHO17mBs=", 2011 | "path": "github.com/ulikunitz/xz/internal/xlog", 2012 | "revision": "0c6b41e72360850ca4f98dc341fd999726ea007f", 2013 | "revisionTime": "2017-06-05T21:53:11Z" 2014 | }, 2015 | { 2016 | "checksumSHA1": "2vZw6zc8xuNlyVz2QKvdlNSZQ1U=", 2017 | "path": "github.com/ulikunitz/xz/lzma", 2018 | "revision": "0c6b41e72360850ca4f98dc341fd999726ea007f", 2019 | "revisionTime": "2017-06-05T21:53:11Z" 2020 | }, 2021 | { 2022 | "checksumSHA1": "iHiMTBffQvWYlOLu3130JXuQpgQ=", 2023 | "path": "github.com/xanzy/ssh-agent", 2024 | "revision": "ba9c9e33906f58169366275e3450db66139a31a9", 2025 | "revisionTime": "2015-12-15T15:34:51Z" 2026 | }, 2027 | { 2028 | "checksumSHA1": "xtw+Llokq30p1Gn+Q8JBZ7NtE+I=", 2029 | "path": "github.com/xlab/treeprint", 2030 | "revision": "1d6e342255576c977e946a2384fc487a22d3fceb", 2031 | "revisionTime": "2016-10-29T10:40:18Z" 2032 | }, 2033 | { 2034 | "checksumSHA1": "UWjVYmoHlIfHzVIskELHiJQtMOI=", 2035 | "path": "golang.org/x/crypto/bcrypt", 2036 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2037 | "revisionTime": "2017-07-23T04:49:35Z" 2038 | }, 2039 | { 2040 | "checksumSHA1": "oVPHWesOmZ02vLq2fglGvf+AMgk=", 2041 | "path": "golang.org/x/crypto/blowfish", 2042 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2043 | "revisionTime": "2017-07-23T04:49:35Z" 2044 | }, 2045 | { 2046 | "checksumSHA1": "TT1rac6kpQp2vz24m5yDGUNQ/QQ=", 2047 | "path": "golang.org/x/crypto/cast5", 2048 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2049 | "revisionTime": "2017-07-23T04:49:35Z" 2050 | }, 2051 | { 2052 | "checksumSHA1": "MlEHIE/60sB86Lmf0MPTIXHzKzE=", 2053 | "path": "golang.org/x/crypto/curve25519", 2054 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2055 | "revisionTime": "2017-07-23T04:49:35Z" 2056 | }, 2057 | { 2058 | "checksumSHA1": "X6Q8nYb+KXh+64AKHwWOOcyijHQ=", 2059 | "path": "golang.org/x/crypto/ed25519", 2060 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2061 | "revisionTime": "2017-07-23T04:49:35Z" 2062 | }, 2063 | { 2064 | "checksumSHA1": "LXFcVx8I587SnWmKycSDEq9yvK8=", 2065 | "path": "golang.org/x/crypto/ed25519/internal/edwards25519", 2066 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2067 | "revisionTime": "2017-07-23T04:49:35Z" 2068 | }, 2069 | { 2070 | "checksumSHA1": "MCeXr2RNeiG1XG6V+er1OR0qyeo=", 2071 | "path": "golang.org/x/crypto/md4", 2072 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2073 | "revisionTime": "2017-07-23T04:49:35Z" 2074 | }, 2075 | { 2076 | "checksumSHA1": "IIhFTrLlmlc6lEFSitqi4aw2lw0=", 2077 | "path": "golang.org/x/crypto/openpgp", 2078 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2079 | "revisionTime": "2017-07-23T04:49:35Z" 2080 | }, 2081 | { 2082 | "checksumSHA1": "olOKkhrdkYQHZ0lf1orrFQPQrv4=", 2083 | "path": "golang.org/x/crypto/openpgp/armor", 2084 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2085 | "revisionTime": "2017-07-23T04:49:35Z" 2086 | }, 2087 | { 2088 | "checksumSHA1": "eo/KtdjieJQXH7Qy+faXFcF70ME=", 2089 | "path": "golang.org/x/crypto/openpgp/elgamal", 2090 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2091 | "revisionTime": "2017-07-23T04:49:35Z" 2092 | }, 2093 | { 2094 | "checksumSHA1": "rlxVSaGgqdAgwblsErxTxIfuGfg=", 2095 | "path": "golang.org/x/crypto/openpgp/errors", 2096 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2097 | "revisionTime": "2017-07-23T04:49:35Z" 2098 | }, 2099 | { 2100 | "checksumSHA1": "Pq88+Dgh04UdXWZN6P+bLgYnbRc=", 2101 | "path": "golang.org/x/crypto/openpgp/packet", 2102 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2103 | "revisionTime": "2017-07-23T04:49:35Z" 2104 | }, 2105 | { 2106 | "checksumSHA1": "s2qT4UwvzBSkzXuiuMkowif1Olw=", 2107 | "path": "golang.org/x/crypto/openpgp/s2k", 2108 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2109 | "revisionTime": "2017-07-23T04:49:35Z" 2110 | }, 2111 | { 2112 | "checksumSHA1": "nnD48uEKLyuT9T+DZHrSbMkMRCE=", 2113 | "path": "golang.org/x/crypto/ssh", 2114 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2115 | "revisionTime": "2017-07-23T04:49:35Z" 2116 | }, 2117 | { 2118 | "checksumSHA1": "ujKeyWHFOYmXm5IgAxfyFCGefsY=", 2119 | "path": "golang.org/x/crypto/ssh/agent", 2120 | "revision": "b176d7def5d71bdd214203491f89843ed217f420", 2121 | "revisionTime": "2017-07-23T04:49:35Z" 2122 | }, 2123 | { 2124 | "checksumSHA1": "dr5+PfIRzXeN+l1VG+s0lea9qz8=", 2125 | "path": "golang.org/x/net/context", 2126 | "revision": "090ebbdfc2aff44cc6674372b72e02e731f7f0ef", 2127 | "revisionTime": "2017-08-08T06:06:21Z" 2128 | }, 2129 | { 2130 | "checksumSHA1": "WHc3uByvGaMcnSoI21fhzYgbOgg=", 2131 | "path": "golang.org/x/net/context/ctxhttp", 2132 | "revision": "090ebbdfc2aff44cc6674372b72e02e731f7f0ef", 2133 | "revisionTime": "2017-08-08T06:06:21Z" 2134 | }, 2135 | { 2136 | "checksumSHA1": "vqc3a+oTUGX8PmD0TS+qQ7gmN8I=", 2137 | "path": "golang.org/x/net/html", 2138 | "revision": "090ebbdfc2aff44cc6674372b72e02e731f7f0ef", 2139 | "revisionTime": "2017-08-08T06:06:21Z" 2140 | }, 2141 | { 2142 | "checksumSHA1": "00eQaGynDYrv3tL+C7l9xH0IDZg=", 2143 | "path": "golang.org/x/net/html/atom", 2144 | "revision": "090ebbdfc2aff44cc6674372b72e02e731f7f0ef", 2145 | "revisionTime": "2017-08-08T06:06:21Z" 2146 | }, 2147 | { 2148 | "checksumSHA1": "/F4kBHR/0qnLRJgjKqlUo3Iksds=", 2149 | "path": "golang.org/x/oauth2", 2150 | "revision": "9a379c6b3e95a790ffc43293c2a78dee0d7b6e20", 2151 | "revisionTime": "2017-07-25T16:55:14Z" 2152 | }, 2153 | { 2154 | "checksumSHA1": "JTBn9MQUhwHtjwv7rC9Zg4KRN7g=", 2155 | "path": "golang.org/x/oauth2/google", 2156 | "revision": "9a379c6b3e95a790ffc43293c2a78dee0d7b6e20", 2157 | "revisionTime": "2017-07-25T16:55:14Z" 2158 | }, 2159 | { 2160 | "checksumSHA1": "eztsaK5Uim4juQOtqUf6VF+foD4=", 2161 | "path": "golang.org/x/oauth2/internal", 2162 | "revision": "9a379c6b3e95a790ffc43293c2a78dee0d7b6e20", 2163 | "revisionTime": "2017-07-25T16:55:14Z" 2164 | }, 2165 | { 2166 | "checksumSHA1": "huVltYnXdRFDJLgp/ZP9IALzG7g=", 2167 | "path": "golang.org/x/oauth2/jws", 2168 | "revision": "9a379c6b3e95a790ffc43293c2a78dee0d7b6e20", 2169 | "revisionTime": "2017-07-25T16:55:14Z" 2170 | }, 2171 | { 2172 | "checksumSHA1": "/eV4E08BY+f1ZikiR7OOMJAj3m0=", 2173 | "path": "golang.org/x/oauth2/jwt", 2174 | "revision": "9a379c6b3e95a790ffc43293c2a78dee0d7b6e20", 2175 | "revisionTime": "2017-07-25T16:55:14Z" 2176 | }, 2177 | { 2178 | "checksumSHA1": "fwb6FNBUs0SOyUpUx5R31Xf22GY=", 2179 | "path": "golang.org/x/sys/unix", 2180 | "revision": "d8f5ea21b9295e315e612b4bcf4bedea93454d4d", 2181 | "revisionTime": "2017-08-03T09:04:06Z" 2182 | }, 2183 | { 2184 | "checksumSHA1": "WEjuBZQrbJERSncK+GGSVXIPAhk=", 2185 | "path": "google.golang.org/api/gensupport", 2186 | "revision": "5c4ffd5985e22d25e9cadc37183b88c3a31497c2", 2187 | "revisionTime": "2017-08-07T18:53:53Z" 2188 | }, 2189 | { 2190 | "checksumSHA1": "BWKmb7kGYbfbvXO6E7tCpTh9zKE=", 2191 | "path": "google.golang.org/api/googleapi", 2192 | "revision": "5c4ffd5985e22d25e9cadc37183b88c3a31497c2", 2193 | "revisionTime": "2017-08-07T18:53:53Z" 2194 | }, 2195 | { 2196 | "checksumSHA1": "1K0JxrUfDqAB3MyRiU1LKjfHyf4=", 2197 | "path": "google.golang.org/api/googleapi/internal/uritemplates", 2198 | "revision": "5c4ffd5985e22d25e9cadc37183b88c3a31497c2", 2199 | "revisionTime": "2017-08-07T18:53:53Z" 2200 | }, 2201 | { 2202 | "checksumSHA1": "UEr27GqUNMaaOJI0pS8Ws9hlSL8=", 2203 | "path": "google.golang.org/api/storage/v1", 2204 | "revision": "5c4ffd5985e22d25e9cadc37183b88c3a31497c2", 2205 | "revisionTime": "2017-08-07T18:53:53Z" 2206 | }, 2207 | { 2208 | "checksumSHA1": "WPEbk80NB3Esdh4Yk0PXr2K7xVU=", 2209 | "path": "google.golang.org/appengine", 2210 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2211 | "revisionTime": "2017-08-01T18:31:37Z" 2212 | }, 2213 | { 2214 | "checksumSHA1": "4o2JkeR2LyUfZ7BQIzHUejyqKno=", 2215 | "path": "google.golang.org/appengine/internal", 2216 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2217 | "revisionTime": "2017-08-01T18:31:37Z" 2218 | }, 2219 | { 2220 | "checksumSHA1": "x6Thdfyasqd68dWZWqzWWeIfAfI=", 2221 | "path": "google.golang.org/appengine/internal/app_identity", 2222 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2223 | "revisionTime": "2017-08-01T18:31:37Z" 2224 | }, 2225 | { 2226 | "checksumSHA1": "TsNO8P0xUlLNyh3Ic/tzSp/fDWM=", 2227 | "path": "google.golang.org/appengine/internal/base", 2228 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2229 | "revisionTime": "2017-08-01T18:31:37Z" 2230 | }, 2231 | { 2232 | "checksumSHA1": "5QsV5oLGSfKZqTCVXP6NRz5T4Tw=", 2233 | "path": "google.golang.org/appengine/internal/datastore", 2234 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2235 | "revisionTime": "2017-08-01T18:31:37Z" 2236 | }, 2237 | { 2238 | "checksumSHA1": "Gep2T9zmVYV8qZfK2gu3zrmG6QE=", 2239 | "path": "google.golang.org/appengine/internal/log", 2240 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2241 | "revisionTime": "2017-08-01T18:31:37Z" 2242 | }, 2243 | { 2244 | "checksumSHA1": "eLZVX1EHLclFtQnjDIszsdyWRHo=", 2245 | "path": "google.golang.org/appengine/internal/modules", 2246 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2247 | "revisionTime": "2017-08-01T18:31:37Z" 2248 | }, 2249 | { 2250 | "checksumSHA1": "a1XY7rz3BieOVqVI2Et6rKiwQCk=", 2251 | "path": "google.golang.org/appengine/internal/remote_api", 2252 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2253 | "revisionTime": "2017-08-01T18:31:37Z" 2254 | }, 2255 | { 2256 | "checksumSHA1": "QtAbHtHmDzcf6vOV9eqlCpKgjiw=", 2257 | "path": "google.golang.org/appengine/internal/urlfetch", 2258 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2259 | "revisionTime": "2017-08-01T18:31:37Z" 2260 | }, 2261 | { 2262 | "checksumSHA1": "akOV9pYnCbcPA8wJUutSQVibdyg=", 2263 | "path": "google.golang.org/appengine/urlfetch", 2264 | "revision": "c5a90ac045b779001847fec87403f5cba090deae", 2265 | "revisionTime": "2017-08-01T18:31:37Z" 2266 | }, 2267 | { 2268 | "checksumSHA1": "o20lmjzBQyKD5LfLZ3OhUoMkLds=", 2269 | "path": "gopkg.in/yaml.v2", 2270 | "revision": "25c4ec802a7d637f88d584ab26798e94ad14c13b", 2271 | "revisionTime": "2017-07-21T12:20:51Z" 2272 | } 2273 | ], 2274 | "rootPath": "github.com/maxmanuylov/terraform-provider-kubernetes" 2275 | } 2276 | --------------------------------------------------------------------------------