diff --git a/.travis.yml b/.travis.yml index 8faf612f..71a01e29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ env: jobs: - ES_VERSION=5.6.16 ES_OSS_IMAGE=elasticsearch:${ES_VERSION} ES_IMAGE=docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION} ES_COMMAND="elasticsearch -Epath.repo=/tmp" - ES_VERSION=6.8.9 ES_OSS_IMAGE=docker.elastic.co/elasticsearch/elasticsearch-oss:${ES_VERSION} ES_IMAGE=docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION} ES_OPENDISTRO_IMAGE=amazon/opendistro-for-elasticsearch:0.9.0 - - ES_VERSION=7.6.1 ES_OSS_IMAGE=docker.elastic.co/elasticsearch/elasticsearch-oss:${ES_VERSION} ES_IMAGE=docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION} ES_OPENDISTRO_IMAGE=amazon/opendistro-for-elasticsearch:1.6.0 + - ES_VERSION=7.9.3 ES_OSS_IMAGE=docker.elastic.co/elasticsearch/elasticsearch-oss:${ES_VERSION} ES_IMAGE=docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION} ES_OPENDISTRO_IMAGE=amazon/opendistro-for-elasticsearch:1.6.0 addons: ssh_known_hosts: github.com apt: diff --git a/CHANGELOG.md b/CHANGELOG.md index b340d6f8..36bcecaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Allow provider variable interpolation by deferring client instanation, `providerConfigure` only returns a configuration struct. ### Added -- +- Composable Index Template resource, available in ESv7.8+ ## [1.5.0] - 2020-10-26 ### Changed diff --git a/docs/resources/composable_index_template.md b/docs/resources/composable_index_template.md new file mode 100644 index 00000000..013bbf75 --- /dev/null +++ b/docs/resources/composable_index_template.md @@ -0,0 +1,63 @@ +--- +layout: "elasticsearch" +page_title: "Elasticsearch: elasticsearch_composable_index_template" +subcategory: "Elasticsearch Opensource" +description: |- + Provides an Elasticsearch Composable index template resource. +--- + +# elasticsearch_composable_index_template + +Provides an Elasticsearch Composable index template resource. This resource uses the `/_index_template` +endpoint of Elasticsearch API that is available since version 7.8. Use `elasticsearch_index_template` if +you are using older versions of Elasticsearch or if you want to keep using legacy Index Templates in Elasticsearch 7.8+. + +## Example Usage + +```tf +# Create an index template +resource "elasticsearch_composable_index_template" "template_1" { + name = "template_1" + body = <= 7.8) Index template definition +For legacy index templates (ES < 7.8) or /_template endpoint on ES >= 7.8 see diffSuppressIndexTemplate. +*/ +func diffSuppressComposableIndexTemplate(k, old, new string, d *schema.ResourceData) bool { + var oo, no interface{} + if err := json.Unmarshal([]byte(old), &oo); err != nil { + return false + } + if err := json.Unmarshal([]byte(new), &no); err != nil { + return false + } + + if om, ok := oo.(map[string]interface{}); ok { + normalizeComposableIndexTemplate(om) + } + + if nm, ok := no.(map[string]interface{}); ok { + normalizeComposableIndexTemplate(nm) + } + + return reflect.DeepEqual(oo, no) +} + func diffSuppressDestination(k, old, new string, d *schema.ResourceData) bool { var oo, no interface{} if err := json.Unmarshal([]byte(old), &oo); err != nil { diff --git a/es/provider.go b/es/provider.go index 442f1666..afec0f70 100644 --- a/es/provider.go +++ b/es/provider.go @@ -168,6 +168,7 @@ func Provider() terraform.ResourceProvider { "elasticsearch_index": resourceElasticsearchIndex(), "elasticsearch_index_lifecycle_policy": resourceElasticsearchDeprecatedIndexLifecyclePolicy(), "elasticsearch_index_template": resourceElasticsearchIndexTemplate(), + "elasticsearch_composable_index_template": resourceElasticsearchComposableIndexTemplate(), "elasticsearch_ingest_pipeline": resourceElasticsearchIngestPipeline(), "elasticsearch_kibana_object": resourceElasticsearchKibanaObject(), "elasticsearch_monitor": resourceElasticsearchDeprecatedMonitor(), diff --git a/es/resource_elasticsearch_composable_index_template.go b/es/resource_elasticsearch_composable_index_template.go new file mode 100644 index 00000000..f0488471 --- /dev/null +++ b/es/resource_elasticsearch_composable_index_template.go @@ -0,0 +1,151 @@ +package es + +import ( + "context" + "encoding/json" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + elastic7 "github.com/olivere/elastic/v7" +) + +func resourceElasticsearchComposableIndexTemplate() *schema.Resource { + return &schema.Resource{ + Create: resourceElasticsearchComposableIndexTemplateCreate, + Read: resourceElasticsearchComposableIndexTemplateRead, + Update: resourceElasticsearchComposableIndexTemplateUpdate, + Delete: resourceElasticsearchComposableIndexTemplateDelete, + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + ForceNew: true, + Required: true, + }, + "body": { + Type: schema.TypeString, + Required: true, + DiffSuppressFunc: diffSuppressComposableIndexTemplate, + ValidateFunc: validation.StringIsJSON, + }, + }, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + } +} + +func resourceElasticsearchComposableIndexTemplateCreate(d *schema.ResourceData, meta interface{}) error { + err := resourceElasticsearchPutComposableIndexTemplate(d, meta, true) + if err != nil { + return err + } + d.SetId(d.Get("name").(string)) + return nil +} + +func resourceElasticsearchComposableIndexTemplateRead(d *schema.ResourceData, meta interface{}) error { + id := d.Id() + + var result, version string + var err error + switch client := meta.(type) { + case *elastic7.Client: + version, err = elastic7GetVersion(client) + if err == nil { + if version < "7.8.0" { + err = fmt.Errorf("index_template endpoint only available from ElasticSearch >= 7.8, got version %s", version) + } else { + result, err = elastic7GetIndexTemplate(client, id) + } + } + default: + err = fmt.Errorf("index_template endpoint only available from ElasticSearch >= 7.8, got version < 7.0.0") + } + if err != nil { + if elastic7.IsNotFound(err) { + log.Printf("[WARN] Index template (%s) not found, removing from state", id) + d.SetId("") + return nil + } + + return err + } + + ds := &resourceDataSetter{d: d} + ds.set("name", d.Id()) + ds.set("body", result) + return ds.err +} + +func elastic7GetIndexTemplate(client *elastic7.Client, id string) (string, error) { + res, err := client.IndexGetIndexTemplate(id).Do(context.TODO()) + if err != nil { + return "", err + } + + // No more than 1 element is expected, if the index template is not found, previous call should + // return a 404 error + t := res.IndexTemplates[0].IndexTemplate + tj, err := json.Marshal(t) + if err != nil { + return "", err + } + return string(tj), nil +} + +func resourceElasticsearchComposableIndexTemplateUpdate(d *schema.ResourceData, meta interface{}) error { + return resourceElasticsearchPutComposableIndexTemplate(d, meta, false) +} + +func resourceElasticsearchComposableIndexTemplateDelete(d *schema.ResourceData, meta interface{}) error { + id := d.Id() + + var version string + var err error + switch client := meta.(type) { + case *elastic7.Client: + version, err = elastic7GetVersion(client) + if err == nil { + if version < "7.8.0" { + err = fmt.Errorf("index_template endpoint only available from ElasticSearch >= 7.8, got version %s", version) + } else { + err = elastic7DeleteIndexTemplate(client, id) + } + } + default: + err = fmt.Errorf("index_template endpoint only available from ElasticSearch >= 7.8, got version < 7.0.0") + } + + if err != nil { + return err + } + d.SetId("") + return nil +} + +func elastic7DeleteIndexTemplate(client *elastic7.Client, id string) error { + _, err := client.IndexDeleteIndexTemplate(id).Do(context.TODO()) + return err +} + +func resourceElasticsearchPutComposableIndexTemplate(d *schema.ResourceData, meta interface{}, create bool) error { + name := d.Get("name").(string) + body := d.Get("body").(string) + + var err error + switch client := meta.(type) { + case *elastic7.Client: + err = elastic7PutIndexTemplate(client, name, body, create) + default: + err = fmt.Errorf("index_template endpoint only available from ElasticSearch >= 7.8, got version < 7.0.0") + } + + return err +} + +func elastic7PutIndexTemplate(client *elastic7.Client, name string, body string, create bool) error { + _, err := client.IndexPutIndexTemplate(name).BodyString(body).Create(create).Do(context.TODO()) + return err +} diff --git a/es/resource_elasticsearch_composable_index_template_test.go b/es/resource_elasticsearch_composable_index_template_test.go new file mode 100644 index 00000000..0f1ea030 --- /dev/null +++ b/es/resource_elasticsearch_composable_index_template_test.go @@ -0,0 +1,172 @@ +package es + +import ( + "context" + "errors" + "fmt" + "testing" + + elastic7 "github.com/olivere/elastic/v7" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/terraform" +) + +func TestAccElasticsearchComposableIndexTemplate(t *testing.T) { + provider := Provider().(*schema.Provider) + err := provider.Configure(&terraform.ResourceConfig{}) + if err != nil { + t.Skipf("err: %s", err) + } + meta := provider.Meta() + var allowed bool + switch meta.(type) { + case *elastic7.Client: + allowed = true + default: + allowed = false + } + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + if !allowed { + t.Skip("/_index_template endpoint only supported on ES >= 7.8") + } + }, + Providers: testAccProviders, + CheckDestroy: testCheckElasticsearchComposableIndexTemplateDestroy, + Steps: []resource.TestStep{ + { + Config: testAccElasticsearchComposableIndexTemplate, + Check: resource.ComposeTestCheckFunc( + testCheckElasticsearchComposableIndexTemplateExists("elasticsearch_composable_index_template.test"), + ), + }, + }, + }) +} + +func TestAccElasticsearchComposableIndexTemplate_importBasic(t *testing.T) { + provider := Provider().(*schema.Provider) + err := provider.Configure(&terraform.ResourceConfig{}) + if err != nil { + t.Skipf("err: %s", err) + } + meta := provider.Meta() + var allowed bool + switch meta.(type) { + case *elastic7.Client: + allowed = true + default: + allowed = false + } + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + if !allowed { + t.Skip("/_index_template endpoint only supported on ES >= 7.8") + } + }, + Providers: testAccProviders, + CheckDestroy: testCheckElasticsearchComposableIndexTemplateDestroy, + Steps: []resource.TestStep{ + { + Config: testAccElasticsearchComposableIndexTemplate, + }, + { + ResourceName: "elasticsearch_composable_index_template.test", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testCheckElasticsearchComposableIndexTemplateExists(name string) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return fmt.Errorf("Not found: %s", name) + } + if rs.Primary.ID == "" { + return fmt.Errorf("No index template ID is set") + } + + meta := testAccProvider.Meta() + + var err error + switch client := meta.(type) { + case *elastic7.Client: + _, err = client.IndexGetIndexTemplate(rs.Primary.ID).Do(context.TODO()) + default: + err = errors.New("/_index_template endpoint only supported on ES >= 7.8") + } + + if err != nil { + return err + } + + return nil + } +} + +func testCheckElasticsearchComposableIndexTemplateDestroy(s *terraform.State) error { + for _, rs := range s.RootModule().Resources { + if rs.Type != "elasticsearch_composable_index_template" { + continue + } + + meta := testAccProvider.Meta() + + var err error + switch client := meta.(type) { + case *elastic7.Client: + _, err = client.IndexGetTemplate(rs.Primary.ID).Do(context.TODO()) + default: + err = errors.New("/_index_template endpoint only supported on ES >= 7.8") + } + + if err != nil { + return nil // should be not found error + } + + return fmt.Errorf("Index template %q still exists", rs.Primary.ID) + } + + return nil +} + +var testAccElasticsearchComposableIndexTemplate = ` +resource "elasticsearch_composable_index_template" "test" { + name = "terraform-test" + body = <= 7.8) Index template definition. +For legacy index templates (ES < 7.8) or /_template endpoint on ES >= 7.8 see normalizeIndexTemplate. +*/ +func normalizeComposableIndexTemplate(tpl map[string]interface{}) { + delete(tpl, "version") + if innerTpl, ok := tpl["template"]; ok { + if innerTplMap, ok := innerTpl.(map[string]interface{}); ok { + if settings, ok := innerTplMap["settings"]; ok { + if settingsMap, ok := settings.(map[string]interface{}); ok { + innerTplMap["settings"] = normalizedIndexSettings(settingsMap) + } + } + } + } +} + func normalizedIndexSettings(settings map[string]interface{}) map[string]interface{} { f := flattenMap(settings) for k, v := range f { @@ -478,3 +497,8 @@ func tenantPermissionsHash(v interface{}) int { return hashcode.String(buf.String()) } + +func elastic7GetVersion(client *elastic7.Client) (string, error) { + urls := reflect.ValueOf(client).Elem().FieldByName("urls") + return client.ElasticsearchVersion(urls.Index(0).String()) +} diff --git a/go.mod b/go.mod index 105bc681..22bf0e7c 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/deoxxa/aws_signing_client v0.0.0-20161109131055-c20ee106809e github.com/hashicorp/terraform-plugin-sdk v1.12.0 github.com/olivere/elastic v6.2.26+incompatible - github.com/olivere/elastic/v7 v7.0.19 + github.com/olivere/elastic/v7 v7.0.22 gopkg.in/olivere/elastic.v5 v5.0.85 gopkg.in/olivere/elastic.v6 v6.2.35 ) diff --git a/go.sum b/go.sum index 1b95a456..8e20931c 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,7 @@ github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3A github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.29.11 h1:f1QJRPu30p0i1lzKhkSSaZFudFGCra2HKgdE442nN6c= github.com/aws/aws-sdk-go v1.29.11/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= -github.com/aws/aws-sdk-go v1.33.5 h1:p2fr1ryvNTU6avUWLI+/H7FGv0TBIjzVM5WDgXBBv4U= -github.com/aws/aws-sdk-go v1.33.5/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.35.20/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.35.33 h1:8qPRZqCRok5i7VNN51k/Ky7CuyoXMdSs4mUfKyCqvPw= github.com/aws/aws-sdk-go v1.35.33/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= @@ -78,8 +77,8 @@ github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -134,12 +133,12 @@ github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKe github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -154,6 +153,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mailru/easyjson v0.7.1 h1:mdxE1MF9o53iCb2Ghj1VfWvh7ZOwHpnVG/xwXrV90U8= github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= @@ -190,8 +191,8 @@ github.com/olivere/elastic v6.2.26+incompatible h1:3PjUHKyt8xKwbFQpRC5cgtEY7Qz6e github.com/olivere/elastic v6.2.26+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= github.com/olivere/elastic/v7 v7.0.12 h1:91kj/UMKWQt8VAHBm5BDHpVmzdfPCmICaUFy2oH4LkQ= github.com/olivere/elastic/v7 v7.0.12/go.mod h1:14rWX28Pnh3qCKYRVnSGXWLf9MbLonYS/4FDCY3LAPo= -github.com/olivere/elastic/v7 v7.0.19 h1:w4F6JpqOISadhYf/n0NR1cNj73xHqh4pzPwD1Gkidts= -github.com/olivere/elastic/v7 v7.0.19/go.mod h1:4Jqt5xvjqpjCqgnTcHwl3j8TLs8mvoOK8NYgo/qEOu4= +github.com/olivere/elastic/v7 v7.0.22 h1:esBA6JJwvYgfms0EVlH7Z+9J4oQ/WUADF2y/nCNDw7s= +github.com/olivere/elastic/v7 v7.0.22/go.mod h1:VDexNy9NjmtAkrjNoI7tImv7FR4tf5zUA3ickqu5Pc8= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -209,7 +210,7 @@ github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUr github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/gunit v1.1.3/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= -github.com/smartystreets/gunit v1.3.4/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= +github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -239,8 +240,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=