From 4a7bf1ec16521748beed2338c426ba737003c827 Mon Sep 17 00:00:00 2001 From: Trevor Rosen Date: Mon, 13 Jan 2020 20:36:23 -0600 Subject: [PATCH] working alerts; usable errors --- .gitignore | 1 + CHANGELOG.md | 6 - Gopkg.lock | 756 ------------------ Gopkg.toml | 42 - GNUmakefile => Makefile | 27 +- appoptics/provider.go | 5 +- appoptics/resource_appoptics_alert.go | 15 +- ...metric.go => resource_appoptics_metric.go} | 112 +-- ...t.go => resource_appoptics_metric_test.go} | 35 +- appoptics/resource_librato_space_chart.go | 315 ++++---- .../resource_librato_space_chart_test.go | 69 +- go.mod | 46 ++ go.sum | 515 ++++++++++++ main.go | 3 +- 14 files changed, 868 insertions(+), 1079 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml rename GNUmakefile => Makefile (57%) rename appoptics/{resource_librato_metric.go => resource_appoptics_metric.go} (77%) rename appoptics/{resource_librato_metric_test.go => resource_appoptics_metric_test.go} (78%) create mode 100644 go.mod create mode 100644 go.sum diff --git a/.gitignore b/.gitignore index 5982d2c..4cbf01e 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ website/vendor # Test exclusions !command/test-fixtures/**/*.tfstate !command/test-fixtures/**/.terraform/ +terraform-provider-appoptics diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 5e0f9aa..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,6 +0,0 @@ -## 0.1.1 (Unreleased) -## 0.1.0 (June 21, 2017) - -NOTES: - -* Same functionality as that of Terraform 0.9.8. Repacked as part of [Provider Splitout](https://www.hashicorp.com/blog/upcoming-provider-changes-in-terraform-0-10/) diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index df18914..0000000 --- a/Gopkg.lock +++ /dev/null @@ -1,756 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:ab38507dcaeb1aec1b6b8b425151c94ad9468812d214e546bf75d77d13f9e9c1" - name = "cloud.google.com/go" - packages = [ - "compute/metadata", - "iam", - "internal", - "internal/optional", - "internal/trace", - "internal/version", - "storage", - ] - pruneopts = "UT" - revision = "458e1f376a2b44413160b5d301183b65debaa3f6" - version = "v0.37.2" - -[[projects]] - digest = "1:90afd0cfdffcc3df7855160ee2954cbca286e23c4eb9cb3d075536c9e4e1b04f" - name = "github.com/agext/levenshtein" - packages = ["."] - pruneopts = "UT" - revision = "0ded9c86537917af2ff89bc9c78de6bd58477894" - version = "v1.2.2" - -[[projects]] - branch = "master" - digest = "1:a09ee1e40d2b11876cf01babfda8b9bdf6fcd03dee8a256dc3f1ed49b0e5d9ff" - name = "github.com/akahn/go-librato" - packages = ["librato"] - pruneopts = "UT" - revision = "994aa1265ee623bf8d16aff41b041a532bebcf25" - -[[projects]] - digest = "1:1929b21a34400d463a99336f8e2908d2a154dc525c52411a8d99bb519942dc4c" - name = "github.com/apparentlymart/go-cidr" - packages = ["cidr"] - pruneopts = "UT" - revision = "b1115bf8e14a60131a196f908223e4506b0ddc35" - version = "v1.0.0" - -[[projects]] - digest = "1:2bf7da77216264bb61bd8cb5f3380a03ab509e8a826fe359008d4a6ba0789b13" - name = "github.com/apparentlymart/go-textseg" - packages = ["textseg"] - pruneopts = "UT" - revision = "fb01f485ebef760e5ee06d55e1b07534dda2d295" - version = "v1.0.0" - -[[projects]] - digest = "1:3083879473b3880eade76ded4e6c34c9374283dc39e056c6ba54733ff0868567" - name = "github.com/appoptics/appoptics-api-go" - packages = ["."] - pruneopts = "UT" - revision = "948a740c2a0927e5049310e23f6a1beb6f2f1c0a" - version = "0.5.1" - -[[projects]] - digest = "1:c47f4964978e211c6e566596ec6246c329912ea92e9bb99c00798bb4564c5b09" - name = "github.com/armon/go-radix" - packages = ["."] - pruneopts = "UT" - revision = "1a2de0c21c94309923825da3df33a4381872c795" - version = "v1.0.0" - -[[projects]] - digest = "1:ced9b678d6fdca06376ad5a1203bf7ab164a500268714fedaebdb3b9e90e6530" - name = "github.com/aws/aws-sdk-go" - packages = [ - "aws", - "aws/awserr", - "aws/awsutil", - "aws/client", - "aws/client/metadata", - "aws/corehandlers", - "aws/credentials", - "aws/credentials/ec2rolecreds", - "aws/credentials/endpointcreds", - "aws/credentials/processcreds", - "aws/credentials/stscreds", - "aws/csm", - "aws/defaults", - "aws/ec2metadata", - "aws/endpoints", - "aws/request", - "aws/session", - "aws/signer/v4", - "internal/ini", - "internal/s3err", - "internal/sdkio", - "internal/sdkrand", - "internal/sdkuri", - "internal/shareddefaults", - "private/protocol", - "private/protocol/eventstream", - "private/protocol/eventstream/eventstreamapi", - "private/protocol/query", - "private/protocol/query/queryutil", - "private/protocol/rest", - "private/protocol/restxml", - "private/protocol/xml/xmlutil", - "service/s3", - "service/sts", - ] - pruneopts = "UT" - revision = "56c1def75689cceec1fa6f14c2eedb4b798827f9" - version = "v1.19.11" - -[[projects]] - branch = "master" - digest = "1:37011b20a70e205b93ebea5287e1afa5618db54bf3998c36ff5a8e4b146a170a" - name = "github.com/bgentry/go-netrc" - packages = ["netrc"] - pruneopts = "UT" - revision = "9fd32a8b3d3d3f9d43c341bfe098430e07609480" - -[[projects]] - digest = "1:1343a2963481a305ca4d051e84bc2abd16b601ee22ed324f8d605de1adb291b0" - name = "github.com/bgentry/speakeasy" - packages = ["."] - pruneopts = "UT" - revision = "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd" - version = "v0.1.0" - -[[projects]] - digest = "1:705c40022f5c03bf96ffeb6477858d88565064485a513abcd0f11a0911546cb6" - name = "github.com/blang/semver" - packages = ["."] - pruneopts = "UT" - revision = "2ee87856327ba09384cabd113bc6b5d174e9ec0f" - version = "v3.5.1" - -[[projects]] - digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "UT" - revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" - version = "v1.1.1" - -[[projects]] - digest = "1:865079840386857c809b72ce300be7580cb50d3d3129ce11bf9aa6ca2bc1934a" - name = "github.com/fatih/color" - packages = ["."] - pruneopts = "UT" - revision = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4" - version = "v1.7.0" - -[[projects]] - digest = "1:64c2b533ffd17023738c534548ab2455d7f519bc15ed4225145425ed2222448b" - name = "github.com/golang/protobuf" - packages = [ - "proto", - "protoc-gen-go/descriptor", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/timestamp", - ] - pruneopts = "UT" - revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" - version = "v1.3.1" - -[[projects]] - digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a" - name = "github.com/google/go-cmp" - packages = [ - "cmp", - "cmp/internal/diff", - "cmp/internal/function", - "cmp/internal/value", - ] - pruneopts = "UT" - revision = "3af367b6b30c263d47e8895973edcca9a49cf029" - version = "v0.2.0" - -[[projects]] - digest = "1:a63cff6b5d8b95638bfe300385d93b2a6d9d687734b863da8e09dc834510a690" - name = "github.com/google/go-querystring" - packages = ["query"] - pruneopts = "UT" - revision = "44c6ddd0a2342c386950e880b658017258da92fc" - version = "v1.0.0" - -[[projects]] - digest = "1:f1f70abea1ab125d48396343b4c053f8fecfbdb943037bf3d29dc80c90fe60b3" - name = "github.com/googleapis/gax-go" - packages = ["v2"] - pruneopts = "UT" - revision = "beaecbbdd8af86aa3acf14180d53828ce69400b2" - version = "v2.0.4" - -[[projects]] - digest = "1:0ade334594e69404d80d9d323445d2297ff8161637f9b2d347cc6973d2d6f05b" - name = "github.com/hashicorp/errwrap" - packages = ["."] - pruneopts = "UT" - revision = "8a6fb523712970c966eefc6b39ed2c5e74880354" - version = "v1.0.0" - -[[projects]] - digest = "1:af105c7c5dc0b4ae41991f122cae860b9600f7d226072c2a83127048c991660c" - name = "github.com/hashicorp/go-cleanhttp" - packages = ["."] - pruneopts = "UT" - revision = "eda1e5db218aad1db63ca4642c8906b26bcf2744" - version = "v0.5.1" - -[[projects]] - digest = "1:40e5d51a6c2574d26ad17ef8e04c9caf5fce865ab6bd3c2277ba77504bae615b" - name = "github.com/hashicorp/go-getter" - packages = [ - ".", - "helper/url", - ] - pruneopts = "UT" - revision = "e1437d0bbb37a1fa61cdb924b034352c823cb89b" - version = "v1.2.0" - -[[projects]] - digest = "1:f6ecb0dc7d965d75815729fd300cc0cd17004fb2d6172a7f37192494936942e5" - name = "github.com/hashicorp/go-hclog" - packages = ["."] - pruneopts = "UT" - revision = "6907afbebd2eef854f0be9194eb79b0ba75d7b29" - version = "v0.8.0" - -[[projects]] - digest = "1:f668349b83f7d779567c880550534addeca7ebadfdcf44b0b9c39be61864b4b7" - name = "github.com/hashicorp/go-multierror" - packages = ["."] - pruneopts = "UT" - revision = "886a7fbe3eb1c874d46f623bfa70af45f425b3d1" - version = "v1.0.0" - -[[projects]] - digest = "1:5e1aece859ec4195f3d16dd3b64a0f111e186b9e95d75141465595063e3a5254" - name = "github.com/hashicorp/go-plugin" - packages = [ - ".", - "internal/plugin", - ] - pruneopts = "UT" - revision = "52e1c4730856c1438ced7597c9b5c585a7bd06a2" - version = "v1.0.0" - -[[projects]] - digest = "1:605c47454db9040e30b20dc1b29e3e9d42d6ee742545729cdef74afb1b898ad0" - name = "github.com/hashicorp/go-safetemp" - packages = ["."] - pruneopts = "UT" - revision = "c9a55de4fe06c920a71964b53cfe3dd293a3c743" - version = "v1.0.0" - -[[projects]] - digest = "1:f14364057165381ea296e49f8870a9ffce2b8a95e34d6ae06c759106aaef428c" - name = "github.com/hashicorp/go-uuid" - packages = ["."] - pruneopts = "UT" - revision = "4f571afc59f3043a65f8fe6bf46d887b10a01d43" - version = "v1.0.1" - -[[projects]] - digest = "1:950caca7dfcf796419232ba996c9c3539d09f26af27ba848c4508e604c13efbb" - name = "github.com/hashicorp/go-version" - packages = ["."] - pruneopts = "UT" - revision = "d40cf49b3a77bba84a7afdbd7f1dc295d114efb1" - version = "v1.1.0" - -[[projects]] - digest = "1:67474f760e9ac3799f740db2c489e6423a4cde45520673ec123ac831ad849cb8" - name = "github.com/hashicorp/golang-lru" - packages = ["simplelru"] - pruneopts = "UT" - revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" - version = "v0.5.1" - -[[projects]] - digest = "1:ea40c24cdbacd054a6ae9de03e62c5f252479b96c716375aace5c120d68647c8" - name = "github.com/hashicorp/hcl" - packages = [ - ".", - "hcl/ast", - "hcl/parser", - "hcl/scanner", - "hcl/strconv", - "hcl/token", - "json/parser", - "json/scanner", - "json/token", - ] - pruneopts = "UT" - revision = "8cb6e5b959231cc1119e43259c4a608f9c51a241" - version = "v1.0.0" - -[[projects]] - branch = "master" - digest = "1:4c168608db33f79fe8a550c8d0a773ce0516fe0a14b15c86f30d125b58ad9ca1" - name = "github.com/hashicorp/hcl2" - packages = [ - "gohcl", - "hcl", - "hcl/hclsyntax", - "hcl/json", - "hcldec", - "hclparse", - "hclwrite", - ] - pruneopts = "UT" - revision = "8b450a7d58f92d440d1a68555738727908ecc089" - -[[projects]] - branch = "master" - digest = "1:391639adf2951fb9fc72dbbec317f7bc95e7b379a822abe5ea3c140ffeb7a562" - name = "github.com/hashicorp/hil" - packages = [ - ".", - "ast", - "parser", - "scanner", - ] - pruneopts = "UT" - revision = "97b3a9cdfa9349086cfad7ea2fe3165bfe3cbf63" - -[[projects]] - digest = "1:16ae35b3a854c667baaf55ff5d455c486f7c2baf040a2727f2ef0e4b096b2a95" - name = "github.com/hashicorp/logutils" - packages = ["."] - pruneopts = "UT" - revision = "a335183dfd075f638afcc820c90591ca3c97eba6" - version = "v1.0.0" - -[[projects]] - digest = "1:5ae878d184c1e1bb2b8196d26793c084651279c703a54ca5eb931e3f450d2a6e" - name = "github.com/hashicorp/terraform" - packages = [ - "config", - "config/configschema", - "config/hcl2shim", - "config/module", - "dag", - "flatmap", - "helper/acctest", - "helper/config", - "helper/hashcode", - "helper/hilmapstructure", - "helper/logging", - "helper/resource", - "helper/schema", - "httpclient", - "moduledeps", - "plugin", - "plugin/discovery", - "registry", - "registry/regsrc", - "registry/response", - "svchost", - "svchost/auth", - "svchost/disco", - "terraform", - "tfdiags", - "version", - ] - pruneopts = "UT" - revision = "d48069534832fdb09919a5fe46500755540cbf0a" - version = "v0.11.13" - -[[projects]] - branch = "master" - digest = "1:a4826c308e84f5f161b90b54a814f0be7d112b80164b9b884698a6903ea47ab3" - name = "github.com/hashicorp/yamux" - packages = ["."] - pruneopts = "UT" - revision = "2f1d1f20f75d5404f53b9edf6b53ed5505508675" - -[[projects]] - digest = "1:bb81097a5b62634f3e9fec1014657855610c82d19b9a40c17612e32651e35dca" - name = "github.com/jmespath/go-jmespath" - packages = ["."] - pruneopts = "UT" - revision = "c2b33e84" - -[[projects]] - digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" - name = "github.com/konsorten/go-windows-terminal-sequences" - packages = ["."] - pruneopts = "UT" - revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" - version = "v1.0.2" - -[[projects]] - digest = "1:c658e84ad3916da105a761660dcaeb01e63416c8ec7bc62256a9b411a05fcd67" - name = "github.com/mattn/go-colorable" - packages = ["."] - pruneopts = "UT" - revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" - version = "v0.0.9" - -[[projects]] - digest = "1:e150b5fafbd7607e2d638e4e5cf43aa4100124e5593385147b0a74e2733d8b0d" - name = "github.com/mattn/go-isatty" - packages = ["."] - pruneopts = "UT" - revision = "c2a7a6ca930a4cd0bc33a3f298eb71960732a3a7" - version = "v0.0.7" - -[[projects]] - digest = "1:dac0667a3fcdd4102a5da07abeddc89eb2f125b1e91af1ea9544c80eaff19c9a" - name = "github.com/mitchellh/cli" - packages = ["."] - pruneopts = "UT" - revision = "3d22a244be8aa6fb16ac24af0e195c08b7d973aa" - version = "v1.0.0" - -[[projects]] - digest = "1:09ca328575f38b80969ccf857f6d7302f2ce09d53778ea7aaba526cfd2cec739" - name = "github.com/mitchellh/copystructure" - packages = ["."] - pruneopts = "UT" - revision = "9a1b6f44e8da0e0e374624fb0a825a231b00c537" - version = "v1.0.0" - -[[projects]] - digest = "1:5d231480e1c64a726869bc4142d270184c419749d34f167646baa21008eb0a79" - name = "github.com/mitchellh/go-homedir" - packages = ["."] - pruneopts = "UT" - revision = "af06845cf3004701891bf4fdb884bfe4920b3727" - version = "v1.1.0" - -[[projects]] - digest = "1:42eb1f52b84a06820cedc9baec2e710bfbda3ee6dac6cdb97f8b9a5066134ec6" - name = "github.com/mitchellh/go-testing-interface" - packages = ["."] - pruneopts = "UT" - revision = "6d0b8010fcc857872e42fc6c931227569016843c" - version = "v1.0.0" - -[[projects]] - digest = "1:abf08734a6527df70ed361d7c369fb580e6840d8f7a6012e5f609fdfd93b4e48" - name = "github.com/mitchellh/go-wordwrap" - packages = ["."] - pruneopts = "UT" - revision = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c" - version = "v1.0.0" - -[[projects]] - digest = "1:61332bb44d05257bbf0356d8400a8b30fe0b9fdc3b72b8b55661da8f0a4f39ae" - name = "github.com/mitchellh/hashstructure" - packages = ["."] - pruneopts = "UT" - revision = "a38c50148365edc8df43c1580c48fb2b3a1e9cd7" - version = "v1.0.0" - -[[projects]] - digest = "1:53bc4cd4914cd7cd52139990d5170d6dc99067ae31c56530621b18b35fc30318" - name = "github.com/mitchellh/mapstructure" - packages = ["."] - pruneopts = "UT" - revision = "3536a929edddb9a5b34bd6861dc4a9647cb459fe" - version = "v1.1.2" - -[[projects]] - digest = "1:bcc07ad6f62e6d8958692ff89c8ac1c64eb92de66330f98b7e9bdb72cc017a84" - name = "github.com/mitchellh/reflectwalk" - packages = ["."] - pruneopts = "UT" - revision = "eecee6c969c02c8cc2ae48e1e269843ae8590796" - version = "v1.0.0" - -[[projects]] - digest = "1:9ec6cf1df5ad1d55cf41a43b6b1e7e118a91bade4f68ff4303379343e40c0e25" - name = "github.com/oklog/run" - packages = ["."] - pruneopts = "UT" - revision = "4dadeb3030eda0273a12382bb2348ffc7c9d1a39" - version = "v1.0.0" - -[[projects]] - digest = "1:57e168c6dfcc02c1c53bdf1589afbef59694d819cac65bfd3a855de2256d4950" - name = "github.com/posener/complete" - packages = [ - ".", - "cmd", - "cmd/install", - "match", - ] - pruneopts = "UT" - revision = "3ef9b31a6a0613ae832e7ecf208374027c3b2343" - version = "v1.2.1" - -[[projects]] - digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" - name = "github.com/sirupsen/logrus" - packages = ["."] - pruneopts = "UT" - revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" - version = "v1.4.1" - -[[projects]] - digest = "1:2643d81498e38e44bdcf480be199cac55f29e97403b0342d962824bfe9960722" - name = "github.com/ulikunitz/xz" - packages = [ - ".", - "internal/hash", - "internal/xlog", - "lzma", - ] - pruneopts = "UT" - revision = "6f934d456d51e742b4eeab20d925a827ef22320a" - version = "v0.5.6" - -[[projects]] - branch = "master" - digest = "1:96f66451bd53c6ac6a476bd353522d78b96a17e1f20e71793f5faee2b06b1bf5" - name = "github.com/zclconf/go-cty" - packages = [ - "cty", - "cty/convert", - "cty/function", - "cty/function/stdlib", - "cty/gocty", - "cty/json", - "cty/set", - ] - pruneopts = "UT" - revision = "fd76348b9329dc6f3bd4b87a45ae9e5fb72bffbc" - -[[projects]] - digest = "1:b7ef726b2ea58476971d3aef8364568ea34ed2c3b11c929572a27d6d2ab639d3" - name = "go.opencensus.io" - packages = [ - ".", - "internal", - "internal/tagencoding", - "metric/metricdata", - "metric/metricproducer", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", - "resource", - "stats", - "stats/internal", - "stats/view", - "tag", - "trace", - "trace/internal", - "trace/propagation", - "trace/tracestate", - ] - pruneopts = "UT" - revision = "46618d076d80f4eab85adbcb3be9a370be1dc4e0" - version = "v0.20.0" - -[[projects]] - branch = "master" - digest = "1:f72839ec8bd2212dd2918e179c94d8f804fba42b69f392322f10a297a7119f48" - name = "golang.org/x/crypto" - packages = [ - "bcrypt", - "blowfish", - "cast5", - "curve25519", - "ed25519", - "ed25519/internal/edwards25519", - "internal/chacha20", - "internal/subtle", - "openpgp", - "openpgp/armor", - "openpgp/elgamal", - "openpgp/errors", - "openpgp/packet", - "openpgp/s2k", - "poly1305", - "ssh", - ] - pruneopts = "UT" - revision = "38d8ce5564a5b71b2e3a00553993f1b9a7ae852f" - -[[projects]] - branch = "master" - digest = "1:99881ddf4ae17ca150dde030618d8d45edff291209c6b265577583623755c36f" - name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp", - "html", - "html/atom", - "http/httpguts", - "http2", - "http2/hpack", - "idna", - "internal/timeseries", - "trace", - ] - pruneopts = "UT" - revision = "eb5bcb51f2a31c7d5141d810b70815c05d9c9146" - -[[projects]] - branch = "master" - digest = "1:645cb780e4f3177111b40588f0a7f5950efcfb473e7ff41d8d81b2ba5eaa6ed5" - name = "golang.org/x/oauth2" - packages = [ - ".", - "google", - "internal", - "jws", - "jwt", - ] - pruneopts = "UT" - revision = "9f3314589c9a9136388751d9adae6b0ed400978a" - -[[projects]] - branch = "master" - digest = "1:d78755393cc6ee9bd63b4debeed9be209517adc3296e61ecdf97590b15260f45" - name = "golang.org/x/sys" - packages = [ - "cpu", - "unix", - ] - pruneopts = "UT" - revision = "4b34438f7a67ee5f45cc6132e2bad873a20324e9" - -[[projects]] - digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" - name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - ] - pruneopts = "UT" - revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" - version = "v0.3.0" - -[[projects]] - digest = "1:c3122cc7545e8273cde2b1fccc37282903d65a99b1bbc0b1d7be138a020a96fc" - name = "google.golang.org/api" - packages = [ - "gensupport", - "googleapi", - "googleapi/internal/uritemplates", - "googleapi/transport", - "internal", - "iterator", - "option", - "storage/v1", - "transport/http", - "transport/http/internal/propagation", - ] - pruneopts = "UT" - revision = "bce707a4d0ea3488942724b3bcc1c8338f38f991" - version = "v0.3.0" - -[[projects]] - digest = "1:04f2ff15fc59e1ddaf9900ad0e19e5b19586b31f9dafd4d592b617642b239d8f" - name = "google.golang.org/appengine" - packages = [ - ".", - "internal", - "internal/app_identity", - "internal/base", - "internal/datastore", - "internal/log", - "internal/modules", - "internal/remote_api", - "internal/urlfetch", - "urlfetch", - ] - pruneopts = "UT" - revision = "54a98f90d1c46b7731eb8fb305d2a321c30ef610" - version = "v1.5.0" - -[[projects]] - branch = "master" - digest = "1:586ec7b76eccd31e3d6468139eb7fabec6fe3fee23750dac52e87f6849630f69" - name = "google.golang.org/genproto" - packages = [ - "googleapis/api/annotations", - "googleapis/iam/v1", - "googleapis/rpc/code", - "googleapis/rpc/status", - ] - pruneopts = "UT" - revision = "64821d5d210748c883cd2b809589555ae4654203" - -[[projects]] - digest = "1:0a9f19dcf84d47ea582c0f4db5dbf91f274596a88294198ec15bd0516caac6b2" - name = "google.golang.org/grpc" - packages = [ - ".", - "balancer", - "balancer/base", - "balancer/roundrobin", - "binarylog/grpc_binarylog_v1", - "codes", - "connectivity", - "credentials", - "credentials/internal", - "encoding", - "encoding/proto", - "grpclog", - "health", - "health/grpc_health_v1", - "internal", - "internal/backoff", - "internal/binarylog", - "internal/channelz", - "internal/envconfig", - "internal/grpcrand", - "internal/grpcsync", - "internal/syscall", - "internal/transport", - "keepalive", - "metadata", - "naming", - "peer", - "resolver", - "resolver/dns", - "resolver/passthrough", - "stats", - "status", - "tap", - ] - pruneopts = "UT" - revision = "3507fb8e1a5ad030303c106fef3a47c9fdad16ad" - version = "v1.19.1" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/akahn/go-librato/librato", - "github.com/appoptics/appoptics-api-go", - "github.com/hashicorp/terraform/helper/acctest", - "github.com/hashicorp/terraform/helper/hashcode", - "github.com/hashicorp/terraform/helper/resource", - "github.com/hashicorp/terraform/helper/schema", - "github.com/hashicorp/terraform/plugin", - "github.com/hashicorp/terraform/terraform", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index b4c4782..0000000 --- a/Gopkg.toml +++ /dev/null @@ -1,42 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - branch = "master" - name = "github.com/akahn/go-librato" - -[[constraint]] - name = "github.com/appoptics/appoptics-api-go" - version = ">=0.5.1" - -[[constraint]] - name = "github.com/hashicorp/terraform" - version = "0.11.13" - -[prune] - go-tests = true - unused-packages = true diff --git a/GNUmakefile b/Makefile similarity index 57% rename from GNUmakefile rename to Makefile index 902b3d1..2122879 100644 --- a/GNUmakefile +++ b/Makefile @@ -1,12 +1,17 @@ TEST?=$$(go list ./... |grep -v 'vendor') -GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor) WEBSITE_REPO=github.com/hashicorp/terraform-website PKG_NAME=librato +plugin_name=terraform-provider-appoptics +plugin_path=~/.terraform.d/plugins + default: build -build: fmtcheck - go install +build: + go build -o $(plugin_name) + +user-install: + mkdir -p $(plugin_path) && go build -o $(plugin_path)/$(plugin_name) test: fmtcheck go test -i $(TEST) || exit 1 @@ -25,9 +30,6 @@ vet: exit 1; \ fi -fmt: - gofmt -w $(GOFMT_FILES) - fmtcheck: @sh -c "'$(CURDIR)/scripts/gofmtcheck.sh'" @@ -45,19 +47,6 @@ test-compile: fi go test -c $(TEST) $(TESTARGS) -website: -ifeq (,$(wildcard $(GOPATH)/src/$(WEBSITE_REPO))) - echo "$(WEBSITE_REPO) not found in your GOPATH (necessary for layouts and assets), get-ting..." - git clone https://$(WEBSITE_REPO) $(GOPATH)/src/$(WEBSITE_REPO) -endif - @$(MAKE) -C $(GOPATH)/src/$(WEBSITE_REPO) website-provider PROVIDER_PATH=$(shell pwd) PROVIDER_NAME=$(PKG_NAME) - -website-test: -ifeq (,$(wildcard $(GOPATH)/src/$(WEBSITE_REPO))) - echo "$(WEBSITE_REPO) not found in your GOPATH (necessary for layouts and assets), get-ting..." - git clone https://$(WEBSITE_REPO) $(GOPATH)/src/$(WEBSITE_REPO) -endif - @$(MAKE) -C $(GOPATH)/src/$(WEBSITE_REPO) website-provider-test PROVIDER_PATH=$(shell pwd) PROVIDER_NAME=$(PKG_NAME) .PHONY: build test testacc vet fmt fmtcheck errcheck vendor-status test-compile website website-test diff --git a/appoptics/provider.go b/appoptics/provider.go index ca2b1f8..6832b73 100644 --- a/appoptics/provider.go +++ b/appoptics/provider.go @@ -40,6 +40,9 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) { url = "https://api.appoptics.com/v1/" } - client := appoptics.NewClient(d.Get("token").(string), appoptics.BaseURLClientOption(url)) + client := appoptics.NewClient(d.Get("token").(string), + appoptics.BaseURLClientOption(url), + appoptics.SetDebugMode(), + ) return client, nil } diff --git a/appoptics/resource_appoptics_alert.go b/appoptics/resource_appoptics_alert.go index c7447bb..a33929e 100644 --- a/appoptics/resource_appoptics_alert.go +++ b/appoptics/resource_appoptics_alert.go @@ -76,6 +76,10 @@ func resourceAppOpticsAlert() *schema.Resource { Type: schema.TypeBool, Optional: true, }, + "dynamic": { + Type: schema.TypeBool, + Optional: true, + }, "values": { Type: schema.TypeList, Optional: true, @@ -120,7 +124,7 @@ func resourceAppOpticsAlertConditionsHash(v interface{}) int { tags, present := m["tag"].([]interface{}) if present && len(tags) > 0 { - buf.WriteString(fmt.Sprintf("%d-", tagsHash(tags))) + buf.WriteString(fmt.Sprintf("%d-", alertConditionsTagsHash(tags))) } detectReset, present := m["detect_reset"] @@ -146,19 +150,19 @@ func resourceAppOpticsAlertConditionsHash(v interface{}) int { return hashcode.String(buf.String()) } -func tagsHash(tags []interface{}) int { +func alertConditionsTagsHash(tags []interface{}) int { var buf bytes.Buffer for _, v := range tags { m := v.(map[string]interface{}) buf.WriteString(fmt.Sprintf("%s-", m["name"])) buf.WriteString(fmt.Sprintf("%s-", m["grouped"])) - buf.WriteString(fmt.Sprintf("%d-", tagsValuesHash(m["values"].([]interface{})))) + buf.WriteString(fmt.Sprintf("%d-", alertConditionsTagsValuesHash(m["values"].([]interface{})))) } return hashcode.String(buf.String()) } -func tagsValuesHash(s []interface{}) int { +func alertConditionsTagsValuesHash(s []interface{}) int { var buf bytes.Buffer for _, v := range s { buf.WriteString(fmt.Sprintf("%s-", v)) @@ -215,6 +219,7 @@ func resourceAppOpticsAlertCreate(d *schema.ResourceData, meta interface{}) erro for i, tagData := range v { tag := appoptics.Tag{} tag.Grouped = tagData.(map[string]interface{})["grouped"].(bool) + tag.Dynamic = tagData.(map[string]interface{})["dynamic"].(bool) tag.Name = tagData.(map[string]interface{})["name"].(string) values := tagData.(map[string]interface{})["values"].([]interface{}) valuesInStrings := make([]string, len(values)) @@ -362,6 +367,7 @@ func flattenConditionTags(in []*appoptics.Tag) []interface{} { m := make(map[string]interface{}) m["name"] = v.Name m["grouped"] = v.Grouped + m["dynamic"] = v.Dynamic if len(v.Values) > 0 { m["values"] = flattenConditionTagsValues(v.Values) } @@ -438,6 +444,7 @@ func resourceAppOpticsAlertUpdate(d *schema.ResourceData, meta interface{}) erro for i, tagData := range v { tag := appoptics.Tag{} tag.Grouped = tagData.(map[string]interface{})["grouped"].(bool) + tag.Dynamic = tagData.(map[string]interface{})["dynamic"].(bool) tag.Name = tagData.(map[string]interface{})["name"].(string) values := tagData.(map[string]interface{})["values"].([]interface{}) valuesInStrings := make([]string, len(values)) diff --git a/appoptics/resource_librato_metric.go b/appoptics/resource_appoptics_metric.go similarity index 77% rename from appoptics/resource_librato_metric.go rename to appoptics/resource_appoptics_metric.go index e6ee69f..b689f5c 100644 --- a/appoptics/resource_librato_metric.go +++ b/appoptics/resource_appoptics_metric.go @@ -7,6 +7,7 @@ import ( "time" "github.com/akahn/go-librato/librato" + appoptics "github.com/appoptics/appoptics-api-go" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" ) @@ -95,73 +96,74 @@ func resourceAppOpticsMetric() *schema.Resource { } func resourceAppOpticsMetricCreate(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) + metricName := "some.metric" - metric := librato.Metric{ - Name: librato.String(d.Get("name").(string)), - Type: librato.String("gauge"), + metric := appoptics.Metric{ + Name: d.Get("name").(string), + Type: "gauge", } if a, ok := d.GetOk("display_name"); ok { - metric.DisplayName = librato.String(a.(string)) + metric.DisplayName = a.(string) } if a, ok := d.GetOk("description"); ok { - metric.Description = librato.String(a.(string)) + metric.Description = a.(string) } if a, ok := d.GetOk("period"); ok { - metric.Period = librato.Uint(uint(a.(int))) + metric.Period = a.(int) } if a, ok := d.GetOk("composite"); ok { - metric.Composite = librato.String(a.(string)) - metric.Type = librato.String("composite") + metric.Composite = a.(string) + metric.Type = "composite" } if a, ok := d.GetOk("attributes"); ok { attributeData := a.([]interface{}) attributeDataMap := attributeData[0].(map[string]interface{}) - attributes := new(librato.MetricAttributes) + attributes := appoptics.MetricAttributes{} if v, ok := attributeDataMap["color"].(string); ok && v != "" { - attributes.Color = librato.String(v) + attributes.Color = v } if v, ok := attributeDataMap["display_max"].(string); ok && v != "" { - attributes.DisplayMax = librato.String(v) + attributes.DisplayMax = v } if v, ok := attributeDataMap["display_min"].(string); ok && v != "" { - attributes.DisplayMin = librato.String(v) + attributes.DisplayMin = v } if v, ok := attributeDataMap["display_units_long"].(string); ok && v != "" { - attributes.DisplayUnitsLong = *librato.String(v) + attributes.DisplayUnitsLong = v } if v, ok := attributeDataMap["display_units_short"].(string); ok && v != "" { - attributes.DisplayUnitsShort = *librato.String(v) + attributes.DisplayUnitsShort = v } if v, ok := attributeDataMap["created_by_ua"].(string); ok && v != "" { - attributes.CreatedByUA = *librato.String(v) + attributes.CreatedByUA = v } if v, ok := attributeDataMap["display_stacked"].(bool); ok { - attributes.DisplayStacked = *librato.Bool(v) + attributes.DisplayStacked = v } if v, ok := attributeDataMap["gap_detection"].(bool); ok { - attributes.GapDetection = *librato.Bool(v) + attributes.GapDetection = v } if v, ok := attributeDataMap["aggregate"].(bool); ok { - attributes.Aggregate = *librato.Bool(v) + attributes.Aggregate = v } metric.Attributes = attributes } - _, err := client.Metrics.Update(&metric) + err := client.MetricsService().Update(metricName, &metric) if err != nil { log.Printf("[INFO] ERROR creating Metric: %s", err) return fmt.Errorf("Error creating AppOptics metric: %s", err) } retryErr := resource.Retry(1*time.Minute, func() *resource.RetryError { - _, _, err := client.Metrics.Get(*metric.Name) + _, err := client.MetricsService().Retrieve(metric.Name) if err != nil { - if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { + if errResp, ok := err.(*appoptics.ErrorResponse); ok && errResp.Response.StatusCode == 404 { return resource.RetryableError(err) } return resource.NonRetryableError(err) @@ -172,19 +174,19 @@ func resourceAppOpticsMetricCreate(d *schema.ResourceData, meta interface{}) err return fmt.Errorf("Error creating AppOptics metric: %s", retryErr) } - d.SetId(*metric.Name) + d.SetId(metric.Name) return resourceAppOpticsMetricRead(d, meta) } func resourceAppOpticsMetricRead(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) id := d.Id() log.Printf("[INFO] Reading AppOptics Metric: %s", id) - metric, _, err := client.Metrics.Get(id) + metric, err := client.MetricsService().Retrieve(id) if err != nil { - if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { + if errResp, ok := err.(*appoptics.ErrorResponse); ok && errResp.Response.StatusCode == 404 { d.SetId("") return nil } @@ -194,23 +196,23 @@ func resourceAppOpticsMetricRead(d *schema.ResourceData, meta interface{}) error d.Set("name", metric.Name) d.Set("type", metric.Type) - if metric.Description != nil { + if metric.Description != "" { d.Set("description", metric.Description) } - if metric.DisplayName != nil { + if metric.DisplayName != "" { d.Set("display_name", metric.DisplayName) } - if metric.Period != nil { + if metric.Period != 0 { d.Set("period", metric.Period) } - if metric.Composite != nil { + if metric.Composite != "" { d.Set("composite", metric.Composite) } - attributes := metricAttributesGather(d, metric.Attributes) + attributes := metricAttributesGather(d, &metric.Attributes) // Since attributes isn't a simple terraform type (TypeList), it's best to // catch the error returned from the d.Set() function, and handle accordingly. @@ -222,47 +224,47 @@ func resourceAppOpticsMetricRead(d *schema.ResourceData, meta interface{}) error } func resourceAppOpticsMetricUpdate(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) id := d.Id() - metric := new(librato.Metric) - metric.Name = librato.String(id) + metric := &appoptics.Metric{} + metric.Name = id if d.HasChange("type") { - metric.Type = librato.String(d.Get("type").(string)) + metric.Type = d.Get("type").(string) } if d.HasChange("description") { - metric.Description = librato.String(d.Get("description").(string)) + metric.Description = d.Get("description").(string) } if d.HasChange("display_name") { - metric.DisplayName = librato.String(d.Get("display_name").(string)) + metric.DisplayName = d.Get("display_name").(string) } if d.HasChange("period") { - metric.Period = librato.Uint(uint(d.Get("period").(int))) + metric.Period = d.Get("period").(int) } if d.HasChange("composite") { - metric.Composite = librato.String(d.Get("composite").(string)) + metric.Composite = d.Get("composite").(string) } if d.HasChange("attributes") { attributeData := d.Get("attributes").([]interface{}) attributeDataMap := attributeData[0].(map[string]interface{}) - attributes := new(librato.MetricAttributes) + attributes := appoptics.MetricAttributes{} if v, ok := attributeDataMap["color"].(string); ok && v != "" { - attributes.Color = librato.String(v) + attributes.Color = v } if v, ok := attributeDataMap["display_max"].(string); ok && v != "" { - attributes.DisplayMax = librato.String(v) + attributes.DisplayMax = v } if v, ok := attributeDataMap["display_min"].(string); ok && v != "" { - attributes.DisplayMin = librato.String(v) + attributes.DisplayMin = v } if v, ok := attributeDataMap["display_units_long"].(string); ok && v != "" { - attributes.DisplayUnitsLong = *librato.String(v) + attributes.DisplayUnitsLong = v } if v, ok := attributeDataMap["display_units_short"].(string); ok && v != "" { - attributes.DisplayUnitsShort = *librato.String(v) + attributes.DisplayUnitsShort = v } if v, ok := attributeDataMap["created_by_ua"].(string); ok && v != "" { attributes.CreatedByUA = *librato.String(v) @@ -281,7 +283,7 @@ func resourceAppOpticsMetricUpdate(d *schema.ResourceData, meta interface{}) err log.Printf("[INFO] Updating AppOptics metric: %v", structToString(metric)) - _, err := client.Metrics.Update(metric) + err := client.MetricsService().Update(id, metric) if err != nil { return fmt.Errorf("Error updating AppOptics metric: %s", err) } @@ -297,9 +299,9 @@ func resourceAppOpticsMetricUpdate(d *schema.ResourceData, meta interface{}) err ContinuousTargetOccurence: 5, Refresh: func() (interface{}, string, error) { log.Printf("[INFO] Checking if AppOptics Metric %s was updated yet", id) - changedMetric, _, getErr := client.Metrics.Get(id) - if getErr != nil { - return changedMetric, "", getErr + changedMetric, err := client.MetricsService().Retrieve(id) + if err != nil { + return changedMetric, "", err } return changedMetric, "true", nil }, @@ -315,12 +317,12 @@ func resourceAppOpticsMetricUpdate(d *schema.ResourceData, meta interface{}) err } func resourceAppOpticsMetricDelete(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) id := d.Id() log.Printf("[INFO] Deleting Metric: %s", id) - _, err := client.Metrics.Delete(id) + err := client.MetricsService().Delete(id) if err != nil { return fmt.Errorf("Error deleting Metric: %s", err) } @@ -329,7 +331,7 @@ func resourceAppOpticsMetricDelete(d *schema.ResourceData, meta interface{}) err retryErr := resource.Retry(1*time.Minute, func() *resource.RetryError { log.Printf("[INFO] Getting Metric %s", id) - _, _, err := client.Metrics.Get(id) + _, err := client.MetricsService().Retrieve(id) if err != nil { if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { log.Printf("[INFO] Metric %s not found, removing from state", id) @@ -350,13 +352,13 @@ func resourceAppOpticsMetricDelete(d *schema.ResourceData, meta interface{}) err } // Flattens an attributes hash into something that flatmap.Flatten() can handle -func metricAttributesGather(d *schema.ResourceData, attributes *librato.MetricAttributes) []map[string]interface{} { +func metricAttributesGather(d *schema.ResourceData, attributes *appoptics.MetricAttributes) []map[string]interface{} { result := make([]map[string]interface{}, 0, 1) if attributes != nil { retAttributes := make(map[string]interface{}) - if attributes.Color != nil { - retAttributes["color"] = *attributes.Color + if attributes.Color != "" { + retAttributes["color"] = attributes.Color } if attributes.DisplayMax != nil { retAttributes["display_max"] = attributes.DisplayMax diff --git a/appoptics/resource_librato_metric_test.go b/appoptics/resource_appoptics_metric_test.go similarity index 78% rename from appoptics/resource_librato_metric_test.go rename to appoptics/resource_appoptics_metric_test.go index 36e9c28..569ceaf 100644 --- a/appoptics/resource_librato_metric_test.go +++ b/appoptics/resource_appoptics_metric_test.go @@ -5,14 +5,15 @@ import ( "strings" "testing" - "github.com/akahn/go-librato/librato" + "github.com/appoptics/appoptics-api-go" + "github.com/hashicorp/terraform/helper/acctest" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/terraform" ) func TestAccAppOpticsMetrics(t *testing.T) { - var metric librato.Metric + var metric appoptics.Metric name := fmt.Sprintf("tftest-metric-%s", acctest.RandString(10)) typ := "gauge" @@ -84,14 +85,14 @@ func TestAccAppOpticsMetrics(t *testing.T) { } func testAccCheckAppOpticsMetricDestroy(s *terraform.State) error { - client := testAccProvider.Meta().(*librato.Client) + client := testAccProvider.Meta().(*appoptics.Client) for _, rs := range s.RootModule().Resources { if rs.Type != "appoptics_metric" { continue } - _, _, err := client.Metrics.Get(rs.Primary.ID) + _, err := client.MetricsService().Retrieve(rs.Primary.ID) if err == nil { return fmt.Errorf("Metric still exists") } @@ -100,37 +101,37 @@ func testAccCheckAppOpticsMetricDestroy(s *terraform.State) error { return nil } -func testAccCheckAppOpticsMetricName(metric *librato.Metric, name string) resource.TestCheckFunc { +func testAccCheckAppOpticsMetricName(metric *appoptics.Metric, name string) resource.TestCheckFunc { return func(s *terraform.State) error { - if metric.Name == nil || *metric.Name != name { - return fmt.Errorf("Bad name: %s", *metric.Name) + if metric.Name == "" || metric.Name != name { + return fmt.Errorf("Bad name: %s", metric.Name) } return nil } } -func testAccCheckAppOpticsMetricDescription(metric *librato.Metric, desc string) resource.TestCheckFunc { +func testAccCheckAppOpticsMetricDescription(metric *appoptics.Metric, desc string) resource.TestCheckFunc { return func(s *terraform.State) error { - if metric.Description == nil || *metric.Description != desc { - return fmt.Errorf("Bad description: %s", *metric.Description) + if metric.Description == "" || metric.Description != desc { + return fmt.Errorf("Bad description: %s", metric.Description) } return nil } } -func testAccCheckAppOpticsMetricType(metric *librato.Metric, wantType string) resource.TestCheckFunc { +func testAccCheckAppOpticsMetricType(metric *appoptics.Metric, wantType string) resource.TestCheckFunc { return func(s *terraform.State) error { - if metric.Type == nil || *metric.Type != wantType { - return fmt.Errorf("Bad metric type: %s. Expected: %s", *metric.Type, wantType) + if metric.Type == "" || metric.Type != wantType { + return fmt.Errorf("Bad metric type: %s. Expected: %s", metric.Type, wantType) } return nil } } -func testAccCheckAppOpticsMetricExists(n string, metric *librato.Metric) resource.TestCheckFunc { +func testAccCheckAppOpticsMetricExists(n string, metric *appoptics.Metric) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -142,15 +143,15 @@ func testAccCheckAppOpticsMetricExists(n string, metric *librato.Metric) resourc return fmt.Errorf("No Metric ID is set") } - client := testAccProvider.Meta().(*librato.Client) + client := testAccProvider.Meta().(*appoptics.Client) - foundMetric, _, err := client.Metrics.Get(rs.Primary.ID) + foundMetric, err := client.MetricsService().Retrieve(rs.Primary.ID) if err != nil { return err } - if foundMetric.Name == nil || *foundMetric.Name != rs.Primary.ID { + if foundMetric.Name == "" || foundMetric.Name != rs.Primary.ID { return fmt.Errorf("Metric not found") } diff --git a/appoptics/resource_librato_space_chart.go b/appoptics/resource_librato_space_chart.go index 167a48f..7201207 100644 --- a/appoptics/resource_librato_space_chart.go +++ b/appoptics/resource_librato_space_chart.go @@ -9,7 +9,7 @@ import ( "strconv" "time" - "github.com/akahn/go-librato/librato" + "github.com/appoptics/appoptics-api-go" "github.com/hashicorp/terraform/helper/hashcode" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/helper/schema" @@ -39,12 +39,10 @@ func resourceAppOpticsSpaceChart() *schema.Resource { }, "min": { Type: schema.TypeFloat, - Default: math.NaN(), Optional: true, }, "max": { Type: schema.TypeFloat, - Default: math.NaN(), Optional: true, }, "label": { @@ -65,10 +63,31 @@ func resourceAppOpticsSpaceChart() *schema.Resource { Optional: true, ConflictsWith: []string{"stream.composite"}, }, - "source": { - Type: schema.TypeString, + "tag": { + Type: schema.TypeList, Optional: true, ConflictsWith: []string{"stream.composite"}, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Optional: true, + }, + "grouped": { + Type: schema.TypeBool, + Optional: true, + }, + "dynamic": { + Type: schema.TypeBool, + Optional: true, + }, + "values": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + }, }, "group_function": { Type: schema.TypeString, @@ -78,7 +97,7 @@ func resourceAppOpticsSpaceChart() *schema.Resource { "composite": { Type: schema.TypeString, Optional: true, - ConflictsWith: []string{"stream.metric", "stream.source", "stream.group_function"}, + ConflictsWith: []string{"stream.metric", "stream.group_function"}, }, "summary_function": { Type: schema.TypeString, @@ -101,13 +120,11 @@ func resourceAppOpticsSpaceChart() *schema.Resource { Optional: true, }, "min": { - Type: schema.TypeFloat, - Default: math.NaN(), + Type: schema.TypeInt, Optional: true, }, "max": { - Type: schema.TypeFloat, - Default: math.NaN(), + Type: schema.TypeInt, Optional: true, }, "transform_function": { @@ -130,97 +147,121 @@ func resourceAppOpticsSpaceChartHash(v interface{}) int { var buf bytes.Buffer m := v.(map[string]interface{}) buf.WriteString(fmt.Sprintf("%s-", m["metric"].(string))) - buf.WriteString(fmt.Sprintf("%s-", m["source"].(string))) buf.WriteString(fmt.Sprintf("%s-", m["composite"].(string))) + // TOOD: is this under "stream"? + tags, present := m["tag"].([]interface{}) + if present && len(tags) > 0 { + buf.WriteString(fmt.Sprintf("%d-", chartStreamTagsHash(tags))) + } + + return hashcode.String(buf.String()) +} + +func chartStreamTagsHash(tags []interface{}) int { + var buf bytes.Buffer + for _, v := range tags { + m := v.(map[string]interface{}) + buf.WriteString(fmt.Sprintf("%s-", m["name"])) + buf.WriteString(fmt.Sprintf("%s-", m["grouped"])) + buf.WriteString(fmt.Sprintf("%s-", m["dynamic"])) + buf.WriteString(fmt.Sprintf("%d-", chartStreamTagsValuesHash(m["values"].([]interface{})))) + } + + return hashcode.String(buf.String()) +} + +func chartStreamTagsValuesHash(s []interface{}) int { + var buf bytes.Buffer + for _, v := range s { + buf.WriteString(fmt.Sprintf("%s-", v)) + } return hashcode.String(buf.String()) } func resourceAppOpticsSpaceChartCreate(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) - spaceID := uint(d.Get("space_id").(int)) + spaceID := d.Get("space_id").(int) - spaceChart := new(librato.SpaceChart) + spaceChart := new(appoptics.Chart) if v, ok := d.GetOk("name"); ok { - spaceChart.Name = librato.String(v.(string)) + spaceChart.Name = v.(string) } if v, ok := d.GetOk("type"); ok { - spaceChart.Type = librato.String(v.(string)) + spaceChart.Type = v.(string) } if v, ok := d.GetOk("min"); ok { if math.IsNaN(v.(float64)) { - spaceChart.Min = nil - } else { - spaceChart.Min = librato.Float(v.(float64)) + return fmt.Errorf("Error creating AppOptics space chart. 'min' cannot be converted to a float64. %s", d.Get("min")) } + spaceChart.Min = v.(float64) } if v, ok := d.GetOk("max"); ok { if math.IsNaN(v.(float64)) { - spaceChart.Max = nil - } else { - spaceChart.Max = librato.Float(v.(float64)) + return fmt.Errorf("Error creating AppOptics space chart. 'max' cannot be converted to a float64. %s", d.Get("max")) } + spaceChart.Max = v.(float64) } if v, ok := d.GetOk("label"); ok { - spaceChart.Label = librato.String(v.(string)) + spaceChart.Label = v.(string) } if v, ok := d.GetOk("related_space"); ok { - spaceChart.RelatedSpace = librato.Uint(uint(v.(int))) + spaceChart.RelatedSpace = v.(int) } if v, ok := d.GetOk("stream"); ok { vs := v.(*schema.Set) - streams := make([]librato.SpaceChartStream, vs.Len()) + streams := make([]appoptics.Stream, vs.Len()) for i, streamDataM := range vs.List() { streamData := streamDataM.(map[string]interface{}) - var stream librato.SpaceChartStream + var stream appoptics.Stream if v, ok := streamData["metric"].(string); ok && v != "" { - stream.Metric = librato.String(v) + stream.Metric = v } - if v, ok := streamData["source"].(string); ok && v != "" { - stream.Source = librato.String(v) + if v, ok := streamData["tags"].([]appoptics.Tag); ok { + stream.Tags = v } if v, ok := streamData["composite"].(string); ok && v != "" { - stream.Composite = librato.String(v) + stream.Composite = v } if v, ok := streamData["group_function"].(string); ok && v != "" { - stream.GroupFunction = librato.String(v) + stream.GroupFunction = v } if v, ok := streamData["summary_function"].(string); ok && v != "" { - stream.SummaryFunction = librato.String(v) + stream.SummaryFunction = v } if v, ok := streamData["transform_function"].(string); ok && v != "" { - stream.TransformFunction = librato.String(v) + stream.TransformFunction = v } if v, ok := streamData["color"].(string); ok && v != "" { - stream.Color = librato.String(v) + stream.Color = v } if v, ok := streamData["units_short"].(string); ok && v != "" { - stream.UnitsShort = librato.String(v) + stream.UnitsShort = v } if v, ok := streamData["units_longs"].(string); ok && v != "" { - stream.UnitsLong = librato.String(v) + stream.UnitsLong = v } if v, ok := streamData["min"].(float64); ok && !math.IsNaN(v) { - stream.Min = librato.Float(v) + stream.Min = int(v) } if v, ok := streamData["max"].(float64); ok && !math.IsNaN(v) { - stream.Max = librato.Float(v) + stream.Max = int(v) } streams[i] = stream } spaceChart.Streams = streams } - spaceChartResult, _, err := client.Spaces.CreateChart(spaceID, spaceChart) + spaceChartResult, err := client.ChartsService().Create(spaceChart, spaceID) if err != nil { - return fmt.Errorf("Error creating AppOptics space chart %s: %s", *spaceChart.Name, err) + return fmt.Errorf("Error creating AppOptics space chart %s: %s", spaceChart.Name, err) } resource.Retry(1*time.Minute, func() *resource.RetryError { - _, _, err := client.Spaces.GetChart(spaceID, *spaceChartResult.ID) + _, err := client.ChartsService().Retrieve(spaceChartResult.ID, spaceID) if err != nil { - if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { + if errResp, ok := err.(*appoptics.ErrorResponse); ok && errResp.Response.StatusCode == 404 { return resource.RetryableError(err) } return resource.NonRetryableError(err) @@ -232,18 +273,18 @@ func resourceAppOpticsSpaceChartCreate(d *schema.ResourceData, meta interface{}) } func resourceAppOpticsSpaceChartRead(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) - spaceID := uint(d.Get("space_id").(int)) + spaceID := d.Get("space_id").(int) - id, err := strconv.ParseUint(d.Id(), 10, 0) + id, err := strconv.Atoi(d.Id()) if err != nil { return err } - chart, _, err := client.Spaces.GetChart(spaceID, uint(id)) + chart, err := client.ChartsService().Retrieve(id, spaceID) if err != nil { - if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { + if errResp, ok := err.(*appoptics.ErrorResponse); ok && errResp.Response.StatusCode == 404 { d.SetId("") return nil } @@ -253,37 +294,25 @@ func resourceAppOpticsSpaceChartRead(d *schema.ResourceData, meta interface{}) e return resourceAppOpticsSpaceChartReadResult(d, chart) } -func resourceAppOpticsSpaceChartReadResult(d *schema.ResourceData, chart *librato.SpaceChart) error { - d.SetId(strconv.FormatUint(uint64(*chart.ID), 10)) - if chart.Name != nil { - if err := d.Set("name", *chart.Name); err != nil { - return err - } +func resourceAppOpticsSpaceChartReadResult(d *schema.ResourceData, chart *appoptics.Chart) error { + d.SetId(strconv.FormatUint(uint64(chart.ID), 10)) + if err := d.Set("name", chart.Name); err != nil { + return err } - if chart.Type != nil { - if err := d.Set("type", *chart.Type); err != nil { - return err - } + if err := d.Set("type", chart.Type); err != nil { + return err } - if chart.Min != nil { - if err := d.Set("min", *chart.Min); err != nil { - return err - } + if err := d.Set("min", chart.Min); err != nil { + return err } - if chart.Max != nil { - if err := d.Set("max", *chart.Max); err != nil { - return err - } + if err := d.Set("max", chart.Max); err != nil { + return err } - if chart.Label != nil { - if err := d.Set("label", *chart.Label); err != nil { - return err - } + if err := d.Set("label", chart.Label); err != nil { + return err } - if chart.RelatedSpace != nil { - if err := d.Set("related_space", *chart.RelatedSpace); err != nil { - return err - } + if err := d.Set("related_space", chart.RelatedSpace); err != nil { + return err } streams := resourceAppOpticsSpaceChartStreamsGather(d, chart.Streams) @@ -294,125 +323,131 @@ func resourceAppOpticsSpaceChartReadResult(d *schema.ResourceData, chart *librat return nil } -func resourceAppOpticsSpaceChartStreamsGather(d *schema.ResourceData, streams []librato.SpaceChartStream) []map[string]interface{} { +func resourceAppOpticsSpaceChartStreamsGather(d *schema.ResourceData, streams []appoptics.Stream) []map[string]interface{} { retStreams := make([]map[string]interface{}, 0, len(streams)) for _, s := range streams { stream := make(map[string]interface{}) - if s.Metric != nil { - stream["metric"] = *s.Metric - } - if s.Source != nil { - stream["source"] = *s.Source - } - if s.Composite != nil { - stream["composite"] = *s.Composite - } - if s.GroupFunction != nil { - stream["group_function"] = *s.GroupFunction - } - if s.SummaryFunction != nil { - stream["summary_function"] = *s.SummaryFunction - } - if s.TransformFunction != nil { - stream["transform_function"] = *s.TransformFunction - } - if s.Color != nil { - stream["color"] = *s.Color - } - if s.UnitsShort != nil { - stream["units_short"] = *s.UnitsShort - } - if s.UnitsLong != nil { - stream["units_long"] = *s.UnitsLong - } + // TODO: support all options in appoptics.Chart + stream["metric"] = s.Metric + // TODO: + // * appoptics_space_chart.foobar: Invalid address to set: []string{"stream", "0", "tags"} + stream["tags"] = flattenStreamTags(s.Tags) + stream["composite"] = s.Composite + stream["group_function"] = s.GroupFunction + stream["summary_function"] = s.SummaryFunction + stream["transform_function"] = s.TransformFunction + stream["color"] = s.Color + stream["units_short"] = s.UnitsShort + stream["units_long"] = s.UnitsLong retStreams = append(retStreams, stream) } return retStreams } +func flattenStreamTags(in []appoptics.Tag) []interface{} { + var out = make([]interface{}, 0, len(in)) + for _, v := range in { + m := make(map[string]interface{}) + m["name"] = v.Name + m["grouped"] = v.Grouped + if len(v.Values) > 0 { + m["values"] = flattenStreamTagsValues(v.Values) + } + out = append(out, m) + } + + return out +} + +func flattenStreamTagsValues(in []string) []interface{} { + out := make([]interface{}, 0, len(in)) + for _, v := range in { + out = append(out, v) + } + return out +} + func resourceAppOpticsSpaceChartUpdate(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) - spaceID := uint(d.Get("space_id").(int)) - chartID, err := strconv.ParseUint(d.Id(), 10, 0) + spaceID := d.Get("space_id").(int) + chartID, err := strconv.Atoi(d.Id()) if err != nil { return err } // Just to have whole object for comparison before/after update - fullChart, _, err := client.Spaces.GetChart(spaceID, uint(chartID)) + fullChart, err := client.ChartsService().Retrieve(chartID, spaceID) if err != nil { return err } - spaceChart := new(librato.SpaceChart) + spaceChart := new(appoptics.Chart) if d.HasChange("name") { - spaceChart.Name = librato.String(d.Get("name").(string)) + spaceChart.Name = d.Get("name").(string) fullChart.Name = spaceChart.Name } if d.HasChange("min") { if math.IsNaN(d.Get("min").(float64)) { - spaceChart.Min = nil - } else { - spaceChart.Min = librato.Float(d.Get("min").(float64)) + return fmt.Errorf("Error updating AppOptics space chart. 'min' cannot be converted to a float64. %s: %s", d.Get("min"), err) } + spaceChart.Min = d.Get("min").(float64) fullChart.Min = spaceChart.Min } if d.HasChange("max") { if math.IsNaN(d.Get("max").(float64)) { - spaceChart.Max = nil - } else { - spaceChart.Max = librato.Float(d.Get("max").(float64)) + return fmt.Errorf("Error updating AppOptics space chart. 'max' cannot be converted to a float64. %s: %s", d.Get("max"), err) } + spaceChart.Max = d.Get("max").(float64) fullChart.Max = spaceChart.Max } if d.HasChange("label") { - spaceChart.Label = librato.String(d.Get("label").(string)) + spaceChart.Label = d.Get("label").(string) fullChart.Label = spaceChart.Label } if d.HasChange("related_space") { - spaceChart.RelatedSpace = librato.Uint(d.Get("related_space").(uint)) + spaceChart.RelatedSpace = d.Get("related_space").(int) fullChart.RelatedSpace = spaceChart.RelatedSpace } if d.HasChange("stream") { vs := d.Get("stream").(*schema.Set) - streams := make([]librato.SpaceChartStream, vs.Len()) + streams := make([]appoptics.Stream, vs.Len()) for i, streamDataM := range vs.List() { streamData := streamDataM.(map[string]interface{}) - var stream librato.SpaceChartStream + var stream appoptics.Stream if v, ok := streamData["metric"].(string); ok && v != "" { - stream.Metric = librato.String(v) + stream.Metric = v } - if v, ok := streamData["source"].(string); ok && v != "" { - stream.Source = librato.String(v) + if v, ok := streamData["tags"].([]appoptics.Tag); ok { + stream.Tags = v } if v, ok := streamData["composite"].(string); ok && v != "" { - stream.Composite = librato.String(v) + stream.Composite = v } if v, ok := streamData["group_function"].(string); ok && v != "" { - stream.GroupFunction = librato.String(v) + stream.GroupFunction = v } if v, ok := streamData["summary_function"].(string); ok && v != "" { - stream.SummaryFunction = librato.String(v) + stream.SummaryFunction = v } if v, ok := streamData["transform_function"].(string); ok && v != "" { - stream.TransformFunction = librato.String(v) + stream.TransformFunction = v } if v, ok := streamData["color"].(string); ok && v != "" { - stream.Color = librato.String(v) + stream.Color = v } if v, ok := streamData["units_short"].(string); ok && v != "" { - stream.UnitsShort = librato.String(v) + stream.UnitsShort = v } if v, ok := streamData["units_longs"].(string); ok && v != "" { - stream.UnitsLong = librato.String(v) + stream.UnitsLong = v } - if v, ok := streamData["min"].(float64); ok && !math.IsNaN(v) { - stream.Min = librato.Float(v) + if v, ok := streamData["min"].(int); ok && !math.IsNaN(float64(v)) { + stream.Min = v } - if v, ok := streamData["max"].(float64); ok && !math.IsNaN(v) { - stream.Max = librato.Float(v) + if v, ok := streamData["max"].(int); ok && !math.IsNaN(float64(v)) { + stream.Max = v } streams[i] = stream } @@ -420,9 +455,9 @@ func resourceAppOpticsSpaceChartUpdate(d *schema.ResourceData, meta interface{}) fullChart.Streams = streams } - _, err = client.Spaces.UpdateChart(spaceID, uint(chartID), spaceChart) + _, err = client.ChartsService().Update(spaceChart, spaceID) if err != nil { - return fmt.Errorf("Error updating AppOptics space chart %s: %s", *spaceChart.Name, err) + return fmt.Errorf("Error updating AppOptics space chart %s: %s", spaceChart.Name, err) } // Wait for propagation since AppOptics updates are eventually consistent @@ -434,7 +469,7 @@ func resourceAppOpticsSpaceChartUpdate(d *schema.ResourceData, meta interface{}) ContinuousTargetOccurence: 5, Refresh: func() (interface{}, string, error) { log.Printf("[DEBUG] Checking if AppOptics Space Chart %d was updated yet", chartID) - changedChart, _, getErr := client.Spaces.GetChart(spaceID, uint(chartID)) + changedChart, getErr := client.ChartsService().Retrieve(chartID, spaceID) if getErr != nil { return changedChart, "", getErr } @@ -453,25 +488,25 @@ func resourceAppOpticsSpaceChartUpdate(d *schema.ResourceData, meta interface{}) } func resourceAppOpticsSpaceChartDelete(d *schema.ResourceData, meta interface{}) error { - client := meta.(*librato.Client) + client := meta.(*appoptics.Client) - spaceID := uint(d.Get("space_id").(int)) + spaceID := d.Get("space_id").(int) - id, err := strconv.ParseUint(d.Id(), 10, 0) + id, err := strconv.Atoi(d.Id()) if err != nil { return err } log.Printf("[INFO] Deleting Chart: %d/%d", spaceID, uint(id)) - _, err = client.Spaces.DeleteChart(spaceID, uint(id)) + err = client.ChartsService().Delete(id, spaceID) if err != nil { return fmt.Errorf("Error deleting space: %s", err) } resource.Retry(1*time.Minute, func() *resource.RetryError { - _, _, err := client.Spaces.GetChart(spaceID, uint(id)) + _, err := client.ChartsService().Retrieve(id, spaceID) if err != nil { - if errResp, ok := err.(*librato.ErrorResponse); ok && errResp.Response.StatusCode == 404 { + if errResp, ok := err.(*appoptics.ErrorResponse); ok && errResp.Response.StatusCode == 404 { return nil } return resource.NonRetryableError(err) diff --git a/appoptics/resource_librato_space_chart_test.go b/appoptics/resource_librato_space_chart_test.go index 25451ab..9633639 100644 --- a/appoptics/resource_librato_space_chart_test.go +++ b/appoptics/resource_librato_space_chart_test.go @@ -5,13 +5,13 @@ import ( "strconv" "testing" - "github.com/akahn/go-librato/librato" + "github.com/appoptics/appoptics-api-go" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/terraform" ) func TestAccAppOpticsSpaceChartBasic(t *testing.T) { - var spaceChart librato.SpaceChart + var spaceChart appoptics.Chart resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -22,7 +22,6 @@ func TestAccAppOpticsSpaceChartBasic(t *testing.T) { Config: testAccCheckAppOpticsSpaceChartConfigBasic, Check: resource.ComposeTestCheckFunc( testAccCheckAppOpticsSpaceChartExists("appoptics_space_chart.foobar", &spaceChart), - testAccCheckAppOpticsSpaceChartName(&spaceChart, "Foo Bar"), resource.TestCheckResourceAttr( "appoptics_space_chart.foobar", "name", "Foo Bar"), ), @@ -32,7 +31,7 @@ func TestAccAppOpticsSpaceChartBasic(t *testing.T) { } func TestAccAppOpticsSpaceChart_Full(t *testing.T) { - var spaceChart librato.SpaceChart + var spaceChart appoptics.Chart resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -43,7 +42,6 @@ func TestAccAppOpticsSpaceChart_Full(t *testing.T) { Config: testAccCheckAppOpticsSpaceChartConfigFull, Check: resource.ComposeTestCheckFunc( testAccCheckAppOpticsSpaceChartExists("appoptics_space_chart.foobar", &spaceChart), - testAccCheckAppOpticsSpaceChartName(&spaceChart, "Foo Bar"), resource.TestCheckResourceAttr( "appoptics_space_chart.foobar", "name", "Foo Bar"), ), @@ -53,7 +51,7 @@ func TestAccAppOpticsSpaceChart_Full(t *testing.T) { } func TestAccAppOpticsSpaceChart_Updated(t *testing.T) { - var spaceChart librato.SpaceChart + var spaceChart appoptics.Chart resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -64,7 +62,6 @@ func TestAccAppOpticsSpaceChart_Updated(t *testing.T) { Config: testAccCheckAppOpticsSpaceChartConfigBasic, Check: resource.ComposeTestCheckFunc( testAccCheckAppOpticsSpaceChartExists("appoptics_space_chart.foobar", &spaceChart), - testAccCheckAppOpticsSpaceChartName(&spaceChart, "Foo Bar"), resource.TestCheckResourceAttr( "appoptics_space_chart.foobar", "name", "Foo Bar"), ), @@ -73,7 +70,6 @@ func TestAccAppOpticsSpaceChart_Updated(t *testing.T) { Config: testAccCheckAppOpticsSpaceChartConfigNewValue, Check: resource.ComposeTestCheckFunc( testAccCheckAppOpticsSpaceChartExists("appoptics_space_chart.foobar", &spaceChart), - testAccCheckAppOpticsSpaceChartName(&spaceChart, "Bar Baz"), resource.TestCheckResourceAttr( "appoptics_space_chart.foobar", "name", "Bar Baz"), ), @@ -83,25 +79,24 @@ func TestAccAppOpticsSpaceChart_Updated(t *testing.T) { } func testAccCheckAppOpticsSpaceChartDestroy(s *terraform.State) error { - client := testAccProvider.Meta().(*librato.Client) + client := testAccProvider.Meta().(*appoptics.Client) for _, rs := range s.RootModule().Resources { if rs.Type != "appoptics_space_chart" { continue } - id, err := strconv.ParseUint(rs.Primary.ID, 10, 0) + id, err := strconv.Atoi(rs.Primary.ID) if err != nil { return fmt.Errorf("ID not a number") } - spaceID, err := strconv.ParseUint(rs.Primary.Attributes["space_id"], 10, 0) + spaceID, err := strconv.Atoi(rs.Primary.Attributes["space_id"]) if err != nil { return fmt.Errorf("Space ID not a number") } - _, _, err = client.Spaces.GetChart(uint(spaceID), uint(id)) - + _, err = client.ChartsService().Retrieve(id, spaceID) if err == nil { return fmt.Errorf("Space Chart still exists") } @@ -110,18 +105,7 @@ func testAccCheckAppOpticsSpaceChartDestroy(s *terraform.State) error { return nil } -func testAccCheckAppOpticsSpaceChartName(spaceChart *librato.SpaceChart, name string) resource.TestCheckFunc { - return func(s *terraform.State) error { - - if spaceChart.Name == nil || *spaceChart.Name != name { - return fmt.Errorf("Bad name: %s", *spaceChart.Name) - } - - return nil - } -} - -func testAccCheckAppOpticsSpaceChartExists(n string, spaceChart *librato.SpaceChart) resource.TestCheckFunc { +func testAccCheckAppOpticsSpaceChartExists(n string, spaceChart *appoptics.Chart) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -133,25 +117,24 @@ func testAccCheckAppOpticsSpaceChartExists(n string, spaceChart *librato.SpaceCh return fmt.Errorf("No Space Chart ID is set") } - client := testAccProvider.Meta().(*librato.Client) + client := testAccProvider.Meta().(*appoptics.Client) - id, err := strconv.ParseUint(rs.Primary.ID, 10, 0) + id, err := strconv.Atoi(rs.Primary.ID) if err != nil { return fmt.Errorf("ID not a number") } - spaceID, err := strconv.ParseUint(rs.Primary.Attributes["space_id"], 10, 0) + spaceID, err := strconv.Atoi(rs.Primary.Attributes["space_id"]) if err != nil { return fmt.Errorf("Space ID not a number") } - foundSpaceChart, _, err := client.Spaces.GetChart(uint(spaceID), uint(id)) - + foundSpaceChart, err := client.ChartsService().Retrieve(id, spaceID) if err != nil { return err } - if foundSpaceChart.ID == nil || *foundSpaceChart.ID != uint(id) { + if foundSpaceChart.ID != id { return fmt.Errorf("Space not found") } @@ -169,7 +152,7 @@ resource "appoptics_space" "foobar" { resource "appoptics_space_chart" "foobar" { space_id = "${appoptics_space.foobar.id}" name = "Foo Bar" - type = "line" + type = "line" }` const testAccCheckAppOpticsSpaceChartConfigNewValue = ` @@ -180,7 +163,9 @@ resource "appoptics_space" "foobar" { resource "appoptics_space_chart" "foobar" { space_id = "${appoptics_space.foobar.id}" name = "Bar Baz" - type = "line" + type = "line" + min = 0 + max = 100 }` const testAccCheckAppOpticsSpaceChartConfigFull = ` @@ -203,8 +188,12 @@ resource "appoptics_space_chart" "foobar" { # Minimal metric stream stream { - metric = "librato.cpu.percent.idle" - source = "*" + metric = "system.cpu.utilization" + tag { + name = "hostname" + grouped = true + values = ["host1", "host2"] + } } # Minimal composite stream @@ -214,8 +203,7 @@ resource "appoptics_space_chart" "foobar" { # Full metric stream stream { - metric = "librato.cpu.percent.idle" - source = "*" + metric = "system.cpu.utilization" group_function = "average" summary_function = "max" name = "CPU usage" @@ -225,6 +213,11 @@ resource "appoptics_space_chart" "foobar" { min = 0 max = 100 transform_function = "x * 100" - period = 60 + period = 60 + tag { + name = "hostname" + grouped = true + values = ["host1", "host2"] + } } }` diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..7d18680 --- /dev/null +++ b/go.mod @@ -0,0 +1,46 @@ +module github.com/appoptics/terraform-provider-appoptics + +go 1.13 + +require ( + cloud.google.com/go v0.37.2 // indirect + github.com/agext/levenshtein v1.2.2 // indirect + github.com/akahn/go-librato v0.0.0-20180802162712-994aa1265ee6 + github.com/apparentlymart/go-cidr v1.0.0 // indirect + github.com/appoptics/appoptics-api-go v0.5.3 + github.com/armon/go-radix v1.0.0 // indirect + github.com/aws/aws-sdk-go v1.19.11 // indirect + github.com/blang/semver v3.5.1+incompatible // indirect + github.com/golang/protobuf v1.3.1 // indirect + github.com/hashicorp/go-cleanhttp v0.5.1 // indirect + github.com/hashicorp/go-getter v1.2.0 // indirect + github.com/hashicorp/go-hclog v0.8.0 // indirect + github.com/hashicorp/go-plugin v1.0.0 // indirect + github.com/hashicorp/go-uuid v1.0.1 // indirect + github.com/hashicorp/golang-lru v0.5.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/hcl2 v0.0.0-20190402200843-8b450a7d58f9 // indirect + github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect + github.com/hashicorp/logutils v1.0.0 // indirect + github.com/hashicorp/terraform v0.11.13 + github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect + github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect + github.com/mattn/go-isatty v0.0.7 // indirect + github.com/mitchellh/cli v1.0.0 // indirect + github.com/mitchellh/copystructure v1.0.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mitchellh/hashstructure v1.0.0 // indirect + github.com/posener/complete v1.2.1 // indirect + github.com/sirupsen/logrus v1.4.1 // indirect + github.com/ulikunitz/xz v0.5.6 // indirect + github.com/zclconf/go-cty v0.0.0-20190320224746-fd76348b9329 // indirect + go.opencensus.io v0.20.0 // indirect + golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5 // indirect + golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 // indirect + golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect + golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67 // indirect + google.golang.org/appengine v1.5.0 // indirect + google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107 // indirect + google.golang.org/grpc v1.19.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..386bbfe --- /dev/null +++ b/go.sum @@ -0,0 +1,515 @@ +cloud.google.com/go v0.15.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +cloud.google.com/go v0.37.2 h1:4y4L7BdHenTfZL0HervofNTHh9Ad6mNX72cQvl+5eH0= +cloud.google.com/go v0.37.2/go.mod h1:H8IAquKe2L30IxoupDgqTaQvKSwF/c8prYHynGIWQbA= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/Azure/azure-sdk-for-go v10.3.0-beta+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-autorest v9.10.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-ntlmssp v0.0.0-20170803034930-c92175d54006/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/ChrisTrenkamp/goxpath v0.0.0-20170625215350-4fe035839290/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= +github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= +github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= +github.com/akahn/go-librato v0.0.0-20180802162712-994aa1265ee6 h1:EYsNMGTNpb6NzAU9WRrH3beiT9u2CIyimzIIVjvM61s= +github.com/akahn/go-librato v0.0.0-20180802162712-994aa1265ee6/go.mod h1:ezJdgQjH3LrqJNny4Wj8aLK24M/mHvCLrtM+gGT5eRI= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= +github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apparentlymart/go-cidr v0.0.0-20170616213631-2bd8b58cf427/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w= +github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-textseg v0.0.0-20170531203952-b836f5c4d331/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/appoptics/appoptics-api-go v0.5.3 h1:mYcKOvdPC4HS0uFcR5iwU5XCxJJtHAadjFyj/bE5wGA= +github.com/appoptics/appoptics-api-go v0.5.3/go.mod h1:wXPiQHhhV/ITjwshpxd3IACaFmEO9IsCCqnrlxEmmB0= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20160115234725-4239b77079c7/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go v1.14.31/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.19.11 h1:tqaTGER6Byw3QvsjGW0p018U2UOqaJPeJuzoaF7jjoQ= +github.com/aws/aws-sdk-go v1.19.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/beevik/etree v0.0.0-20171015221209-af219c0c7ea1/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.0.0-20161015143505-675b82c74c0e/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver v0.0.0-20170202183821-4a1e882c79dc/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.11-0.20160617073814-96a4d311aa9b/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20160617131543-bea8f082b6fd/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.1-coreos.1/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.2.0-rc.1.0.20170908195435-80aa810309d4+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v0.0.0-20160617170158-f0777076321a/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dnaeon/go-vcr v0.0.0-20170218072653-87d4990451a8/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= +github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg= +github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gogo/protobuf v0.0.0-20170307180453-100ba4e88506/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.1.1-0.20171002171727-8ebdfab36c66/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= +github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20160910222444-6b7015e65d36/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.2.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/hashicorp/atlas-go v0.0.0-20161107204910-1792bd8de119/go.mod h1:ckHDuH0pxfnmXZkq1niVSguIIV0pA65gifQv3so9llw= +github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-getter v0.0.0-20180327010114-90bb99a48d86/go.mod h1:6rdJFnhkXnzGOJbvkrdv4t9nLwKcVA+tmbQeUlkIzrU= +github.com/hashicorp/go-getter v1.2.0 h1:E05bVPilzyh2yXgT6srn7WEkfMZaH+LuX9tDJw/4kaE= +github.com/hashicorp/go-getter v1.2.0/go.mod h1:/O1k/AizTN0QmfEKknCYGvICeyKUDqCYA8vvWtGWDeQ= +github.com/hashicorp/go-hclog v0.0.0-20170716174523-b4e5765d1e5f/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0 h1:z3ollgGRg8RjfJH6UVBaG54R70GFd++QOkvnJH3VSBY= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20150916205742-d30f09973e19/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v0.0.0-20180125190438-e53f54cbf51e/go.mod h1:JSqWYsict+jzcj0+xElxyrBQRPNoiWQuddnxArJ7XHQ= +github.com/hashicorp/go-plugin v1.0.0 h1:/gQ1sNR8/LHpoxKRQq4PmLBuacfZb4tC93e9B30o/7c= +github.com/hashicorp/go-plugin v1.0.0/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v0.0.0-20160503143440-6bb64b370b90/go.mod h1:o4zcYY1e0GEZI6eSEr+43QDYmuGglw1qSO6qdHUHCgg= +github.com/hashicorp/go-safetemp v0.0.0-20180326211150-b1a1dbde6fdc/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-slug v0.2.0/go.mod h1:+zDycQOzGqOqMW7Kn2fp9vz/NtqpMLQlgb9JUF+0km4= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-tfe v0.3.11/go.mod h1:LHLchj07PCYgQqcyE5Sz+g4zrMNW+nALKbiSNTZedEs= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl2 v0.0.0-20180308163058-5f8ed954abd8/go.mod h1:xp1eMAxqhQKBxz+yQUTsig9bBMRRWRWw+rK3FJmHf/A= +github.com/hashicorp/hcl2 v0.0.0-20190402200843-8b450a7d58f9 h1:zCITwiA0cog6aYr/a/McDHKtgsEpYxXvTIgugv5iu8o= +github.com/hashicorp/hcl2 v0.0.0-20190402200843-8b450a7d58f9/go.mod h1:HtEzazM5AZ9fviNEof8QZB4T1Vz9UhHrGhnMPzl//Ek= +github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250/go.mod h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts= +github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+XK3tAql24P4uTGUMIn1/92WsQQ= +github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= +github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/memberlist v0.0.0-20170208211506-23ad4b7d7b38/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE= +github.com/hashicorp/serf v0.8.2-0.20171022020050-c20a0b1b1ea9/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= +github.com/hashicorp/terraform v0.11.13 h1:1Ka1IPqYNCu3yIZUW1OAnZjQaacNnnZne2AEmWRCm0o= +github.com/hashicorp/terraform v0.11.13/go.mod h1:aSdr9xVNED8nCdH3naa31VNUaWo63itXzRBe4f1q5HM= +github.com/hashicorp/vault v0.0.0-20161029210149-9a60bf2a50e4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= +github.com/hashicorp/yamux v0.0.0-20160720233140-d1caa6c97c9f/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jen20/awspolicyequivalence v0.0.0-20170831201602-3d48364a137a/go.mod h1:uoIMjNxUfXi48Ci40IXkPRbghZ1vbti6v9LCbNqRgHY= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20160811001526-c2c54e542fb7/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/masterzen/azure-sdk-for-go v0.0.0-20161014135628-ee4f0065d00c/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE= +github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= +github.com/masterzen/winrm v0.0.0-20180224160350-7e40f93ae939/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E= +github.com/mattn/go-colorable v0.0.0-20160220075935-9cbef7c35391/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +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-isatty v0.0.0-20161123143637-30a891c33c7c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-shellwords v1.0.1/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v0.0.0-20171129193617-33edc47170b5/go.mod h1:oGumspjLm2kTyiT1QMGpFqRlmxnKHfCvhZEVnx+5UeE= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/colorstring v0.0.0-20150917214807-8631ce90f286/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/copystructure v0.0.0-20170525013902-d23ffcb85de3/go.mod h1:eOsF2yLPlBBJPvD+nhl5QMTBSOBbOph6N7j/IDUw7PY= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v0.0.0-20161203194507-b8bc1bf76747/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-linereader v0.0.0-20141013185533-07bab5fdd958/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= +github.com/mitchellh/go-testing-interface v0.0.0-20170730050907-9a441910b168/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/hashstructure v0.0.0-20160209213820-6b17d669fac5/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= +github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/mapstructure v0.0.0-20170307201123-53818660ed49/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/panicwrap v0.0.0-20161208170302-ba9e1a65e0f7/go.mod h1:QuAqW7/z+iv6aWFJdrA8kCbsF0OOJVKCICqTcYBexuY= +github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= +github.com/mitchellh/reflectwalk v0.0.0-20170726202117-63d60e9d0dbc/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v0.0.0-20171219111128-6bee943216c8/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI= +github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_model v0.0.0-20170216185247-6f3806018612/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/ryanuber/columnize v0.0.0-20161220214920-0fbbb3f0e3fb/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/satori/uuid v0.0.0-20160927100844-b061729afc07/go.mod h1:B8HLsPLik/YNn6KKWVMDJ8nzCL8RP5WyfsnmvnAEwIU= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spf13/afero v1.0.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/terraform-providers/terraform-provider-aws v1.29.0/go.mod h1:uvqaeKnm2ydZ2LuKuW1NDNBu6heC/7IDGXWm36/6oKs= +github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew= +github.com/terraform-providers/terraform-provider-template v1.0.0/go.mod h1:/J+B8me5DCMa0rEBH5ic2aKPjhtpWNeScmxFJWxB1EU= +github.com/terraform-providers/terraform-provider-tls v1.2.0/go.mod h1:Mxe/v5u31LDW4m32O1z6Ursdh95dpc9Puq6otkYg7tU= +github.com/ugorji/go v0.0.0-20170107133203-ded73eae5db7/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/ulikunitz/xz v0.5.4/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.6 h1:jGHAfXawEGZQ3blwU5wnWKQJvAraT7Ftq9EXjnXYgt8= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= +github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/zclconf/go-cty v0.0.0-20180302160414-49fa5e03c418/go.mod h1:LnDKxj8gN4aatfXUqmUNooaDjvmDcLPbAN3hYBIVoJE= +github.com/zclconf/go-cty v0.0.0-20190124225737-a385d646c1e9/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v0.0.0-20190320224746-fd76348b9329 h1:ne520NlvoncW5zfBGkmP4EJhyd6ruSaSyhzobv0Vz9w= +github.com/zclconf/go-cty v0.0.0-20190320224746-fd76348b9329/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= +go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= +go.opencensus.io v0.20.0 h1:L/ARO58pdktB6dLmYI0zAyW1XnavEmGziFd0MKfxnck= +go.opencensus.io v0.20.0/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/build v0.0.0-20190314133821-5284462c4bec/go.mod h1:atTaCNAy0f16Ah5aV1gMSwgiKVHwu/JncqDpuRr7lS4= +golang.org/x/crypto v0.0.0-20180211211603-9de5f2eaf759/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180802221240-56440b844dfe/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5 h1:bselrhR0Or1vomJZC8ZIjWtbDmn9OYFLX5Ik9alpJpE= +golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/net v0.0.0-20171004034648-a04bdaca5b32/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180801234040-f4c29de78a2a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20170928010508-bb50c06baba3/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180806082429-34b17bdb4300/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67 h1:1Fzlr8kkDLQwqMP8GxrhptBLqZG/EDpiATneiZHY998= +golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20171013141220-c01e4764d870/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/api v0.0.0-20171005000305-7a7376eff6a5/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.2.0/go.mod h1:IfRCZScioGtypHNTlz3gFk67J8uePVW7uDTBzXuIkhU= +google.golang.org/api v0.3.0 h1:UIJY20OEo3+tK5MBlcdx37kmdH6EnRjGkW78mc6+EeA= +google.golang.org/api v0.3.0/go.mod h1:IuvZyQh8jgscv8qWfQ4ABd8m7hEudgBFM/EdhA3BnXw= +google.golang.org/appengine v0.0.0-20150527042145-b667a5000b08/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20171002232614-f676e0f3ac63/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180731170733-daca94659cb5/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107 h1:xtNn7qFlagY2mQNFHMSRPjT2RkOV4OXM7P5TVy9xATo= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v0.0.0-20170809211603-7657092a1303/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1 h1:TrBcJ1yqAl1G++wO39nD/qtgpsW9/1+QGrluyMGEYgM= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170407172122-cd8b52f8269e/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/main.go b/main.go index ca8312e..92d9e32 100644 --- a/main.go +++ b/main.go @@ -7,5 +7,6 @@ import ( func main() { plugin.Serve(&plugin.ServeOpts{ - ProviderFunc: appoptics.Provider}) + ProviderFunc: appoptics.Provider, + }) }