├── 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 | - [![Gitter chat](https://badges.gitter.im/hashicorp-terraform/Lobby.png)](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 | --------------------------------------------------------------------------------