├── CHANGELOG.md
├── splunk
├── resource_splunk_saved_search_test.go
├── config.go
├── provider_test.go
├── provider.go
└── resource_splunk_saved_search.go
├── main.go
├── go.mod
├── scripts
├── gogetcookie.sh
├── gofmtcheck.sh
├── errcheck.sh
└── changelog-links.sh
├── .gitignore
├── website
├── docs
│ ├── r
│ │ └── saved_search.html.markdown
│ └── index.html.markdown
└── splunk.erb
├── GNUmakefile
├── test
└── main.tf
├── .github
└── ISSUE_TEMPLATE.md
├── README.md
├── LICENSE
└── go.sum
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/splunk/resource_splunk_saved_search_test.go:
--------------------------------------------------------------------------------
1 | package splunk
2 |
--------------------------------------------------------------------------------
/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "github.com/denniswebb/terraform-provider-splunk/splunk"
5 | "github.com/hashicorp/terraform/plugin"
6 | )
7 |
8 | func main() {
9 | plugin.Serve(&plugin.ServeOpts{
10 | ProviderFunc: splunk.Provider})
11 | }
12 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/denniswebb/terraform-provider-splunk
2 |
3 | require (
4 | github.com/denniswebb/go-splunk v0.0.0-20180501164408-314ac98ea67d
5 | github.com/gorilla/schema v1.0.2 // indirect
6 | github.com/hashicorp/terraform v0.12.0
7 | gopkg.in/resty.v1 v1.12.0 // indirect
8 | )
9 |
--------------------------------------------------------------------------------
/scripts/gogetcookie.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | touch ~/.gitcookies
4 | chmod 0600 ~/.gitcookies
5 |
6 | git config --global http.cookiefile ~/.gitcookies
7 |
8 | tr , \\t <<\__END__ >>~/.gitcookies
9 | .googlesource.com,TRUE,/,TRUE,2147483647,o,git-paul.hashicorp.com=1/z7s05EYPudQ9qoe6dMVfmAVwgZopEkZBb1a2mA5QtHE
10 | __END__
11 |
--------------------------------------------------------------------------------
/scripts/gofmtcheck.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Check gofmt
4 | echo "==> Checking that code complies with gofmt requirements..."
5 | gofmt_files=$(gofmt -l `find . -name '*.go' | grep -v vendor`)
6 | if [[ -n ${gofmt_files} ]]; then
7 | echo 'gofmt needs running on the following files:'
8 | echo "${gofmt_files}"
9 | echo "You can use the command: \`make fmt\` to reformat code."
10 | exit 1
11 | fi
12 |
13 | exit 0
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.dll
2 | *.exe
3 | .DS_Store
4 | example.tf
5 | terraform.tfplan
6 | terraform.tfstate
7 | bin/
8 | modules-dev/
9 | /pkg/
10 | website/.vagrant
11 | website/.bundle
12 | website/build
13 | website/node_modules
14 | .vagrant/
15 | *.backup
16 | ./*.tfstate
17 | .terraform/
18 | plan.out
19 | *.log
20 | *.bak
21 | *~
22 | .*.swp
23 | .idea
24 | *.iml
25 | *.test
26 | *.iml
27 |
28 | website/vendor
29 |
30 | # Test exclusions
31 | !command/test-fixtures/**/*.tfstate
32 | !command/test-fixtures/**/.terraform/
33 |
--------------------------------------------------------------------------------
/splunk/config.go:
--------------------------------------------------------------------------------
1 | package splunk
2 |
3 | import (
4 | "log"
5 |
6 | "github.com/denniswebb/go-splunk/splunk"
7 | )
8 |
9 | type Config struct {
10 | URL string
11 | Username string
12 | Password string
13 | InsecureSkipVerify bool
14 | }
15 |
16 | // Client() returns a new client for accessing Splunk.
17 | func (c *Config) Client() (*splunk.Client, error) {
18 | client := splunk.New(c.URL, c.Username, c.Password, c.InsecureSkipVerify)
19 | log.Printf("[INFO] Splunk Client configured for: %s@%s", c.Username, c.URL)
20 | return client, nil
21 | }
22 |
--------------------------------------------------------------------------------
/scripts/errcheck.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Check gofmt
4 | echo "==> Checking for unchecked errors..."
5 |
6 | if ! which errcheck > /dev/null; then
7 | echo "==> Installing errcheck..."
8 | go get -u github.com/kisielk/errcheck
9 | fi
10 |
11 | err_files=$(errcheck -ignoretests \
12 | -ignore 'github.com/hashicorp/terraform/helper/schema:Set' \
13 | -ignore 'bytes:.*' \
14 | -ignore 'io:Close|Write' \
15 | $(go list ./...| grep -v /vendor/))
16 |
17 | if [[ -n ${err_files} ]]; then
18 | echo 'Unchecked errors found in the following places:'
19 | echo "${err_files}"
20 | echo "Please handle returned errors. You can check directly with \`make errcheck\`"
21 | exit 1
22 | fi
23 |
24 | exit 0
25 |
--------------------------------------------------------------------------------
/website/docs/r/saved_search.html.markdown:
--------------------------------------------------------------------------------
1 | ---
2 | layout: "splunk"
3 | page_title: "Splunk: splunk_saved_search"
4 | sidebar_current: "docs-splunk-resource-record"
5 | description: |-
6 | Provides a Splunk record resource.
7 | ---
8 |
9 | # splunk_saved_search
10 |
11 | Provides a Splunk saved search or alert.
12 |
13 | ## Example Usage
14 |
15 | ```hcl
16 | # Add a saved search
17 | resource "splunk_saved_search" "foobar" {
18 | }
19 | ```
20 |
21 | ## Argument Reference
22 |
23 | The following arguments are supported:
24 |
25 | * `search` - (Required) The search string used for the saved search.
26 | * `name` - (Required) The name of the saved search
27 |
28 | ## Attributes Reference
29 |
30 | The following attributes are exported:
31 |
32 | * `id` - The saved search ID
33 | * `name` - The name of the saved search
34 |
--------------------------------------------------------------------------------
/website/splunk.erb:
--------------------------------------------------------------------------------
1 | <% wrap_layout :inner do %>
2 | <% content_for :sidebar do %>
3 |
23 | <% end %>
24 |
25 | <%= yield %>
26 | <% end %>
27 |
--------------------------------------------------------------------------------
/scripts/changelog-links.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # This script rewrites [GH-nnnn]-style references in the CHANGELOG.md file to
4 | # be Markdown links to the given github issues.
5 | #
6 | # This is run during releases so that the issue references in all of the
7 | # released items are presented as clickable links, but we can just use the
8 | # easy [GH-nnnn] shorthand for quickly adding items to the "Unrelease" section
9 | # while merging things between releases.
10 |
11 | set -e
12 |
13 | if [[ ! -f CHANGELOG.md ]]; then
14 | echo "ERROR: CHANGELOG.md not found in pwd."
15 | echo "Please run this from the root of the terraform provider repository"
16 | exit 1
17 | fi
18 |
19 | if [[ `uname` == "Darwin" ]]; then
20 | echo "Using BSD sed"
21 | SED="sed -i.bak -E -e"
22 | else
23 | echo "Using GNU sed"
24 | SED="sed -i.bak -r -e"
25 | fi
26 |
27 | PROVIDER_URL="https:\/\/github.com\/terraform-providers\/terraform-provider-cloudflare\/issues"
28 |
29 | $SED "s/GH-([0-9]+)/\[#\1\]\($PROVIDER_URL\/\1\)/g" -e 's/\[\[#(.+)([0-9])\)]$/(\[#\1\2))/g' CHANGELOG.md
30 |
31 | rm CHANGELOG.md.bak
32 |
--------------------------------------------------------------------------------
/splunk/provider_test.go:
--------------------------------------------------------------------------------
1 | package splunk
2 |
3 | import (
4 | "os"
5 | "testing"
6 |
7 | "github.com/hashicorp/terraform/helper/schema"
8 | "github.com/hashicorp/terraform/terraform"
9 | )
10 |
11 | var testAccProviders map[string]terraform.ResourceProvider
12 | var testAccProvider *schema.Provider
13 |
14 | func init() {
15 | testAccProvider = Provider().(*schema.Provider)
16 | testAccProviders = map[string]terraform.ResourceProvider{
17 | "splunk": testAccProvider,
18 | }
19 | }
20 |
21 | func TestProvider(t *testing.T) {
22 | if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
23 | t.Fatalf("err: %s", err)
24 | }
25 | }
26 |
27 | func TestProvider_impl(t *testing.T) {
28 | var _ terraform.ResourceProvider = Provider()
29 | }
30 |
31 | func testAccPreCheck(t *testing.T) {
32 | if v := os.Getenv("SPLUNK_URL"); v == "" {
33 | t.Fatal("SPLUNK_URL must be set for acceptance tests")
34 | }
35 |
36 | if v := os.Getenv("SPLUNK_USERNAME"); v == "" {
37 | t.Fatal("SPLUNK_USERNAME must be set for acceptance tests. The domain is used to create and destroy record against.")
38 | }
39 |
40 | if v := os.Getenv("SPLUNK_PASSWORD"); v == "" {
41 | t.Fatal("SPLUNK_PASSWORD must be set for acceptance tests")
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/website/docs/index.html.markdown:
--------------------------------------------------------------------------------
1 | ---
2 | layout: "splunk"
3 | page_title: "Provider: Splunk"
4 | sidebar_current: "docs-splunk-index"
5 | description: |-
6 | The Splunk provider is used to manage the configuration of Splunk. The provider needs to be configured with the proper credentials before it can be used.
7 | ---
8 |
9 | # Splunk Provider
10 |
11 | The Splunk provider is used to interact with the
12 | configuration of Splunk. The provider needs to be configured
13 | with the proper credentials before it can be used.
14 |
15 | Use the navigation to the left to read about the available resources.
16 |
17 | ## Example Usage
18 |
19 | ```hcl
20 | # Configure the Splunk provider
21 | provider "splunk" {
22 | username = "${var.splunk_email}"
23 | password = "${var.splunk_token}"
24 | api_url = "${var.splunk_api_url}"
25 |
26 | }
27 |
28 | # Create a saved search
29 | resource "splunk_saved_search" "login-attempts" {
30 | # ...
31 | }
32 | ```
33 |
34 | ## Argument Reference
35 |
36 | The following arguments are supported:
37 |
38 | * `username` - (Required) Username used to authenticate to Splunk
39 | * `password` - (Required) Password used to authenticate to Splunk
40 | * `api_url` - (Required) URL to Splunk API. Example: `https://myorg.splunkcloud.com:8089`
41 |
--------------------------------------------------------------------------------
/GNUmakefile:
--------------------------------------------------------------------------------
1 | TEST?=$$(go list ./... |grep -v 'vendor')
2 | GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
3 |
4 | default: build
5 |
6 | build: fmtcheck
7 | go install
8 |
9 | test: fmtcheck
10 | go test -i $(TEST) || exit 1
11 | echo $(TEST) | \
12 | xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4
13 |
14 | testacc: fmtcheck
15 | TF_ACC=1 go test $(TEST) -v $(TESTARGS) -timeout 120m
16 |
17 | vet:
18 | @echo "go vet ."
19 | @go vet $$(go list ./... | grep -v vendor/) ; if [ $$? -eq 1 ]; then \
20 | echo ""; \
21 | echo "Vet found suspicious constructs. Please check the reported constructs"; \
22 | echo "and fix them if necessary before submitting the code for review."; \
23 | exit 1; \
24 | fi
25 |
26 | fmt:
27 | gofmt -w $(GOFMT_FILES)
28 |
29 | fmtcheck:
30 | @sh -c "'$(CURDIR)/scripts/gofmtcheck.sh'"
31 |
32 | errcheck:
33 | @sh -c "'$(CURDIR)/scripts/errcheck.sh'"
34 |
35 | vendor-status:
36 | @govendor status
37 |
38 | test-compile:
39 | @if [ "$(TEST)" = "./..." ]; then \
40 | echo "ERROR: Set TEST to a specific package. For example,"; \
41 | echo " make test-compile TEST=./aws"; \
42 | exit 1; \
43 | fi
44 | go test -c $(TEST) $(TESTARGS)
45 |
46 | .PHONY: build test testacc vet fmt fmtcheck errcheck vendor-status test-compile
47 |
48 |
--------------------------------------------------------------------------------
/test/main.tf:
--------------------------------------------------------------------------------
1 | provider splunk {
2 | insecure_skip_verify = true
3 | url = "https://upside.splunkcloud.com:8089"
4 | }
5 |
6 | resource "splunk_saved_search" "test1" {
7 | name = "dennis's test"
8 | search = "what"
9 |
10 | acl {
11 | owner = "terraform"
12 | sharing = "global"
13 | read = ["*"]
14 | write= ["admin","user"]
15 | }
16 | }
17 |
18 | // resource "splunk_saved_search" "test2" {
19 | // name = "dennis's test alarm"
20 | // search = "sisyphus"
21 | // actions = "slack"
22 | // action_email_to = "dennis@bluesentryit.com"
23 | // action_email_subject = "Test Alert"
24 | // action_email_message_alert = "Hey is this thing on!"
25 | // action_slack_channel = "@dennis"
26 | // action_slack_message = "Hey dude!"
27 | // alert_comparator = "greater than"
28 | // alert_threshold = "1"
29 | // dispatch_earliest_time = "-15m"
30 | // cron_schedule = "5 5 5 5 *"
31 | // is_scheduled = true
32 | // }
33 | //
34 | // resource "splunk_saved_search" "test3" {
35 | // name = "Sisyphus Kubectl Errors"
36 | // search = "I need to build this"
37 | // action_email_inline = true
38 | // }
39 | //
40 | // resource "splunk_saved_search" "test4" {
41 | // name = "Sisyphus Kubectl "
42 | // search = "I need to build this"
43 | // action_email_inline = true
44 | // }
45 |
46 |
--------------------------------------------------------------------------------
/splunk/provider.go:
--------------------------------------------------------------------------------
1 | package splunk
2 |
3 | import (
4 | "github.com/hashicorp/terraform/helper/schema"
5 | "github.com/hashicorp/terraform/terraform"
6 | )
7 |
8 | // Provider returns a terraform.ResourceProvider.
9 | func Provider() terraform.ResourceProvider {
10 | return &schema.Provider{
11 | Schema: map[string]*schema.Schema{
12 | "url": &schema.Schema{
13 | Type: schema.TypeString,
14 | Required: true,
15 | DefaultFunc: schema.EnvDefaultFunc("SPLUNK_URL", nil),
16 | Description: "URL endpoint for Splunk API",
17 | },
18 |
19 | "username": &schema.Schema{
20 | Type: schema.TypeString,
21 | Required: true,
22 | DefaultFunc: schema.EnvDefaultFunc("SPLUNK_USERNAME", nil),
23 | Description: "The username for Splunk API operations.",
24 | },
25 |
26 | "password": &schema.Schema{
27 | Type: schema.TypeString,
28 | Required: true,
29 | DefaultFunc: schema.EnvDefaultFunc("SPLUNK_PASSWORD", nil),
30 | Description: "The password for Splunk API operations.",
31 | },
32 |
33 | "insecure_skip_verify": &schema.Schema{
34 | Type: schema.TypeBool,
35 | Optional: true,
36 | DefaultFunc: schema.EnvDefaultFunc("SPLUNK_INSECURE", false),
37 | Description: "Ignore certificate on Splunk server.",
38 | },
39 | },
40 |
41 | ResourcesMap: map[string]*schema.Resource{
42 | "splunk_saved_search": resourceSplunkSavedSearch(),
43 | },
44 |
45 | ConfigureFunc: providerConfigure,
46 | }
47 | }
48 |
49 | func providerConfigure(d *schema.ResourceData) (interface{}, error) {
50 | config := Config{
51 | URL: d.Get("url").(string),
52 | Username: d.Get("username").(string),
53 | Password: d.Get("password").(string),
54 | InsecureSkipVerify: d.Get("insecure_skip_verify").(bool),
55 | }
56 |
57 | return config.Client()
58 | }
59 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Hi there,
2 |
3 | Thank you for opening an issue. Please note that we try to keep the Terraform issue tracker reserved for bug reports and feature requests. For general usage questions, please see: https://www.terraform.io/community.html.
4 |
5 | ### Terraform Version
6 | Run `terraform -v` to show the version. If you are not running the latest version of Terraform, please upgrade because your issue may have already been fixed.
7 |
8 | ### Affected Resource(s)
9 | Please list the resources as a list, for example:
10 | - opc_instance
11 | - opc_storage_volume
12 |
13 | If this issue appears to affect multiple resources, it may be an issue with Terraform's core, so please mention this.
14 |
15 | ### Terraform Configuration Files
16 | ```hcl
17 | # Copy-paste your Terraform configurations here - for large Terraform configs,
18 | # please use a service like Dropbox and share a link to the ZIP file. For
19 | # security, you can also encrypt the files using our GPG public key.
20 | ```
21 |
22 | ### Debug Output
23 | Please provider a link to a GitHub Gist containing the complete debug output: https://www.terraform.io/docs/internals/debugging.html. Please do NOT paste the debug output in the issue; just paste a link to the Gist.
24 |
25 | ### Panic Output
26 | If Terraform produced a panic, please provide a link to a GitHub Gist containing the output of the `crash.log`.
27 |
28 | ### Expected Behavior
29 | What should have happened?
30 |
31 | ### Actual Behavior
32 | What actually happened?
33 |
34 | ### Steps to Reproduce
35 | Please list the steps required to reproduce the issue, for example:
36 | 1. `terraform apply`
37 |
38 | ### Important Factoids
39 | Are there anything atypical about your accounts that we should know? For example: Running in EC2 Classic? Custom version of OpenStack? Tight ACLs?
40 |
41 | ### References
42 | Are there any other GitHub issues (open or closed) or Pull Requests that should be linked here? For example:
43 | - GH-1234
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Terraform Provider
2 | ==================
3 |
4 | - Website: https://www.terraform.io
5 | - [](https://gitter.im/hashicorp-terraform/Lobby)
6 | - Mailing list: [Google Groups](http://groups.google.com/group/terraform-tool)
7 |
8 |
9 |
10 | Requirements
11 | ------------
12 |
13 | - [Terraform](https://www.terraform.io/downloads.html) 0.10.x
14 | - [Go](https://golang.org/doc/install) 1.8 (to build the provider plugin)
15 |
16 | Building The Provider
17 | ---------------------
18 |
19 | Clone repository to: `$GOPATH/src/github.com/terraform-providers/terraform-provider-$PROVIDER_NAME`
20 |
21 | ```sh
22 | $ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
23 | $ git clone git@github.com:terraform-providers/terraform-provider-$PROVIDER_NAME
24 | ```
25 |
26 | Enter the provider directory and build the provider
27 |
28 | ```sh
29 | $ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-$PROVIDER_NAME
30 | $ make build
31 | ```
32 |
33 | Using the provider
34 | ----------------------
35 | ## Fill in for each provider
36 |
37 | Developing the Provider
38 | ---------------------------
39 |
40 | If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (version 1.8+ is *required*). You'll also need to correctly setup a [GOPATH](http://golang.org/doc/code.html#GOPATH), as well as adding `$GOPATH/bin` to your `$PATH`.
41 |
42 | To compile the provider, run `make build`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.
43 |
44 | ```sh
45 | $ make bin
46 | ...
47 | $ $GOPATH/bin/terraform-provider-$PROVIDER_NAME
48 | ...
49 | ```
50 |
51 | In order to test the provider, you can simply run `make test`.
52 |
53 | ```sh
54 | $ make test
55 | ```
56 |
57 | In order to run the full suite of Acceptance tests, run `make testacc`.
58 |
59 | *Note:* Acceptance tests create real resources, and often cost money to run.
60 |
61 | ```sh
62 | $ make testacc
63 | ```
64 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Mozilla Public License Version 2.0
2 | ==================================
3 |
4 | 1. Definitions
5 | --------------
6 |
7 | 1.1. "Contributor"
8 | means each individual or legal entity that creates, contributes to
9 | the creation of, or owns Covered Software.
10 |
11 | 1.2. "Contributor Version"
12 | means the combination of the Contributions of others (if any) used
13 | by a Contributor and that particular Contributor's Contribution.
14 |
15 | 1.3. "Contribution"
16 | means Covered Software of a particular Contributor.
17 |
18 | 1.4. "Covered Software"
19 | means Source Code Form to which the initial Contributor has attached
20 | the notice in Exhibit A, the Executable Form of such Source Code
21 | Form, and Modifications of such Source Code Form, in each case
22 | including portions thereof.
23 |
24 | 1.5. "Incompatible With Secondary Licenses"
25 | means
26 |
27 | (a) that the initial Contributor has attached the notice described
28 | in Exhibit B to the Covered Software; or
29 |
30 | (b) that the Covered Software was made available under the terms of
31 | version 1.1 or earlier of the License, but not also under the
32 | terms of a Secondary License.
33 |
34 | 1.6. "Executable Form"
35 | means any form of the work other than Source Code Form.
36 |
37 | 1.7. "Larger Work"
38 | means a work that combines Covered Software with other material, in
39 | a separate file or files, that is not Covered Software.
40 |
41 | 1.8. "License"
42 | means this document.
43 |
44 | 1.9. "Licensable"
45 | means having the right to grant, to the maximum extent possible,
46 | whether at the time of the initial grant or subsequently, any and
47 | all of the rights conveyed by this License.
48 |
49 | 1.10. "Modifications"
50 | means any of the following:
51 |
52 | (a) any file in Source Code Form that results from an addition to,
53 | deletion from, or modification of the contents of Covered
54 | Software; or
55 |
56 | (b) any new file in Source Code Form that contains any Covered
57 | Software.
58 |
59 | 1.11. "Patent Claims" of a Contributor
60 | means any patent claim(s), including without limitation, method,
61 | process, and apparatus claims, in any patent Licensable by such
62 | Contributor that would be infringed, but for the grant of the
63 | License, by the making, using, selling, offering for sale, having
64 | made, import, or transfer of either its Contributions or its
65 | Contributor Version.
66 |
67 | 1.12. "Secondary License"
68 | means either the GNU General Public License, Version 2.0, the GNU
69 | Lesser General Public License, Version 2.1, the GNU Affero General
70 | Public License, Version 3.0, or any later versions of those
71 | licenses.
72 |
73 | 1.13. "Source Code Form"
74 | means the form of the work preferred for making modifications.
75 |
76 | 1.14. "You" (or "Your")
77 | means an individual or a legal entity exercising rights under this
78 | License. For legal entities, "You" includes any entity that
79 | controls, is controlled by, or is under common control with You. For
80 | purposes of this definition, "control" means (a) the power, direct
81 | or indirect, to cause the direction or management of such entity,
82 | whether by contract or otherwise, or (b) ownership of more than
83 | fifty percent (50%) of the outstanding shares or beneficial
84 | ownership of such entity.
85 |
86 | 2. License Grants and Conditions
87 | --------------------------------
88 |
89 | 2.1. Grants
90 |
91 | Each Contributor hereby grants You a world-wide, royalty-free,
92 | non-exclusive license:
93 |
94 | (a) under intellectual property rights (other than patent or trademark)
95 | Licensable by such Contributor to use, reproduce, make available,
96 | modify, display, perform, distribute, and otherwise exploit its
97 | Contributions, either on an unmodified basis, with Modifications, or
98 | as part of a Larger Work; and
99 |
100 | (b) under Patent Claims of such Contributor to make, use, sell, offer
101 | for sale, have made, import, and otherwise transfer either its
102 | Contributions or its Contributor Version.
103 |
104 | 2.2. Effective Date
105 |
106 | The licenses granted in Section 2.1 with respect to any Contribution
107 | become effective for each Contribution on the date the Contributor first
108 | distributes such Contribution.
109 |
110 | 2.3. Limitations on Grant Scope
111 |
112 | The licenses granted in this Section 2 are the only rights granted under
113 | this License. No additional rights or licenses will be implied from the
114 | distribution or licensing of Covered Software under this License.
115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a
116 | Contributor:
117 |
118 | (a) for any code that a Contributor has removed from Covered Software;
119 | or
120 |
121 | (b) for infringements caused by: (i) Your and any other third party's
122 | modifications of Covered Software, or (ii) the combination of its
123 | Contributions with other software (except as part of its Contributor
124 | Version); or
125 |
126 | (c) under Patent Claims infringed by Covered Software in the absence of
127 | its Contributions.
128 |
129 | This License does not grant any rights in the trademarks, service marks,
130 | or logos of any Contributor (except as may be necessary to comply with
131 | the notice requirements in Section 3.4).
132 |
133 | 2.4. Subsequent Licenses
134 |
135 | No Contributor makes additional grants as a result of Your choice to
136 | distribute the Covered Software under a subsequent version of this
137 | License (see Section 10.2) or under the terms of a Secondary License (if
138 | permitted under the terms of Section 3.3).
139 |
140 | 2.5. Representation
141 |
142 | Each Contributor represents that the Contributor believes its
143 | Contributions are its original creation(s) or it has sufficient rights
144 | to grant the rights to its Contributions conveyed by this License.
145 |
146 | 2.6. Fair Use
147 |
148 | This License is not intended to limit any rights You have under
149 | applicable copyright doctrines of fair use, fair dealing, or other
150 | equivalents.
151 |
152 | 2.7. Conditions
153 |
154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155 | in Section 2.1.
156 |
157 | 3. Responsibilities
158 | -------------------
159 |
160 | 3.1. Distribution of Source Form
161 |
162 | All distribution of Covered Software in Source Code Form, including any
163 | Modifications that You create or to which You contribute, must be under
164 | the terms of this License. You must inform recipients that the Source
165 | Code Form of the Covered Software is governed by the terms of this
166 | License, and how they can obtain a copy of this License. You may not
167 | attempt to alter or restrict the recipients' rights in the Source Code
168 | Form.
169 |
170 | 3.2. Distribution of Executable Form
171 |
172 | If You distribute Covered Software in Executable Form then:
173 |
174 | (a) such Covered Software must also be made available in Source Code
175 | Form, as described in Section 3.1, and You must inform recipients of
176 | the Executable Form how they can obtain a copy of such Source Code
177 | Form by reasonable means in a timely manner, at a charge no more
178 | than the cost of distribution to the recipient; and
179 |
180 | (b) You may distribute such Executable Form under the terms of this
181 | License, or sublicense it under different terms, provided that the
182 | license for the Executable Form does not attempt to limit or alter
183 | the recipients' rights in the Source Code Form under this License.
184 |
185 | 3.3. Distribution of a Larger Work
186 |
187 | You may create and distribute a Larger Work under terms of Your choice,
188 | provided that You also comply with the requirements of this License for
189 | the Covered Software. If the Larger Work is a combination of Covered
190 | Software with a work governed by one or more Secondary Licenses, and the
191 | Covered Software is not Incompatible With Secondary Licenses, this
192 | License permits You to additionally distribute such Covered Software
193 | under the terms of such Secondary License(s), so that the recipient of
194 | the Larger Work may, at their option, further distribute the Covered
195 | Software under the terms of either this License or such Secondary
196 | License(s).
197 |
198 | 3.4. Notices
199 |
200 | You may not remove or alter the substance of any license notices
201 | (including copyright notices, patent notices, disclaimers of warranty,
202 | or limitations of liability) contained within the Source Code Form of
203 | the Covered Software, except that You may alter any license notices to
204 | the extent required to remedy known factual inaccuracies.
205 |
206 | 3.5. Application of Additional Terms
207 |
208 | You may choose to offer, and to charge a fee for, warranty, support,
209 | indemnity or liability obligations to one or more recipients of Covered
210 | Software. However, You may do so only on Your own behalf, and not on
211 | behalf of any Contributor. You must make it absolutely clear that any
212 | such warranty, support, indemnity, or liability obligation is offered by
213 | You alone, and You hereby agree to indemnify every Contributor for any
214 | liability incurred by such Contributor as a result of warranty, support,
215 | indemnity or liability terms You offer. You may include additional
216 | disclaimers of warranty and limitations of liability specific to any
217 | jurisdiction.
218 |
219 | 4. Inability to Comply Due to Statute or Regulation
220 | ---------------------------------------------------
221 |
222 | If it is impossible for You to comply with any of the terms of this
223 | License with respect to some or all of the Covered Software due to
224 | statute, judicial order, or regulation then You must: (a) comply with
225 | the terms of this License to the maximum extent possible; and (b)
226 | describe the limitations and the code they affect. Such description must
227 | be placed in a text file included with all distributions of the Covered
228 | Software under this License. Except to the extent prohibited by statute
229 | or regulation, such description must be sufficiently detailed for a
230 | recipient of ordinary skill to be able to understand it.
231 |
232 | 5. Termination
233 | --------------
234 |
235 | 5.1. The rights granted under this License will terminate automatically
236 | if You fail to comply with any of its terms. However, if You become
237 | compliant, then the rights granted under this License from a particular
238 | Contributor are reinstated (a) provisionally, unless and until such
239 | Contributor explicitly and finally terminates Your grants, and (b) on an
240 | ongoing basis, if such Contributor fails to notify You of the
241 | non-compliance by some reasonable means prior to 60 days after You have
242 | come back into compliance. Moreover, Your grants from a particular
243 | Contributor are reinstated on an ongoing basis if such Contributor
244 | notifies You of the non-compliance by some reasonable means, this is the
245 | first time You have received notice of non-compliance with this License
246 | from such Contributor, and You become compliant prior to 30 days after
247 | Your receipt of the notice.
248 |
249 | 5.2. If You initiate litigation against any entity by asserting a patent
250 | infringement claim (excluding declaratory judgment actions,
251 | counter-claims, and cross-claims) alleging that a Contributor Version
252 | directly or indirectly infringes any patent, then the rights granted to
253 | You by any and all Contributors for the Covered Software under Section
254 | 2.1 of this License shall terminate.
255 |
256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257 | end user license agreements (excluding distributors and resellers) which
258 | have been validly granted by You or Your distributors under this License
259 | prior to termination shall survive termination.
260 |
261 | ************************************************************************
262 | * *
263 | * 6. Disclaimer of Warranty *
264 | * ------------------------- *
265 | * *
266 | * Covered Software is provided under this License on an "as is" *
267 | * basis, without warranty of any kind, either expressed, implied, or *
268 | * statutory, including, without limitation, warranties that the *
269 | * Covered Software is free of defects, merchantable, fit for a *
270 | * particular purpose or non-infringing. The entire risk as to the *
271 | * quality and performance of the Covered Software is with You. *
272 | * Should any Covered Software prove defective in any respect, You *
273 | * (not any Contributor) assume the cost of any necessary servicing, *
274 | * repair, or correction. This disclaimer of warranty constitutes an *
275 | * essential part of this License. No use of any Covered Software is *
276 | * authorized under this License except under this disclaimer. *
277 | * *
278 | ************************************************************************
279 |
280 | ************************************************************************
281 | * *
282 | * 7. Limitation of Liability *
283 | * -------------------------- *
284 | * *
285 | * Under no circumstances and under no legal theory, whether tort *
286 | * (including negligence), contract, or otherwise, shall any *
287 | * Contributor, or anyone who distributes Covered Software as *
288 | * permitted above, be liable to You for any direct, indirect, *
289 | * special, incidental, or consequential damages of any character *
290 | * including, without limitation, damages for lost profits, loss of *
291 | * goodwill, work stoppage, computer failure or malfunction, or any *
292 | * and all other commercial damages or losses, even if such party *
293 | * shall have been informed of the possibility of such damages. This *
294 | * limitation of liability shall not apply to liability for death or *
295 | * personal injury resulting from such party's negligence to the *
296 | * extent applicable law prohibits such limitation. Some *
297 | * jurisdictions do not allow the exclusion or limitation of *
298 | * incidental or consequential damages, so this exclusion and *
299 | * limitation may not apply to You. *
300 | * *
301 | ************************************************************************
302 |
303 | 8. Litigation
304 | -------------
305 |
306 | Any litigation relating to this License may be brought only in the
307 | courts of a jurisdiction where the defendant maintains its principal
308 | place of business and such litigation shall be governed by laws of that
309 | jurisdiction, without reference to its conflict-of-law provisions.
310 | Nothing in this Section shall prevent a party's ability to bring
311 | cross-claims or counter-claims.
312 |
313 | 9. Miscellaneous
314 | ----------------
315 |
316 | This License represents the complete agreement concerning the subject
317 | matter hereof. If any provision of this License is held to be
318 | unenforceable, such provision shall be reformed only to the extent
319 | necessary to make it enforceable. Any law or regulation which provides
320 | that the language of a contract shall be construed against the drafter
321 | shall not be used to construe this License against a Contributor.
322 |
323 | 10. Versions of the License
324 | ---------------------------
325 |
326 | 10.1. New Versions
327 |
328 | Mozilla Foundation is the license steward. Except as provided in Section
329 | 10.3, no one other than the license steward has the right to modify or
330 | publish new versions of this License. Each version will be given a
331 | distinguishing version number.
332 |
333 | 10.2. Effect of New Versions
334 |
335 | You may distribute the Covered Software under the terms of the version
336 | of the License under which You originally received the Covered Software,
337 | or under the terms of any subsequent version published by the license
338 | steward.
339 |
340 | 10.3. Modified Versions
341 |
342 | If you create software not governed by this License, and you want to
343 | create a new license for such software, you may create and use a
344 | modified version of this License if you rename the license and remove
345 | any references to the name of the license steward (except to note that
346 | such modified license differs from this License).
347 |
348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary
349 | Licenses
350 |
351 | If You choose to distribute Source Code Form that is Incompatible With
352 | Secondary Licenses under the terms of this version of the License, the
353 | notice described in Exhibit B of this License must be attached.
354 |
355 | Exhibit A - Source Code Form License Notice
356 | -------------------------------------------
357 |
358 | This Source Code Form is subject to the terms of the Mozilla Public
359 | License, v. 2.0. If a copy of the MPL was not distributed with this
360 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
361 |
362 | If it is not possible or desirable to put the notice in a particular
363 | file, then You may include the notice in a location (such as a LICENSE
364 | file in a relevant directory) where a recipient would be likely to look
365 | for such a notice.
366 |
367 | You may add additional accurate notices of copyright ownership.
368 |
369 | Exhibit B - "Incompatible With Secondary Licenses" Notice
370 | ---------------------------------------------------------
371 |
372 | This Source Code Form is "Incompatible With Secondary Licenses", as
373 | defined by the Mozilla Public License, v. 2.0.
374 |
--------------------------------------------------------------------------------
/splunk/resource_splunk_saved_search.go:
--------------------------------------------------------------------------------
1 | package splunk
2 |
3 | import (
4 | "fmt"
5 | "log"
6 | "strings"
7 |
8 | "github.com/denniswebb/go-splunk/splunk"
9 | "github.com/hashicorp/terraform/helper/schema"
10 | )
11 |
12 | func resourceSplunkSavedSearch() *schema.Resource {
13 | return &schema.Resource{
14 | Create: resourceSplunkSavedSearchCreate,
15 | Read: resourceSplunkSavedSearchRead,
16 | Update: resourceSplunkSavedSearchUpdate,
17 | Delete: resourceSplunkSavedSearchDelete,
18 | Importer: &schema.ResourceImporter{
19 | State: schema.ImportStatePassthrough,
20 | },
21 |
22 | Schema: map[string]*schema.Schema{
23 | "name": {
24 | ForceNew: true,
25 | Type: schema.TypeString,
26 | Required: true,
27 | },
28 | "search": {
29 | Type: schema.TypeString,
30 | Required: true,
31 | },
32 | "acl": {
33 | Type: schema.TypeList,
34 | MaxItems: 1,
35 | Optional: true,
36 | Computed: true,
37 | Elem: &schema.Resource{
38 | Schema: map[string]*schema.Schema{
39 | "app": {
40 | Type: schema.TypeString,
41 | Optional: true,
42 | Default: "search",
43 | },
44 | "owner": {
45 | Type: schema.TypeString,
46 | Optional: true,
47 | Computed: true,
48 | },
49 | "sharing": {
50 | Type: schema.TypeString,
51 | Optional: true,
52 | Default: "global",
53 | },
54 | "read": {
55 | Type: schema.TypeList,
56 | Elem: &schema.Schema{
57 | Type: schema.TypeString,
58 | },
59 | Optional: true,
60 | Computed: true,
61 | },
62 | "write": {
63 | Type: schema.TypeList,
64 | Elem: &schema.Schema{
65 | Type: schema.TypeString,
66 | },
67 | Optional: true,
68 | Computed: true,
69 | },
70 | },
71 | },
72 | },
73 | "action_email": {
74 | Type: schema.TypeBool,
75 | Computed: true,
76 | },
77 | "action_email_auth_username": {
78 | Type: schema.TypeString,
79 | Optional: true,
80 | Computed: true,
81 | },
82 | "action_email_auth_password": {
83 | Type: schema.TypeString,
84 | Optional: true,
85 | Computed: true,
86 | },
87 | "action_email_from": {
88 | Type: schema.TypeString,
89 | Optional: true,
90 | Computed: true,
91 | },
92 | "action_email_to": {
93 | Type: schema.TypeString,
94 | Optional: true,
95 | Computed: true,
96 | },
97 | "action_email_bcc": {
98 | Type: schema.TypeString,
99 | Optional: true,
100 | Computed: true,
101 | },
102 | "action_email_cc": {
103 | Type: schema.TypeString,
104 | Optional: true,
105 | Computed: true,
106 | },
107 | "action_email_subject": {
108 | Type: schema.TypeString,
109 | Optional: true,
110 | Computed: true,
111 | },
112 | "action_email_format": {
113 | Type: schema.TypeString,
114 | Optional: true,
115 | Default: "plain",
116 | },
117 | "action_email_hostname": {
118 | Type: schema.TypeString,
119 | Optional: true,
120 | Computed: true,
121 | },
122 | "action_email_inline": {
123 | Type: schema.TypeBool,
124 | Optional: true,
125 | Computed: true,
126 | },
127 | "action_email_mailserver": {
128 | Type: schema.TypeString,
129 | Optional: true,
130 | Computed: true,
131 | },
132 | "action_email_max_results": {
133 | Type: schema.TypeInt,
134 | Optional: true,
135 | Default: 10000,
136 | },
137 | "action_email_max_time": {
138 | Type: schema.TypeString,
139 | Optional: true,
140 | Computed: true,
141 | },
142 | "action_email_message_alert": {
143 | Type: schema.TypeString,
144 | Optional: true,
145 | Computed: true,
146 | },
147 | "action_email_pdfview": {
148 | Type: schema.TypeString,
149 | Optional: true,
150 | Computed: true,
151 | },
152 | "action_email_preprocess_results": {
153 | Type: schema.TypeString,
154 | Optional: true,
155 | Computed: true,
156 | },
157 | "action_email_report_cid_font_list": {
158 | Type: schema.TypeString,
159 | Optional: true,
160 | Computed: true,
161 | },
162 | "action_email_report_include_splunk_logo": {
163 | Type: schema.TypeBool,
164 | Optional: true,
165 | Computed: true,
166 | },
167 | "action_email_report_paper_orientation": {
168 | Type: schema.TypeString,
169 | Optional: true,
170 | Computed: true,
171 | },
172 | "action_email_report_paper_size": {
173 | Type: schema.TypeString,
174 | Optional: true,
175 | Computed: true,
176 | },
177 | "action_email_report_server_enabled": {
178 | Type: schema.TypeBool,
179 | Optional: true,
180 | Computed: true,
181 | },
182 | "action_email_report_server_url": {
183 | Type: schema.TypeString,
184 | Optional: true,
185 | Computed: true,
186 | },
187 | "action_email_send_pdf": {
188 | Type: schema.TypeBool,
189 | Optional: true,
190 | Computed: true,
191 | },
192 | "action_email_send_results": {
193 | Type: schema.TypeBool,
194 | Optional: true,
195 | Computed: true,
196 | },
197 | "action_email_track_alert": {
198 | Type: schema.TypeBool,
199 | Optional: true,
200 | Computed: true,
201 | },
202 | "action_email_ttl": {
203 | Type: schema.TypeString,
204 | Optional: true,
205 | Computed: true,
206 | },
207 | "action_email_use_ssl": {
208 | Type: schema.TypeBool,
209 | Optional: true,
210 | Computed: true,
211 | },
212 | "action_email_use_tls": {
213 | Type: schema.TypeBool,
214 | Optional: true,
215 | Computed: true,
216 | },
217 | "action_email_width_sort_columns": {
218 | Type: schema.TypeBool,
219 | Optional: true,
220 | Computed: true,
221 | },
222 | "action_populate_lookup": {
223 | Type: schema.TypeBool,
224 | Computed: true,
225 | },
226 | "action_populate_lookup_command": {
227 | Type: schema.TypeString,
228 | Optional: true,
229 | Computed: true,
230 | },
231 | "action_populate_lookup_dest": {
232 | Type: schema.TypeString,
233 | Optional: true,
234 | Computed: true,
235 | },
236 | "action_populate_lookup_hostname": {
237 | Type: schema.TypeString,
238 | Optional: true,
239 | Computed: true,
240 | },
241 | "action_populate_lookup_max_results": {
242 | Type: schema.TypeInt,
243 | Optional: true,
244 | Default: 10000,
245 | },
246 | "action_populate_lookup_max_time": {
247 | Type: schema.TypeString,
248 | Optional: true,
249 | Computed: true,
250 | },
251 | "action_populate_lookup_track_alert": {
252 | Type: schema.TypeBool,
253 | Optional: true,
254 | Computed: true,
255 | },
256 | "action_populate_lookup_ttl": {
257 | Type: schema.TypeString,
258 | Optional: true,
259 | Computed: true,
260 | },
261 | "action_rss": {
262 | Type: schema.TypeBool,
263 | Computed: true,
264 | },
265 | "action_rss_command": {
266 | Type: schema.TypeString,
267 | Optional: true,
268 | Computed: true,
269 | },
270 | "action_rss_hostname": {
271 | Type: schema.TypeString,
272 | Optional: true,
273 | Computed: true,
274 | },
275 | "action_rss_max_results": {
276 | Type: schema.TypeInt,
277 | Optional: true,
278 | Default: 10000,
279 | },
280 | "action_rss_max_time": {
281 | Type: schema.TypeString,
282 | Optional: true,
283 | Computed: true,
284 | },
285 | "action_rss_track_alert": {
286 | Type: schema.TypeBool,
287 | Optional: true,
288 | Computed: true,
289 | },
290 | "action_rss_ttl": {
291 | Type: schema.TypeString,
292 | Optional: true,
293 | Computed: true,
294 | },
295 | "action_script": {
296 | Type: schema.TypeBool,
297 | Computed: true,
298 | },
299 | "action_script_command": {
300 | Type: schema.TypeString,
301 | Optional: true,
302 | Computed: true,
303 | },
304 | "action_script_filename": {
305 | Type: schema.TypeString,
306 | Optional: true,
307 | Computed: true,
308 | },
309 | "action_script_hostname": {
310 | Type: schema.TypeString,
311 | Optional: true,
312 | Computed: true,
313 | },
314 | "action_script_max_results": {
315 | Type: schema.TypeInt,
316 | Optional: true,
317 | Computed: true,
318 | },
319 | "action_script_max_time": {
320 | Type: schema.TypeString,
321 | Optional: true,
322 | Computed: true,
323 | },
324 | "action_script_track_alert": {
325 | Type: schema.TypeBool,
326 | Optional: true,
327 | Computed: true,
328 | },
329 | "action_script_ttl": {
330 | Type: schema.TypeString,
331 | Optional: true,
332 | Computed: true,
333 | },
334 | "action_slack": {
335 | Type: schema.TypeBool,
336 | Computed: true,
337 | },
338 | "action_slack_channel": {
339 | Type: schema.TypeString,
340 | Optional: true,
341 | Computed: true,
342 | },
343 | "action_slack_message": {
344 | Type: schema.TypeString,
345 | Optional: true,
346 | Computed: true,
347 | },
348 | "action_summary_index": {
349 | Type: schema.TypeBool,
350 | Computed: true,
351 | },
352 | "action_summary_index_name": {
353 | Type: schema.TypeString,
354 | Optional: true,
355 | Computed: true,
356 | },
357 | "action_summary_index_command": {
358 | Type: schema.TypeString,
359 | Optional: true,
360 | Computed: true,
361 | },
362 | "action_summary_index_hostname": {
363 | Type: schema.TypeString,
364 | Optional: true,
365 | Computed: true,
366 | },
367 | "action_summary_index_inline": {
368 | Type: schema.TypeBool,
369 | Optional: true,
370 | Computed: true,
371 | },
372 | "action_summary_index_max_results": {
373 | Type: schema.TypeInt,
374 | Optional: true,
375 | Default: 10000,
376 | },
377 | "action_summary_index_max_time": {
378 | Type: schema.TypeString,
379 | Optional: true,
380 | Computed: true,
381 | },
382 | "action_summary_index_track_alert": {
383 | Type: schema.TypeBool,
384 | Optional: true,
385 | Computed: true,
386 | },
387 | "action_summary_index_ttl": {
388 | Type: schema.TypeString,
389 | Optional: true,
390 | Computed: true,
391 | },
392 | "actions": {
393 | Type: schema.TypeString,
394 | Optional: true,
395 | Computed: true,
396 | },
397 | "alert_digest_mode": {
398 | Type: schema.TypeBool,
399 | Optional: true,
400 | Default: true,
401 | },
402 | "alert_expires": {
403 | Type: schema.TypeString,
404 | Optional: true,
405 | Default: "24h",
406 | },
407 | "alert_severity": {
408 | Type: schema.TypeInt,
409 | Optional: true,
410 | Default: 3,
411 | },
412 | "alert_suppress": {
413 | Type: schema.TypeBool,
414 | Optional: true,
415 | Computed: true,
416 | },
417 | "alert_suppress_fields": {
418 | Type: schema.TypeString,
419 | Optional: true,
420 | Computed: true,
421 | },
422 | "alert_suppress_period": {
423 | Type: schema.TypeString,
424 | Optional: true,
425 | Computed: true,
426 | },
427 | "alert_track": {
428 | Type: schema.TypeString,
429 | Optional: true,
430 | Computed: true,
431 | },
432 | "alert_comparator": {
433 | Type: schema.TypeString,
434 | Optional: true,
435 | Default: "greater than",
436 | },
437 | "alert_condition": {
438 | Type: schema.TypeString,
439 | Optional: true,
440 | Computed: true,
441 | },
442 | "alert_threshold": {
443 | Type: schema.TypeString,
444 | Optional: true,
445 | Default: "0",
446 | },
447 | "alert_type": {
448 | Type: schema.TypeString,
449 | Optional: true,
450 | Default: "number of events",
451 | },
452 | "auto_summarize": {
453 | Type: schema.TypeBool,
454 | Optional: true,
455 | Computed: true,
456 | },
457 | "auto_summarize_command": {
458 | Type: schema.TypeString,
459 | Optional: true,
460 | Computed: true,
461 | },
462 | "auto_summarize_cron_schedule": {
463 | Type: schema.TypeString,
464 | Optional: true,
465 | Computed: true,
466 | },
467 | "auto_summarize_dispatch_earliest_time": {
468 | Type: schema.TypeString,
469 | Optional: true,
470 | Computed: true,
471 | },
472 | "auto_summarize_dispatch_latest_time": {
473 | Type: schema.TypeString,
474 | Optional: true,
475 | Computed: true,
476 | },
477 | "auto_summarize_dispatch_time_format": {
478 | Type: schema.TypeString,
479 | Optional: true,
480 | Computed: true,
481 | },
482 | "auto_summarize_dispatch_ttl": {
483 | Type: schema.TypeString,
484 | Optional: true,
485 | Computed: true,
486 | },
487 | "auto_summarize_max_disabled_buckets": {
488 | Type: schema.TypeInt,
489 | Optional: true,
490 | Computed: true,
491 | },
492 | "auto_summarize_max_summary_ratio": {
493 | Type: schema.TypeFloat,
494 | Optional: true,
495 | Computed: true,
496 | },
497 | "auto_summarize_max_summary_size": {
498 | Type: schema.TypeInt,
499 | Optional: true,
500 | Computed: true,
501 | },
502 | "auto_summarize_max_time": {
503 | Type: schema.TypeInt,
504 | Optional: true,
505 | Computed: true,
506 | },
507 | "auto_summarize_suspend_period": {
508 | Type: schema.TypeString,
509 | Optional: true,
510 | Computed: true,
511 | },
512 | "auto_summarize_timespan": {
513 | Type: schema.TypeString,
514 | Optional: true,
515 | Computed: true,
516 | },
517 | "cron_schedule": {
518 | Type: schema.TypeString,
519 | Optional: true,
520 | Computed: true,
521 | },
522 | "description": {
523 | Type: schema.TypeString,
524 | Optional: true,
525 | Computed: true,
526 | },
527 | "disabled": {
528 | Type: schema.TypeBool,
529 | Optional: true,
530 | Default: false,
531 | },
532 | "dispatch_buckets": {
533 | Type: schema.TypeInt,
534 | Optional: true,
535 | Computed: true,
536 | },
537 | "dispatch_indexed_realtime": {
538 | Type: schema.TypeBool,
539 | Optional: true,
540 | Computed: true,
541 | },
542 | "dispatch_lookups": {
543 | Type: schema.TypeBool,
544 | Optional: true,
545 | Computed: true,
546 | },
547 | "dispatch_max_time": {
548 | Type: schema.TypeInt,
549 | Optional: true,
550 | Computed: true,
551 | },
552 | "dispatch_reduce_freq": {
553 | Type: schema.TypeInt,
554 | Optional: true,
555 | Computed: true,
556 | },
557 | "dispatch_rt_backfill": {
558 | Type: schema.TypeBool,
559 | Optional: true,
560 | Computed: true,
561 | },
562 | "dispatch_spawn_process": {
563 | Type: schema.TypeBool,
564 | Optional: true,
565 | Computed: true,
566 | },
567 | "dispatch_time_format": {
568 | Type: schema.TypeString,
569 | Optional: true,
570 | Computed: true,
571 | },
572 | "dispatch_ttl": {
573 | Type: schema.TypeString,
574 | Optional: true,
575 | Computed: true,
576 | },
577 | "dispatch_earliest_time": {
578 | Type: schema.TypeString,
579 | Optional: true,
580 | Default: "-30m",
581 | },
582 | "dispatch_latest_time": {
583 | Type: schema.TypeString,
584 | Optional: true,
585 | Default: "now",
586 | },
587 | "dispatch_max_count": {
588 | Type: schema.TypeInt,
589 | Optional: true,
590 | Default: 500000,
591 | },
592 | "displayview": {
593 | Type: schema.TypeString,
594 | Optional: true,
595 | Computed: true,
596 | },
597 | "is_scheduled": {
598 | Type: schema.TypeBool,
599 | Optional: true,
600 | Default: false,
601 | },
602 | "is_visible": {
603 | Type: schema.TypeBool,
604 | Optional: true,
605 | Default: true,
606 | },
607 | "max_concurrent": {
608 | Type: schema.TypeInt,
609 | Optional: true,
610 | Default: 1,
611 | },
612 | "realtime_schedule": {
613 | Type: schema.TypeBool,
614 | Optional: true,
615 | Computed: true,
616 | },
617 | "request_ui_dispatch_app": {
618 | Type: schema.TypeString,
619 | Optional: true,
620 | Default: "search",
621 | },
622 | "request_ui_dispatch_view": {
623 | Type: schema.TypeString,
624 | Optional: true,
625 | Default: "search",
626 | },
627 | "restart_on_searchpeer_add": {
628 | Type: schema.TypeBool,
629 | Optional: true,
630 | Computed: true,
631 | },
632 | "run_on_startup": {
633 | Type: schema.TypeBool,
634 | Optional: true,
635 | Computed: true,
636 | },
637 | "vsid": {
638 | Type: schema.TypeString,
639 | Optional: true,
640 | Computed: true,
641 | },
642 | },
643 | }
644 | }
645 |
646 | func resourceSplunkSavedSearchCreate(d *schema.ResourceData, meta interface{}) error {
647 | c := meta.(*splunk.Client)
648 |
649 | s := savedSearchFromResourceData(d)
650 |
651 | log.Printf("[DEBUG] Splunk Saved Search create configuration: %#v", s)
652 |
653 | r, err := c.SavedSearchCreate(s)
654 | if err != nil {
655 | return fmt.Errorf("Failed to create saved search: %s", err)
656 | }
657 |
658 | d.SetId(r.Name)
659 |
660 | log.Printf("[INFO] Splunk Saved Search ID: %s", d.Id())
661 |
662 | resourceSplunkSavedSearchAclUpdate(c, s)
663 |
664 | return resourceSplunkSavedSearchRead(d, meta)
665 | }
666 |
667 | func resourceSplunkSavedSearchRead(d *schema.ResourceData, meta interface{}) error {
668 | client := meta.(*splunk.Client)
669 | savedSearch, err := client.SavedSearchRead(d.Id())
670 | if err != nil {
671 | if strings.Contains(err.Error(), "404") {
672 | log.Printf("[WARN] Removing resource from state because it's not found in API")
673 | d.SetId("")
674 | return nil
675 | }
676 | return err
677 | }
678 |
679 | d.SetId(savedSearch.Name)
680 |
681 | d.Set("name", savedSearch.Name)
682 | d.Set("search", savedSearch.Configuration.Search)
683 | d.Set("cron_schedule", savedSearch.Configuration.CronSchedule)
684 | d.Set("description", savedSearch.Configuration.Description)
685 | d.Set("disabled", savedSearch.Configuration.Disabled)
686 | d.Set("dispatch_earliest_time", savedSearch.Configuration.DispatchEarliestTime)
687 | d.Set("dispatch_latest_time", savedSearch.Configuration.DispatchLatestTime)
688 | d.Set("dispatch_max_count", savedSearch.Configuration.DispatchMaxCount)
689 | d.Set("is_scheduled", savedSearch.Configuration.IsScheduled)
690 | d.Set("is_visible", savedSearch.Configuration.IsVisible)
691 | d.Set("action_email", savedSearch.Configuration.ActionEmail)
692 | d.Set("action_email_auth_username", savedSearch.Configuration.ActionEmailAuthUsername)
693 | d.Set("action_email_auth_password", savedSearch.Configuration.ActionEmailAuthPassword)
694 | d.Set("action_email_bcc", savedSearch.Configuration.ActionEmailBCC)
695 | d.Set("action_email_cc", savedSearch.Configuration.ActionEmailCC)
696 | d.Set("action_email_format", savedSearch.Configuration.ActionEmailFormat)
697 | d.Set("action_email_from", savedSearch.Configuration.ActionEmailFrom)
698 | d.Set("action_email_hostname", savedSearch.Configuration.ActionEmailHostname)
699 | d.Set("action_email_inline", savedSearch.Configuration.ActionEmailInline)
700 | d.Set("action_email_mailserver", savedSearch.Configuration.ActionEmailMailserver)
701 | d.Set("action_email_max_results", savedSearch.Configuration.ActionEmailMaxResults)
702 | d.Set("action_email_max_time", savedSearch.Configuration.ActionEmailMaxTime)
703 | d.Set("action_email_message_alert", savedSearch.Configuration.ActionEmailMessageAlert)
704 | d.Set("action_email_pdfview", savedSearch.Configuration.ActionEmailPDFView)
705 | d.Set("action_email_preprocess_results", savedSearch.Configuration.ActionEmailPreprocessResults)
706 | d.Set("action_email_report_cid_font_list", savedSearch.Configuration.ActionEmailReportCIDFontList)
707 | d.Set("action_email_report_include_splunk_logo", savedSearch.Configuration.ActionEmailReportIncludeSplunkLogo)
708 | d.Set("action_email_report_paper_orientation", savedSearch.Configuration.ActionEmailReportPaperOrientation)
709 | d.Set("action_email_report_paper_size", savedSearch.Configuration.ActionEmailReportPaperSize)
710 | d.Set("action_email_report_server_enabled", savedSearch.Configuration.ActionEmailReportServerEnabled)
711 | d.Set("action_email_report_server_url", savedSearch.Configuration.ActionEmailReportServerURL)
712 | d.Set("action_email_send_pdf", savedSearch.Configuration.ActionEmailSendPDF)
713 | d.Set("action_email_send_results", savedSearch.Configuration.ActionEmailSendResults)
714 | d.Set("action_email_subject", savedSearch.Configuration.ActionEmailSubject)
715 | d.Set("action_email_to", savedSearch.Configuration.ActionEmailTo)
716 | d.Set("action_email_track_alert", savedSearch.Configuration.ActionEmailTrackAlert)
717 | d.Set("action_email_ttl", savedSearch.Configuration.ActionEmailTTL)
718 | d.Set("action_email_use_ssl", savedSearch.Configuration.ActionEmailUseSSL)
719 | d.Set("action_email_use_tls", savedSearch.Configuration.ActionEmailUseTLS)
720 | d.Set("action_email_width_sort_columns", savedSearch.Configuration.ActionEmailWidthSortColumns)
721 | d.Set("action_populate_lookup", savedSearch.Configuration.ActionPopulateLookup)
722 | d.Set("action_populate_lookup_command", savedSearch.Configuration.ActionPopulateLookupCommand)
723 | d.Set("action_populate_lookup_dest", savedSearch.Configuration.ActionPopulateLookupDest)
724 | d.Set("action_populate_lookup_hostname", savedSearch.Configuration.ActionPopulateLookupHostname)
725 | d.Set("action_populate_lookup_max_results", savedSearch.Configuration.ActionPopulateLookupMaxResults)
726 | d.Set("action_populate_lookup_max_time", savedSearch.Configuration.ActionPopulateLookupMaxTime)
727 | d.Set("action_populate_lookup_track_alert", savedSearch.Configuration.ActionPopulateLookupTrackAlert)
728 | d.Set("action_populate_lookup_ttl", savedSearch.Configuration.ActionPopulateLookupTTL)
729 | d.Set("action_rss", savedSearch.Configuration.ActionRSS)
730 | d.Set("action_rss_command", savedSearch.Configuration.ActionRSSCommand)
731 | d.Set("action_rss_hostname", savedSearch.Configuration.ActionRSSHostname)
732 | d.Set("action_rss_max_results", savedSearch.Configuration.ActionRSSMaxResults)
733 | d.Set("action_rss_max_time", savedSearch.Configuration.ActionRSSMaxTime)
734 | d.Set("action_rss_track_alert", savedSearch.Configuration.ActionRSSTrackAlert)
735 | d.Set("action_rss_ttl", savedSearch.Configuration.ActionRSSTTL)
736 | d.Set("action_slack", savedSearch.Configuration.ActionSlack)
737 | d.Set("action_slack_channel", savedSearch.Configuration.ActionSlackChannel)
738 | d.Set("action_slack_message", savedSearch.Configuration.ActionSlackMessage)
739 | d.Set("action_script", savedSearch.Configuration.ActionScript)
740 | d.Set("action_script_command", savedSearch.Configuration.ActionScriptCommand)
741 | d.Set("action_script_filename", savedSearch.Configuration.ActionScriptFilename)
742 | d.Set("action_script_hostname", savedSearch.Configuration.ActionScriptHostname)
743 | d.Set("action_script_max_results", savedSearch.Configuration.ActionScriptMaxResults)
744 | d.Set("action_script_max_time", savedSearch.Configuration.ActionScriptMaxTime)
745 | d.Set("action_script_track_alert", savedSearch.Configuration.ActionScriptTrackAlert)
746 | d.Set("action_script_ttl", savedSearch.Configuration.ActionScriptTTL)
747 | d.Set("action_summary_index", savedSearch.Configuration.ActionSummaryIndex)
748 | d.Set("action_summary_index_name", savedSearch.Configuration.ActionSummaryIndexName)
749 | d.Set("action_summary_index_command", savedSearch.Configuration.ActionSummaryIndexCommand)
750 | d.Set("action_summary_index_hostname", savedSearch.Configuration.ActionSummaryIndexHostname)
751 | d.Set("action_summary_index_inline", savedSearch.Configuration.ActionSummaryIndexInline)
752 | d.Set("action_summary_index_max_results", savedSearch.Configuration.ActionSummaryIndexMaxResults)
753 | d.Set("action_summary_index_max_time", savedSearch.Configuration.ActionSummaryIndexMaxTime)
754 | d.Set("action_summary_index_track_alert", savedSearch.Configuration.ActionSummaryIndexTrackAlert)
755 | d.Set("action_summary_index_ttl", savedSearch.Configuration.ActionSummaryIndexTTL)
756 | d.Set("actions", savedSearch.Configuration.Actions)
757 | d.Set("alert_digest_mode", savedSearch.Configuration.AlertDigestMode)
758 | d.Set("alert_expires", savedSearch.Configuration.AlertExpires)
759 | d.Set("alert_severity", savedSearch.Configuration.AlertSeverity)
760 | d.Set("alert_suppress", savedSearch.Configuration.AlertSuppress)
761 | d.Set("alert_suppress_fields", savedSearch.Configuration.AlertSuppressFields)
762 | d.Set("alert_suppress_period", savedSearch.Configuration.AlertSuppressPeriod)
763 | d.Set("alert_track", savedSearch.Configuration.AlertTrack)
764 | d.Set("alert_comparator", savedSearch.Configuration.AlertComparator)
765 | d.Set("alert_condition", savedSearch.Configuration.AlertCondition)
766 | d.Set("alert_threshold", savedSearch.Configuration.AlertThreshold)
767 | d.Set("alert_type", savedSearch.Configuration.AlertType)
768 | d.Set("auto_summarize", savedSearch.Configuration.AutoSummarize)
769 | d.Set("auto_summarize_command", savedSearch.Configuration.AutoSummarizeCommand)
770 | d.Set("auto_summarize_cron_schedule", savedSearch.Configuration.AutoSummarizeCronSchedule)
771 | d.Set("auto_summarize_dispatch_earliest_time", savedSearch.Configuration.AutoSummarizeDispatchEarliestTime)
772 | d.Set("auto_summarize_dispatch_latest_time", savedSearch.Configuration.AutoSummarizeDispatchLatestTime)
773 | d.Set("auto_summarize_dispatch_time_format", savedSearch.Configuration.AutoSummarizeDispatchTimeFormat)
774 | d.Set("auto_summarize_dispatch_ttl", savedSearch.Configuration.AutoSummarizeDispatchTTL)
775 | d.Set("auto_summarize_max_disabled_buckets", savedSearch.Configuration.AutoSummarizeMaxDisabledBuckets)
776 | d.Set("auto_summarize_max_summary_ratio", savedSearch.Configuration.AutoSummarizeMaxSummaryRatio)
777 | d.Set("auto_summarize_max_summary_size", savedSearch.Configuration.AutoSummarizeMaxSummarySize)
778 | d.Set("auto_summarize_max_time", savedSearch.Configuration.AutoSummarizeMaxTime)
779 | d.Set("auto_summarize_suspend_period", savedSearch.Configuration.AutoSummarizeSuspendPeriod)
780 | d.Set("auto_summarize_timespan", savedSearch.Configuration.AutoSummarizeTimespan)
781 | d.Set("dispatch_buckets", savedSearch.Configuration.DispatchBuckets)
782 | d.Set("dispatch_indexed_realtime", savedSearch.Configuration.DispatchIndexedRealtime)
783 | d.Set("dispatch_lookups", savedSearch.Configuration.DispatchLookups)
784 | d.Set("dispatch_max_time", savedSearch.Configuration.DispatchMaxTime)
785 | d.Set("dispatch_reduce_freq", savedSearch.Configuration.DispatchReduceFreq)
786 | d.Set("dispatch_rt_backfill", savedSearch.Configuration.DispatchRtBackfill)
787 | d.Set("dispatch_spawn_process", savedSearch.Configuration.DispatchSpawnProcess)
788 | d.Set("dispatch_time_format", savedSearch.Configuration.DispatchTimeFormat)
789 | d.Set("dispatch_ttl", savedSearch.Configuration.DispatchTTL)
790 | d.Set("dispatch_earliest_time", savedSearch.Configuration.DispatchEarliestTime)
791 | d.Set("dispatch_latest_time", savedSearch.Configuration.DispatchLatestTime)
792 | d.Set("dispatch_max_count", savedSearch.Configuration.DispatchMaxCount)
793 | d.Set("displayview", savedSearch.Configuration.DisplayView)
794 | d.Set("max_concurrent", savedSearch.Configuration.MaxConcurrent)
795 | d.Set("realtime_schedule", savedSearch.Configuration.RealtimeSchedule)
796 | d.Set("request_ui_dispatch_app", savedSearch.Configuration.RequestUIDispatchApp)
797 | d.Set("request_ui_dispatch_view", savedSearch.Configuration.RequestUIDispatchView)
798 | d.Set("restart_on_searchpeer_add", savedSearch.Configuration.RestartOnSearchPeerAdd)
799 | d.Set("run_on_startup", savedSearch.Configuration.RunOnStartup)
800 | d.Set("vsid", savedSearch.Configuration.VSID)
801 |
802 | f := flattenAcl(&savedSearch.ACL)
803 | log.Printf("[DEBUG] Flattened ACL: %#v", f)
804 | err = d.Set("acl", f)
805 | if err != nil {
806 | return err
807 | }
808 |
809 | return nil
810 | }
811 |
812 | func flattenAcl(a *splunk.ACL) []interface{} {
813 | m := make(map[string]interface{})
814 |
815 | m["app"] = a.App
816 | m["owner"] = a.Owner
817 | m["sharing"] = a.Sharing
818 | m["read"] = a.Perms.Read
819 | m["write"] = a.Perms.Write
820 | return []interface{}{m}
821 | }
822 |
823 | func resourceSplunkSavedSearchUpdate(d *schema.ResourceData, meta interface{}) error {
824 | c := meta.(*splunk.Client)
825 |
826 | s := savedSearchFromResourceData(d)
827 |
828 | log.Printf("[DEBUG] Splunk Saved Search update configuration: %#v", s)
829 | _, err := c.SavedSearchUpdate(s)
830 | if err != nil {
831 | return fmt.Errorf("Failed to update Splunk Saved Search: %s", err)
832 | }
833 |
834 | resourceSplunkSavedSearchAclUpdate(c, s)
835 |
836 | return resourceSplunkSavedSearchRead(d, meta)
837 | }
838 |
839 | func resourceSplunkSavedSearchAclUpdate(c *splunk.Client, s *splunk.SavedSearch) error {
840 | log.Printf("[DEBUG] Splunk Saved Search ACL update configuration: %#v", s.ACL)
841 | _, err := c.SavedSearchACLUpdate(&s.ACL, s.Name)
842 |
843 | if err != nil {
844 | return fmt.Errorf("Failed to update Splunk Saved Search ACL: %s", err)
845 | }
846 |
847 | return nil
848 | }
849 |
850 | func resourceSplunkSavedSearchDelete(d *schema.ResourceData, meta interface{}) error {
851 | c := meta.(*splunk.Client)
852 |
853 | log.Printf("[INFO] Deleting Splunk Saved Search: %s", d.Id())
854 |
855 | err := c.SavedSearchDelete(d.Id())
856 | if err != nil {
857 | return fmt.Errorf("Error deleting Splunk Saved Search: %s", err)
858 | }
859 |
860 | return nil
861 | }
862 |
863 | func savedSearchFromResourceData(d *schema.ResourceData) *splunk.SavedSearch {
864 | savedSearch := &splunk.SavedSearch{
865 | Name: d.Get("name").(string),
866 | Configuration: splunk.SavedSearchConfiguration{
867 | ActionEmailAuthPassword: d.Get("action_email_auth_password").(string),
868 | ActionEmailAuthUsername: d.Get("action_email_auth_username").(string),
869 | ActionEmailBCC: d.Get("action_email_bcc").(string),
870 | ActionEmailCC: d.Get("action_email_cc").(string),
871 | ActionEmailFormat: d.Get("action_email_format").(string),
872 | ActionEmailFrom: d.Get("action_email_from").(string),
873 | ActionEmailHostname: d.Get("action_email_hostname").(string),
874 | ActionEmailInline: d.Get("action_email_inline").(bool),
875 | ActionEmailMailserver: d.Get("action_email_mailserver").(string),
876 | ActionEmailMaxResults: d.Get("action_email_max_results").(int),
877 | ActionEmailMaxTime: d.Get("action_email_max_time").(string),
878 | ActionEmailMessageAlert: d.Get("action_email_message_alert").(string),
879 | ActionEmailPDFView: d.Get("action_email_pdfview").(string),
880 | ActionEmailPreprocessResults: d.Get("action_email_preprocess_results").(string),
881 | ActionEmailReportCIDFontList: d.Get("action_email_report_cid_font_list").(string),
882 | ActionEmailReportIncludeSplunkLogo: d.Get("action_email_report_include_splunk_logo").(bool),
883 | ActionEmailReportPaperOrientation: d.Get("action_email_report_paper_orientation").(string),
884 | ActionEmailReportPaperSize: d.Get("action_email_report_paper_size").(string),
885 | ActionEmailReportServerEnabled: d.Get("action_email_report_server_enabled").(bool),
886 | ActionEmailReportServerURL: d.Get("action_email_report_server_url").(string),
887 | ActionEmailSendPDF: d.Get("action_email_send_pdf").(bool),
888 | ActionEmailSendResults: d.Get("action_email_send_results").(bool),
889 | ActionEmailSubject: d.Get("action_email_subject").(string),
890 | ActionEmailTo: d.Get("action_email_to").(string),
891 | ActionEmailTrackAlert: d.Get("action_email_track_alert").(bool),
892 | ActionEmailTTL: d.Get("action_email_ttl").(string),
893 | ActionEmailUseSSL: d.Get("action_email_use_ssl").(bool),
894 | ActionEmailUseTLS: d.Get("action_email_use_tls").(bool),
895 | ActionEmailWidthSortColumns: d.Get("action_email_width_sort_columns").(bool),
896 | ActionPopulateLookupCommand: d.Get("action_populate_lookup_command").(string),
897 | ActionPopulateLookupDest: d.Get("action_populate_lookup_dest").(string),
898 | ActionPopulateLookupHostname: d.Get("action_populate_lookup_hostname").(string),
899 | ActionPopulateLookupMaxResults: d.Get("action_populate_lookup_max_results").(int),
900 | ActionPopulateLookupMaxTime: d.Get("action_populate_lookup_max_time").(string),
901 | ActionPopulateLookupTrackAlert: d.Get("action_populate_lookup_track_alert").(bool),
902 | ActionPopulateLookupTTL: d.Get("action_populate_lookup_ttl").(string),
903 | ActionRSSCommand: d.Get("action_rss_command").(string),
904 | ActionRSSHostname: d.Get("action_rss_hostname").(string),
905 | ActionRSSMaxResults: d.Get("action_rss_max_results").(int),
906 | ActionRSSMaxTime: d.Get("action_rss_max_time").(string),
907 | ActionRSSTrackAlert: d.Get("action_rss_track_alert").(bool),
908 | ActionRSSTTL: d.Get("action_rss_ttl").(string),
909 | Actions: d.Get("actions").(string),
910 | ActionScriptCommand: d.Get("action_script_command").(string),
911 | ActionScriptFilename: d.Get("action_script_filename").(string),
912 | ActionScriptHostname: d.Get("action_script_hostname").(string),
913 | ActionScriptMaxResults: d.Get("action_script_max_results").(int),
914 | ActionScriptMaxTime: d.Get("action_script_max_time").(string),
915 | ActionScriptTrackAlert: d.Get("action_script_track_alert").(bool),
916 | ActionScriptTTL: d.Get("action_script_ttl").(string),
917 | ActionSlack: d.Get("action_slack").(bool),
918 | ActionSlackChannel: d.Get("action_slack_channel").(string),
919 | ActionSlackMessage: d.Get("action_slack_message").(string),
920 | ActionSummaryIndexCommand: d.Get("action_summary_index_command").(string),
921 | ActionSummaryIndexHostname: d.Get("action_summary_index_hostname").(string),
922 | ActionSummaryIndexInline: d.Get("action_summary_index_inline").(bool),
923 | ActionSummaryIndexMaxResults: d.Get("action_summary_index_max_results").(int),
924 | ActionSummaryIndexMaxTime: d.Get("action_summary_index_max_time").(string),
925 | ActionSummaryIndexName: d.Get("action_summary_index_name").(string),
926 | ActionSummaryIndexTrackAlert: d.Get("action_summary_index_track_alert").(bool),
927 | ActionSummaryIndexTTL: d.Get("action_summary_index_ttl").(string),
928 | AlertComparator: d.Get("alert_comparator").(string),
929 | AlertCondition: d.Get("alert_condition").(string),
930 | AlertDigestMode: d.Get("alert_digest_mode").(bool),
931 | AlertExpires: d.Get("alert_expires").(string),
932 | AlertSeverity: d.Get("alert_severity").(int),
933 | AlertSuppress: d.Get("alert_suppress").(bool),
934 | AlertSuppressFields: d.Get("alert_suppress_fields").(string),
935 | AlertSuppressPeriod: d.Get("alert_suppress_period").(string),
936 | AlertThreshold: d.Get("alert_threshold").(string),
937 | AlertTrack: d.Get("alert_track").(string),
938 | AlertType: d.Get("alert_type").(string),
939 | AutoSummarize: d.Get("auto_summarize").(bool),
940 | AutoSummarizeCommand: d.Get("auto_summarize_command").(string),
941 | AutoSummarizeCronSchedule: d.Get("auto_summarize_cron_schedule").(string),
942 | AutoSummarizeDispatchEarliestTime: d.Get("auto_summarize_dispatch_earliest_time").(string),
943 | AutoSummarizeDispatchLatestTime: d.Get("auto_summarize_dispatch_latest_time").(string),
944 | AutoSummarizeDispatchTimeFormat: d.Get("auto_summarize_dispatch_time_format").(string),
945 | AutoSummarizeDispatchTTL: d.Get("auto_summarize_dispatch_ttl").(string),
946 | AutoSummarizeMaxDisabledBuckets: d.Get("auto_summarize_max_disabled_buckets").(int),
947 | AutoSummarizeMaxSummaryRatio: d.Get("auto_summarize_max_summary_ratio").(float64),
948 | AutoSummarizeMaxSummarySize: d.Get("auto_summarize_max_summary_size").(int),
949 | AutoSummarizeMaxTime: d.Get("auto_summarize_max_time").(int),
950 | AutoSummarizeSuspendPeriod: d.Get("auto_summarize_suspend_period").(string),
951 | AutoSummarizeTimespan: d.Get("auto_summarize_timespan").(string),
952 | CronSchedule: d.Get("cron_schedule").(string),
953 | Description: d.Get("description").(string),
954 | Disabled: d.Get("disabled").(bool),
955 | DispatchBuckets: d.Get("dispatch_buckets").(int),
956 | DispatchEarliestTime: d.Get("dispatch_earliest_time").(string),
957 | DispatchIndexedRealtime: d.Get("dispatch_indexed_realtime").(bool),
958 | DispatchLatestTime: d.Get("dispatch_latest_time").(string),
959 | DispatchLookups: d.Get("dispatch_lookups").(bool),
960 | DispatchMaxCount: d.Get("dispatch_max_count").(int),
961 | DispatchMaxTime: d.Get("dispatch_max_time").(int),
962 | DispatchReduceFreq: d.Get("dispatch_reduce_freq").(int),
963 | DispatchRtBackfill: d.Get("dispatch_rt_backfill").(bool),
964 | DispatchSpawnProcess: d.Get("dispatch_spawn_process").(bool),
965 | DispatchTimeFormat: d.Get("dispatch_time_format").(string),
966 | DispatchTTL: d.Get("dispatch_ttl").(string),
967 | DisplayView: d.Get("displayview").(string),
968 | IsScheduled: d.Get("is_scheduled").(bool),
969 | IsVisible: d.Get("is_visible").(bool),
970 | MaxConcurrent: d.Get("max_concurrent").(int),
971 | RealtimeSchedule: d.Get("realtime_schedule").(bool),
972 | RequestUIDispatchApp: d.Get("request_ui_dispatch_app").(string),
973 | RequestUIDispatchView: d.Get("request_ui_dispatch_view").(string),
974 | RestartOnSearchPeerAdd: d.Get("restart_on_searchpeer_add").(bool),
975 | RunOnStartup: d.Get("run_on_startup").(bool),
976 | Search: d.Get("search").(string),
977 | VSID: d.Get("vsid").(string),
978 | },
979 | }
980 |
981 | a := d.Get("acl").([]interface{})
982 | if len(a) > 0 {
983 | m := a[0].(map[string]interface{})
984 |
985 | savedSearch.ACL = splunk.ACL{
986 | App: m["app"].(string),
987 | Owner: m["owner"].(string),
988 | Sharing: m["sharing"].(string),
989 | }
990 |
991 | savedSearch.ACL.Perms.Read = stringArrayFromInterface(m["read"].([]interface{}))
992 | savedSearch.ACL.Perms.Write = stringArrayFromInterface(m["write"].([]interface{}))
993 | }
994 | return savedSearch
995 | }
996 |
997 | func stringArrayFromInterface(i []interface{}) (s []string) {
998 | s = make([]string, len(i))
999 |
1000 | for idx, v := range i {
1001 | s[idx] = v.(string)
1002 | }
1003 | return
1004 | }
1005 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
2 | cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
3 | cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
4 | cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8=
5 | cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40=
6 | dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
7 | dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
8 | dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
9 | dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
10 | git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
11 | github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
12 | github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
13 | github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
14 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
15 | github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
16 | github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
17 | github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
18 | github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
19 | github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
20 | github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
21 | github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
22 | github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
23 | github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
24 | github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M=
25 | github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w=
26 | github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
27 | github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
28 | github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
29 | github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
30 | github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
31 | github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
32 | github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
33 | github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
34 | github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
35 | github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
36 | github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
37 | github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
38 | github.com/aws/aws-sdk-go v1.16.36/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
39 | github.com/aws/aws-sdk-go v1.19.18 h1:Hb3+b9HCqrOrbAtFstUWg7H5TQ+/EcklJtE8VShVs8o=
40 | github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
41 | github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
42 | github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
43 | github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
44 | github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
45 | github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
46 | github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
47 | github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
48 | github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
49 | github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
50 | github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k=
51 | github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
52 | github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
53 | github.com/chzyer/readline v0.0.0-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
54 | github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
55 | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
56 | github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
57 | github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
58 | github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
59 | github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
60 | github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
61 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
62 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
63 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
64 | github.com/denniswebb/go-splunk v0.0.0-20180501164408-314ac98ea67d h1:RaD21sB7q3MoEGD5UQVKWQhvKk18IO8XpDJIVFtPMn4=
65 | github.com/denniswebb/go-splunk v0.0.0-20180501164408-314ac98ea67d/go.mod h1:A5iygWMbCiKCYzAjo9NL80ziQkqFC24lk6FKptMT4rk=
66 | github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
67 | github.com/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
68 | github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
69 | github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
70 | github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
71 | github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y=
72 | github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
73 | github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
74 | github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
75 | github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
76 | github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
77 | github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
78 | github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg=
79 | github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
80 | github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
81 | github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
82 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
83 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
84 | github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
85 | github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
86 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
87 | github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk=
88 | github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
89 | github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
90 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
91 | github.com/golang/protobuf v1.3.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk=
92 | github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
93 | github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
94 | github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
95 | github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
96 | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
97 | github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
98 | github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
99 | github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
100 | github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
101 | github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
102 | github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU=
103 | github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
104 | github.com/googleapis/gax-go/v2 v2.0.3 h1:siORttZ36U2R/WjiJuDz8znElWBiAlO9rVt+mqJt0Cc=
105 | github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
106 | github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4=
107 | github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw=
108 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
109 | github.com/gorilla/schema v1.0.2 h1:sAgNfOcNYvdDSrzGHVy9nzCQahG+qmsg+nE8dK85QRA=
110 | github.com/gorilla/schema v1.0.2/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
111 | github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
112 | github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
113 | github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
114 | github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
115 | github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
116 | github.com/grpc-ecosystem/grpc-gateway v1.5.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
117 | github.com/hashicorp/aws-sdk-go-base v0.2.0/go.mod h1:ZIWACGGi0N7a4DZbf15yuE1JQORmWLtBcVM6F5SXNFU=
118 | github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI=
119 | github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
120 | github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
121 | github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
122 | github.com/hashicorp/go-azure-helpers v0.0.0-20190129193224-166dfd221bb2/go.mod h1:lu62V//auUow6k0IykxLK2DCNW8qTmpm8KqhYVWattA=
123 | github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
124 | github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig=
125 | github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
126 | github.com/hashicorp/go-getter v1.3.0 h1:pFMSFlI9l5NaeuzkpE3L7BYk9qQ9juTAgXW/H0cqxcU=
127 | github.com/hashicorp/go-getter v1.3.0/go.mod h1:/O1k/AizTN0QmfEKknCYGvICeyKUDqCYA8vvWtGWDeQ=
128 | github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
129 | github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f h1:Yv9YzBlAETjy6AOX9eLBZ3nshNVRREgerT/3nvxlGho=
130 | github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
131 | github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw=
132 | github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
133 | github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
134 | github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
135 | github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
136 | github.com/hashicorp/go-plugin v1.0.1-0.20190430211030-5692942914bb h1:Zg2pmmk0lrLFL85lQGt08bOUBpIBaVs6/psiAyx0c4w=
137 | github.com/hashicorp/go-plugin v1.0.1-0.20190430211030-5692942914bb/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
138 | github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
139 | github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
140 | github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
141 | github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
142 | github.com/hashicorp/go-slug v0.3.0/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8=
143 | github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
144 | github.com/hashicorp/go-tfe v0.3.16/go.mod h1:SuPHR+OcxvzBZNye7nGPfwZTEyd3rWPfLVbCgyZPezM=
145 | github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
146 | github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
147 | github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
148 | github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0=
149 | github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
150 | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
151 | github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
152 | github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
153 | github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
154 | github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef h1:xZRvbcwHY8zhaxDwgkmpAp2emwZkVn7p3gat0zhq2X0=
155 | github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef/go.mod h1:4oI94iqF3GB10QScn46WqbG0kgTUpha97SAzzg2+2ec=
156 | github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI=
157 | github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
158 | github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
159 | github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
160 | github.com/hashicorp/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE=
161 | github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE=
162 | github.com/hashicorp/terraform v0.12.0 h1:It2vmod2dBMB4+r+aUW2Afx0HlftyUwzNsNH3I2vrJ8=
163 | github.com/hashicorp/terraform v0.12.0/go.mod h1:Ke0ig9gGZ8rhV6OddAhBYt5nXmpvXsuNQQ8w9qYBZfU=
164 | github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI=
165 | github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8=
166 | github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
167 | github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M=
168 | github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
169 | github.com/hpcloud/tail v1.0.0/go.mod h1:lxSbAt0gGJC6vHUCzeVSbMF17n13eUwFIutoriFghY8=
170 | github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
171 | github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
172 | github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
173 | github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
174 | github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
175 | github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
176 | github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA=
177 | github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
178 | github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
179 | github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
180 | github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
181 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
182 | github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
183 | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
184 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
185 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
186 | github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
187 | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
188 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
189 | github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
190 | github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
191 | github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
192 | github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84=
193 | github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
194 | github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc=
195 | github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY=
196 | github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
197 | github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg=
198 | github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
199 | github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
200 | github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
201 | github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
202 | github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
203 | github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
204 | github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
205 | github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
206 | github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
207 | github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
208 | github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
209 | github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
210 | github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
211 | github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
212 | github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
213 | github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
214 | github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
215 | github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM=
216 | github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
217 | github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
218 | github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
219 | github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
220 | github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
221 | github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
222 | github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y=
223 | github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
224 | github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
225 | github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
226 | github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4/go.mod h1:YYMf4xtQnR8LRC0vKi3afvQ5QwRPQ17zjcpkBCufb+I=
227 | github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo=
228 | github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
229 | github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
230 | github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
231 | github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
232 | github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
233 | github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
234 | github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
235 | github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
236 | github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
237 | github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
238 | github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
239 | github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
240 | github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
241 | github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
242 | github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
243 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
244 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
245 | github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
246 | github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI=
247 | github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
248 | github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
249 | github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
250 | github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
251 | github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
252 | github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
253 | github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
254 | github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
255 | github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
256 | github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
257 | github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
258 | github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
259 | github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0=
260 | github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
261 | github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
262 | github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
263 | github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI=
264 | github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU=
265 | github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag=
266 | github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg=
267 | github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw=
268 | github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y=
269 | github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
270 | github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
271 | github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ=
272 | github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I=
273 | github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0=
274 | github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ=
275 | github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk=
276 | github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
277 | github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
278 | github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
279 | github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A=
280 | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
281 | github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
282 | github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
283 | github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
284 | github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
285 | github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M=
286 | github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
287 | github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
288 | github.com/stretchr/objx v0.0.0-20140526180921-cbeaeb16a013/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
289 | github.com/stretchr/objx v0.1.0/go.mod h1:1aNKllrmB2mPbpRUVbdiFN/+8t4T27cR+qpvAuepiR8=
290 | github.com/stretchr/testify v1.2.0/go.mod h1:F2K8CODHCd9iPtvhlo3eXLQZoEVPb/Elp4sjBttvlHk=
291 | github.com/stretchr/testify v1.2.2/go.mod h1:feeNGc4w6kAHKczy2DsOK5ETp5a+FskYL7msJ3POvKk=
292 | github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
293 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
294 | github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw=
295 | github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
296 | github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew=
297 | github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
298 | github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
299 | github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok=
300 | github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
301 | github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
302 | github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU=
303 | github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
304 | github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
305 | github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
306 | github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
307 | github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
308 | github.com/zclconf/go-cty v0.0.0-20190426224007-b18a157db9e2/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
309 | github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec h1:MSeYjmyjucsFbecMTxg63ASg23lcSARP/kr9sClTFfk=
310 | github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
311 | go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938=
312 | go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
313 | go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
314 | go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
315 | go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
316 | go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
317 | golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
318 | golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
319 | golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
320 | golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
321 | golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
322 | golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
323 | golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
324 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
325 | golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo=
326 | golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
327 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
328 | golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
329 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
330 | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
331 | golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
332 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
333 | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
334 | golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
335 | golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
336 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
337 | golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
338 | golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
339 | golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
340 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
341 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
342 | golang.org/x/net v0.0.0-20190502183928-7f726cade0ab h1:9RfW3ktsOZxgo9YNbBAjq1FWzc/igwEcUzZz8IXgSbk=
343 | golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
344 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
345 | golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
346 | golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
347 | golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9 h1:pfyU+l9dEu0vZzDDMsdAKa1gZbJYEn6urYXj/+Xkz7s=
348 | golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
349 | golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
350 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
351 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
352 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
353 | golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
354 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
355 | golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
356 | golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
357 | golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
358 | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
359 | golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
360 | golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
361 | golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
362 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
363 | golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
364 | golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
365 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
366 | golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dzugGxJ/SQHoNufZJq1w=
367 | golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
368 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
369 | golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
370 | golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
371 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
372 | golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
373 | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
374 | golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
375 | golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
376 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
377 | golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
378 | google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
379 | google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
380 | google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI=
381 | google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y=
382 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
383 | google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
384 | google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
385 | google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
386 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
387 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
388 | google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
389 | google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
390 | google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
391 | google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 h1:mBVYJnbrXLA/ZCBTCe7PtEgAUP+1bg92qTaFoPHdz+8=
392 | google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4=
393 | google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
394 | google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
395 | google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
396 | google.golang.org/grpc v1.18.0 h1:IZl7mfBGfbhYx2p2rKRtYgDFw6SBz+kclmxYrCksPPA=
397 | google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
398 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
399 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
400 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
401 | gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
402 | gopkg.in/fsnotify.v1 v1.2.1/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
403 | gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
404 | gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
405 | gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
406 | gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
407 | gopkg.in/tomb.v1 v1.0.0-20140529071818-c131134a1947/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
408 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
409 | gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
410 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
411 | grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
412 | honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
413 | honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
414 | howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
415 | sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
416 | sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
417 |
--------------------------------------------------------------------------------