summaryrefslogtreecommitdiff
path: root/vendor/github.com
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2019-02-07 18:50:16 -0500
committerDave Henderson <dhenderson@gmail.com>2019-02-07 18:50:16 -0500
commit0bcd783a71a57212bee74c0adf31b0f8adc67eea (patch)
tree4f3565804078e0d4c39da57cb41518ab7c3171bb /vendor/github.com
parent8a13b82081d98e7c425251daf0c4f58d363107e1 (diff)
Updating deps
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/Masterminds/goutils/cryptorandomstringutils.go251
-rw-r--r--vendor/github.com/Masterminds/goutils/wordutils.go11
-rw-r--r--vendor/github.com/armon/go-metrics/LICENSE20
-rw-r--r--vendor/github.com/armon/go-metrics/const_unix.go12
-rw-r--r--vendor/github.com/armon/go-metrics/const_windows.go13
-rw-r--r--vendor/github.com/armon/go-metrics/inmem.go348
-rw-r--r--vendor/github.com/armon/go-metrics/inmem_endpoint.go118
-rw-r--r--vendor/github.com/armon/go-metrics/inmem_signal.go117
-rw-r--r--vendor/github.com/armon/go-metrics/metrics.go278
-rw-r--r--vendor/github.com/armon/go-metrics/sink.go115
-rw-r--r--vendor/github.com/armon/go-metrics/start.go141
-rw-r--r--vendor/github.com/armon/go-metrics/statsd.go184
-rw-r--r--vendor/github.com/armon/go-metrics/statsite.go172
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go25
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/client/client.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/config.go60
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go (renamed from vendor/github.com/aws/aws-sdk-go/aws/context.go)40
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go9
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go11
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go (renamed from vendor/github.com/aws/aws-sdk-go/aws/context_1_6.go)15
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go20
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go24
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go37
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go425
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go30
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go58
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go26
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go67
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go6
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go37
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go1036
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go141
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go24
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/errors.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go3
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/request/request.go184
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go1
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/request/validation.go52
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/session/doc.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go19
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/session/session.go130
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go108
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go62
-rw-r--r--vendor/github.com/aws/aws-sdk-go/aws/version.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go120
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go11
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go35
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go29
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go4
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go24
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go17
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go51
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go165
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go347
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go324
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go30
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go152
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go39
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go43
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go60
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go41
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go45
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go35
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go284
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go166
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go25
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go24
-rw-r--r--vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go12
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/host.go68
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go54
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go20
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go2
-rw-r--r--vendor/github.com/aws/aws-sdk-go/service/ec2/api.go16793
-rw-r--r--vendor/github.com/aws/aws-sdk-go/service/ssm/api.go2276
-rw-r--r--vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go7
-rw-r--r--vendor/github.com/aws/aws-sdk-go/service/sts/api.go14
-rw-r--r--vendor/github.com/go-ini/ini/LICENSE191
-rw-r--r--vendor/github.com/go-ini/ini/error.go32
-rw-r--r--vendor/github.com/go-ini/ini/file.go414
-rw-r--r--vendor/github.com/go-ini/ini/ini.go211
-rw-r--r--vendor/github.com/go-ini/ini/key.go751
-rw-r--r--vendor/github.com/go-ini/ini/parser.go494
-rw-r--r--vendor/github.com/go-ini/ini/section.go258
-rw-r--r--vendor/github.com/go-ini/ini/struct.go512
-rw-r--r--vendor/github.com/gosimple/slug/languages_substitution.go40
-rw-r--r--vendor/github.com/gosimple/slug/slug.go8
-rw-r--r--vendor/github.com/hashicorp/consul/api/acl.go419
-rw-r--r--vendor/github.com/hashicorp/consul/api/agent.go197
-rw-r--r--vendor/github.com/hashicorp/consul/api/api.go64
-rw-r--r--vendor/github.com/hashicorp/consul/api/catalog.go39
-rw-r--r--vendor/github.com/hashicorp/consul/api/connect_ca.go6
-rw-r--r--vendor/github.com/hashicorp/consul/api/debug.go106
-rw-r--r--vendor/github.com/hashicorp/consul/api/health.go118
-rw-r--r--vendor/github.com/hashicorp/consul/api/kv.go160
-rw-r--r--vendor/github.com/hashicorp/consul/api/operator_keyring.go3
-rw-r--r--vendor/github.com/hashicorp/consul/api/txn.go230
-rw-r--r--vendor/github.com/hashicorp/consul/ui-v2/app/styles/components/notice.scss6
-rw-r--r--vendor/github.com/hashicorp/consul/website/source/api/operator/license.html.md18
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/LICENSE363
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/edges.go21
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/iradix.go662
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/iter.go91
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/node.go292
-rw-r--r--vendor/github.com/hashicorp/go-immutable-radix/raw_iter.go78
-rw-r--r--vendor/github.com/hashicorp/go-retryablehttp/client.go36
-rw-r--r--vendor/github.com/hashicorp/golang-lru/LICENSE362
-rw-r--r--vendor/github.com/hashicorp/golang-lru/simplelru/lru.go161
-rw-r--r--vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go36
-rw-r--r--vendor/github.com/hashicorp/serf/coordinate/client.go69
-rw-r--r--vendor/github.com/hashicorp/serf/coordinate/coordinate.go30
-rw-r--r--vendor/github.com/hashicorp/serf/website/LICENSE.md10
-rw-r--r--vendor/github.com/hashicorp/vault/api/auth_token.go1
-rw-r--r--vendor/github.com/hashicorp/vault/api/client.go10
-rw-r--r--vendor/github.com/hashicorp/vault/api/request.go4
-rw-r--r--vendor/github.com/hashicorp/vault/api/ssh_agent.go6
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_auth.go48
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_capabilities.go10
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_health.go1
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_leader.go1
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_mounts.go17
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_plugins.go137
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_policy.go14
-rw-r--r--vendor/github.com/hashicorp/vault/api/sys_seal.go17
-rw-r--r--vendor/github.com/hashicorp/vault/helper/compressutil/compress.go69
-rw-r--r--vendor/github.com/hashicorp/vault/helper/consts/plugin_types.go59
-rw-r--r--vendor/github.com/hashicorp/vault/helper/parseutil/parseutil.go4
-rw-r--r--vendor/github.com/hashicorp/vault/helper/strutil/strutil.go51
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/adapters/license.js36
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/components/license-info.js39
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/controllers/vault/cluster/license.js15
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/models/license.js30
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/routes/vault/cluster/license.js22
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/templates/components/license-info.hbs82
-rw-r--r--vendor/github.com/hashicorp/vault/ui/app/templates/vault/cluster/license.hbs9
-rw-r--r--vendor/github.com/hashicorp/vault/ui/tests/integration/components/license-info-test.js141
-rw-r--r--vendor/github.com/hashicorp/vault/ui/tests/pages/components/license-info.js18
-rw-r--r--vendor/github.com/hashicorp/vault/website/source/api/system/license.html.md3
-rw-r--r--vendor/github.com/jmespath/go-jmespath/api.go2
-rw-r--r--vendor/github.com/mitchellh/go-homedir/homedir.go10
-rw-r--r--vendor/github.com/mitchellh/mapstructure/decode_hooks.go46
-rw-r--r--vendor/github.com/mitchellh/mapstructure/mapstructure.go147
-rw-r--r--vendor/github.com/pierrec/lz4/LICENSE28
-rw-r--r--vendor/github.com/pierrec/lz4/block.go397
-rw-r--r--vendor/github.com/pierrec/lz4/debug.go23
-rw-r--r--vendor/github.com/pierrec/lz4/debug_stub.go7
-rw-r--r--vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go222
-rw-r--r--vendor/github.com/pierrec/lz4/lz4.go68
-rw-r--r--vendor/github.com/pierrec/lz4/lz4_go1.10.go29
-rw-r--r--vendor/github.com/pierrec/lz4/lz4_notgo1.10.go29
-rw-r--r--vendor/github.com/pierrec/lz4/reader.go295
-rw-r--r--vendor/github.com/pierrec/lz4/writer.go267
-rw-r--r--vendor/github.com/pkg/errors/errors.go43
-rw-r--r--vendor/github.com/pkg/errors/stack.go51
-rw-r--r--vendor/github.com/ryanuber/go-glob/glob.go27
-rw-r--r--vendor/github.com/spf13/afero/copyOnWriteFs.go5
-rw-r--r--vendor/github.com/spf13/afero/unionFile.go11
-rw-r--r--vendor/github.com/spf13/pflag/flag.go7
-rw-r--r--vendor/github.com/spf13/pflag/string_to_int.go149
-rw-r--r--vendor/github.com/spf13/pflag/string_to_string.go160
-rw-r--r--vendor/github.com/stretchr/testify/LICENSE35
-rw-r--r--vendor/github.com/stretchr/testify/assert/assertions.go32
-rw-r--r--vendor/github.com/ugorji/go/codec/0doc.go39
-rw-r--r--vendor/github.com/ugorji/go/codec/binc.go94
-rw-r--r--vendor/github.com/ugorji/go/codec/cbor.go81
-rw-r--r--vendor/github.com/ugorji/go/codec/codecgen.go13
-rw-r--r--vendor/github.com/ugorji/go/codec/decode.go1940
-rw-r--r--vendor/github.com/ugorji/go/codec/encode.go765
-rw-r--r--vendor/github.com/ugorji/go/codec/fast-path.generated.go2174
-rw-r--r--vendor/github.com/ugorji/go/codec/fast-path.not.go2
-rw-r--r--vendor/github.com/ugorji/go/codec/gen-helper.generated.go32
-rw-r--r--vendor/github.com/ugorji/go/codec/gen.generated.go4
-rw-r--r--vendor/github.com/ugorji/go/codec/gen.go40
-rw-r--r--vendor/github.com/ugorji/go/codec/helper.go1132
-rw-r--r--vendor/github.com/ugorji/go/codec/helper_not_unsafe.go72
-rw-r--r--vendor/github.com/ugorji/go/codec/helper_unsafe.go143
-rw-r--r--vendor/github.com/ugorji/go/codec/json.go217
-rw-r--r--vendor/github.com/ugorji/go/codec/msgpack.go151
-rw-r--r--vendor/github.com/ugorji/go/codec/rpc.go59
-rw-r--r--vendor/github.com/ugorji/go/codec/simple.go43
187 files changed, 34671 insertions, 7535 deletions
diff --git a/vendor/github.com/Masterminds/goutils/cryptorandomstringutils.go b/vendor/github.com/Masterminds/goutils/cryptorandomstringutils.go
new file mode 100644
index 00000000..177dd865
--- /dev/null
+++ b/vendor/github.com/Masterminds/goutils/cryptorandomstringutils.go
@@ -0,0 +1,251 @@
+/*
+Copyright 2014 Alexander Okoli
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package goutils
+
+import (
+ "crypto/rand"
+ "fmt"
+ "math"
+ "math/big"
+ "regexp"
+ "unicode"
+)
+
+/*
+CryptoRandomNonAlphaNumeric creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of all characters (ASCII/Unicode values between 0 to 2,147,483,647 (math.MaxInt32)).
+
+Parameter:
+ count - the length of random string to create
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomNonAlphaNumeric(count int) (string, error) {
+ return CryptoRandomAlphaNumericCustom(count, false, false)
+}
+
+/*
+CryptoRandomAscii creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of characters whose ASCII value is between 32 and 126 (inclusive).
+
+Parameter:
+ count - the length of random string to create
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomAscii(count int) (string, error) {
+ return CryptoRandom(count, 32, 127, false, false)
+}
+
+/*
+CryptoRandomNumeric creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of numeric characters.
+
+Parameter:
+ count - the length of random string to create
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomNumeric(count int) (string, error) {
+ return CryptoRandom(count, 0, 0, false, true)
+}
+
+/*
+CryptoRandomAlphabetic creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of alpha-numeric characters as indicated by the arguments.
+
+Parameters:
+ count - the length of random string to create
+ letters - if true, generated string may include alphabetic characters
+ numbers - if true, generated string may include numeric characters
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomAlphabetic(count int) (string, error) {
+ return CryptoRandom(count, 0, 0, true, false)
+}
+
+/*
+CryptoRandomAlphaNumeric creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of alpha-numeric characters.
+
+Parameter:
+ count - the length of random string to create
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomAlphaNumeric(count int) (string, error) {
+ if count == 0 {
+ return "", nil
+ }
+ RandomString, err := CryptoRandom(count, 0, 0, true, true)
+ if err != nil {
+ return "", fmt.Errorf("Error: %s", err)
+ }
+ match, err := regexp.MatchString("([0-9]+)", RandomString)
+ if err != nil {
+ panic(err)
+ }
+
+ if !match {
+ //Get the position between 0 and the length of the string-1 to insert a random number
+ position := getCryptoRandomInt(count)
+ //Insert a random number between [0-9] in the position
+ RandomString = RandomString[:position] + string('0' + getCryptoRandomInt(10)) + RandomString[position + 1:]
+ return RandomString, err
+ }
+ return RandomString, err
+
+}
+
+/*
+CryptoRandomAlphaNumericCustom creates a random string whose length is the number of characters specified.
+Characters will be chosen from the set of alpha-numeric characters as indicated by the arguments.
+
+Parameters:
+ count - the length of random string to create
+ letters - if true, generated string may include alphabetic characters
+ numbers - if true, generated string may include numeric characters
+
+Returns:
+ string - the random string
+ error - an error stemming from an invalid parameter within underlying function, CryptoRandom(...)
+*/
+func CryptoRandomAlphaNumericCustom(count int, letters bool, numbers bool) (string, error) {
+ return CryptoRandom(count, 0, 0, letters, numbers)
+}
+
+/*
+CryptoRandom creates a random string based on a variety of options, using using golang's crypto/rand source of randomness.
+If the parameters start and end are both 0, start and end are set to ' ' and 'z', the ASCII printable characters, will be used,
+unless letters and numbers are both false, in which case, start and end are set to 0 and math.MaxInt32, respectively.
+If chars is not nil, characters stored in chars that are between start and end are chosen.
+
+Parameters:
+ count - the length of random string to create
+ start - the position in set of chars (ASCII/Unicode int) to start at
+ end - the position in set of chars (ASCII/Unicode int) to end before
+ letters - if true, generated string may include alphabetic characters
+ numbers - if true, generated string may include numeric characters
+ chars - the set of chars to choose randoms from. If nil, then it will use the set of all chars.
+
+Returns:
+ string - the random string
+ error - an error stemming from invalid parameters: if count < 0; or the provided chars array is empty; or end <= start; or end > len(chars)
+*/
+func CryptoRandom(count int, start int, end int, letters bool, numbers bool, chars ...rune) (string, error) {
+ if count == 0 {
+ return "", nil
+ } else if count < 0 {
+ err := fmt.Errorf("randomstringutils illegal argument: Requested random string length %v is less than 0.", count) // equiv to err := errors.New("...")
+ return "", err
+ }
+ if chars != nil && len(chars) == 0 {
+ err := fmt.Errorf("randomstringutils illegal argument: The chars array must not be empty")
+ return "", err
+ }
+
+ if start == 0 && end == 0 {
+ if chars != nil {
+ end = len(chars)
+ } else {
+ if !letters && !numbers {
+ end = math.MaxInt32
+ } else {
+ end = 'z' + 1
+ start = ' '
+ }
+ }
+ } else {
+ if end <= start {
+ err := fmt.Errorf("randomstringutils illegal argument: Parameter end (%v) must be greater than start (%v)", end, start)
+ return "", err
+ }
+
+ if chars != nil && end > len(chars) {
+ err := fmt.Errorf("randomstringutils illegal argument: Parameter end (%v) cannot be greater than len(chars) (%v)", end, len(chars))
+ return "", err
+ }
+ }
+
+ buffer := make([]rune, count)
+ gap := end - start
+
+ // high-surrogates range, (\uD800-\uDBFF) = 55296 - 56319
+ // low-surrogates range, (\uDC00-\uDFFF) = 56320 - 57343
+
+ for count != 0 {
+ count--
+ var ch rune
+ if chars == nil {
+ ch = rune(getCryptoRandomInt(gap) + int64(start))
+ } else {
+ ch = chars[getCryptoRandomInt(gap) + int64(start)]
+ }
+
+ if letters && unicode.IsLetter(ch) || numbers && unicode.IsDigit(ch) || !letters && !numbers {
+ if ch >= 56320 && ch <= 57343 { // low surrogate range
+ if count == 0 {
+ count++
+ } else {
+ // Insert low surrogate
+ buffer[count] = ch
+ count--
+ // Insert high surrogate
+ buffer[count] = rune(55296 + getCryptoRandomInt(128))
+ }
+ } else if ch >= 55296 && ch <= 56191 { // High surrogates range (Partial)
+ if count == 0 {
+ count++
+ } else {
+ // Insert low surrogate
+ buffer[count] = rune(56320 + getCryptoRandomInt(128))
+ count--
+ // Insert high surrogate
+ buffer[count] = ch
+ }
+ } else if ch >= 56192 && ch <= 56319 {
+ // private high surrogate, skip it
+ count++
+ } else {
+ // not one of the surrogates*
+ buffer[count] = ch
+ }
+ } else {
+ count++
+ }
+ }
+ return string(buffer), nil
+}
+
+func getCryptoRandomInt(count int) int64 {
+ nBig, err := rand.Int(rand.Reader, big.NewInt(int64(count)))
+ if err != nil {
+ panic(err)
+ }
+ return nBig.Int64()
+}
diff --git a/vendor/github.com/Masterminds/goutils/wordutils.go b/vendor/github.com/Masterminds/goutils/wordutils.go
index e92dd399..034cad8e 100644
--- a/vendor/github.com/Masterminds/goutils/wordutils.go
+++ b/vendor/github.com/Masterminds/goutils/wordutils.go
@@ -129,14 +129,15 @@ func WrapCustom(str string, wrapLength int, newLineStr string, wrapLongWords boo
} else {
// long words aren't wrapped, just extended beyond limit
end := wrapLength + offset
- spaceToWrapAt = strings.IndexRune(str[end:len(str)], ' ') + end
- if spaceToWrapAt >= 0 {
+ index := strings.IndexRune(str[end:len(str)], ' ')
+ if index == -1 {
+ wrappedLine.WriteString(str[offset:len(str)])
+ offset = inputLineLength
+ } else {
+ spaceToWrapAt = index + end
wrappedLine.WriteString(str[offset:spaceToWrapAt])
wrappedLine.WriteString(newLineStr)
offset = spaceToWrapAt + 1
- } else {
- wrappedLine.WriteString(str[offset:len(str)])
- offset = inputLineLength
}
}
}
diff --git a/vendor/github.com/armon/go-metrics/LICENSE b/vendor/github.com/armon/go-metrics/LICENSE
new file mode 100644
index 00000000..106569e5
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Armon Dadgar
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/armon/go-metrics/const_unix.go b/vendor/github.com/armon/go-metrics/const_unix.go
new file mode 100644
index 00000000..31098dd5
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/const_unix.go
@@ -0,0 +1,12 @@
+// +build !windows
+
+package metrics
+
+import (
+ "syscall"
+)
+
+const (
+ // DefaultSignal is used with DefaultInmemSignal
+ DefaultSignal = syscall.SIGUSR1
+)
diff --git a/vendor/github.com/armon/go-metrics/const_windows.go b/vendor/github.com/armon/go-metrics/const_windows.go
new file mode 100644
index 00000000..38136af3
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/const_windows.go
@@ -0,0 +1,13 @@
+// +build windows
+
+package metrics
+
+import (
+ "syscall"
+)
+
+const (
+ // DefaultSignal is used with DefaultInmemSignal
+ // Windows has no SIGUSR1, use SIGBREAK
+ DefaultSignal = syscall.Signal(21)
+)
diff --git a/vendor/github.com/armon/go-metrics/inmem.go b/vendor/github.com/armon/go-metrics/inmem.go
new file mode 100644
index 00000000..4e2d6a70
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/inmem.go
@@ -0,0 +1,348 @@
+package metrics
+
+import (
+ "bytes"
+ "fmt"
+ "math"
+ "net/url"
+ "strings"
+ "sync"
+ "time"
+)
+
+// InmemSink provides a MetricSink that does in-memory aggregation
+// without sending metrics over a network. It can be embedded within
+// an application to provide profiling information.
+type InmemSink struct {
+ // How long is each aggregation interval
+ interval time.Duration
+
+ // Retain controls how many metrics interval we keep
+ retain time.Duration
+
+ // maxIntervals is the maximum length of intervals.
+ // It is retain / interval.
+ maxIntervals int
+
+ // intervals is a slice of the retained intervals
+ intervals []*IntervalMetrics
+ intervalLock sync.RWMutex
+
+ rateDenom float64
+}
+
+// IntervalMetrics stores the aggregated metrics
+// for a specific interval
+type IntervalMetrics struct {
+ sync.RWMutex
+
+ // The start time of the interval
+ Interval time.Time
+
+ // Gauges maps the key to the last set value
+ Gauges map[string]GaugeValue
+
+ // Points maps the string to the list of emitted values
+ // from EmitKey
+ Points map[string][]float32
+
+ // Counters maps the string key to a sum of the counter
+ // values
+ Counters map[string]SampledValue
+
+ // Samples maps the key to an AggregateSample,
+ // which has the rolled up view of a sample
+ Samples map[string]SampledValue
+}
+
+// NewIntervalMetrics creates a new IntervalMetrics for a given interval
+func NewIntervalMetrics(intv time.Time) *IntervalMetrics {
+ return &IntervalMetrics{
+ Interval: intv,
+ Gauges: make(map[string]GaugeValue),
+ Points: make(map[string][]float32),
+ Counters: make(map[string]SampledValue),
+ Samples: make(map[string]SampledValue),
+ }
+}
+
+// AggregateSample is used to hold aggregate metrics
+// about a sample
+type AggregateSample struct {
+ Count int // The count of emitted pairs
+ Rate float64 // The values rate per time unit (usually 1 second)
+ Sum float64 // The sum of values
+ SumSq float64 `json:"-"` // The sum of squared values
+ Min float64 // Minimum value
+ Max float64 // Maximum value
+ LastUpdated time.Time `json:"-"` // When value was last updated
+}
+
+// Computes a Stddev of the values
+func (a *AggregateSample) Stddev() float64 {
+ num := (float64(a.Count) * a.SumSq) - math.Pow(a.Sum, 2)
+ div := float64(a.Count * (a.Count - 1))
+ if div == 0 {
+ return 0
+ }
+ return math.Sqrt(num / div)
+}
+
+// Computes a mean of the values
+func (a *AggregateSample) Mean() float64 {
+ if a.Count == 0 {
+ return 0
+ }
+ return a.Sum / float64(a.Count)
+}
+
+// Ingest is used to update a sample
+func (a *AggregateSample) Ingest(v float64, rateDenom float64) {
+ a.Count++
+ a.Sum += v
+ a.SumSq += (v * v)
+ if v < a.Min || a.Count == 1 {
+ a.Min = v
+ }
+ if v > a.Max || a.Count == 1 {
+ a.Max = v
+ }
+ a.Rate = float64(a.Sum) / rateDenom
+ a.LastUpdated = time.Now()
+}
+
+func (a *AggregateSample) String() string {
+ if a.Count == 0 {
+ return "Count: 0"
+ } else if a.Stddev() == 0 {
+ return fmt.Sprintf("Count: %d Sum: %0.3f LastUpdated: %s", a.Count, a.Sum, a.LastUpdated)
+ } else {
+ return fmt.Sprintf("Count: %d Min: %0.3f Mean: %0.3f Max: %0.3f Stddev: %0.3f Sum: %0.3f LastUpdated: %s",
+ a.Count, a.Min, a.Mean(), a.Max, a.Stddev(), a.Sum, a.LastUpdated)
+ }
+}
+
+// NewInmemSinkFromURL creates an InmemSink from a URL. It is used
+// (and tested) from NewMetricSinkFromURL.
+func NewInmemSinkFromURL(u *url.URL) (MetricSink, error) {
+ params := u.Query()
+
+ interval, err := time.ParseDuration(params.Get("interval"))
+ if err != nil {
+ return nil, fmt.Errorf("Bad 'interval' param: %s", err)
+ }
+
+ retain, err := time.ParseDuration(params.Get("retain"))
+ if err != nil {
+ return nil, fmt.Errorf("Bad 'retain' param: %s", err)
+ }
+
+ return NewInmemSink(interval, retain), nil
+}
+
+// NewInmemSink is used to construct a new in-memory sink.
+// Uses an aggregation interval and maximum retention period.
+func NewInmemSink(interval, retain time.Duration) *InmemSink {
+ rateTimeUnit := time.Second
+ i := &InmemSink{
+ interval: interval,
+ retain: retain,
+ maxIntervals: int(retain / interval),
+ rateDenom: float64(interval.Nanoseconds()) / float64(rateTimeUnit.Nanoseconds()),
+ }
+ i.intervals = make([]*IntervalMetrics, 0, i.maxIntervals)
+ return i
+}
+
+func (i *InmemSink) SetGauge(key []string, val float32) {
+ i.SetGaugeWithLabels(key, val, nil)
+}
+
+func (i *InmemSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ k, name := i.flattenKeyLabels(key, labels)
+ intv := i.getInterval()
+
+ intv.Lock()
+ defer intv.Unlock()
+ intv.Gauges[k] = GaugeValue{Name: name, Value: val, Labels: labels}
+}
+
+func (i *InmemSink) EmitKey(key []string, val float32) {
+ k := i.flattenKey(key)
+ intv := i.getInterval()
+
+ intv.Lock()
+ defer intv.Unlock()
+ vals := intv.Points[k]
+ intv.Points[k] = append(vals, val)
+}
+
+func (i *InmemSink) IncrCounter(key []string, val float32) {
+ i.IncrCounterWithLabels(key, val, nil)
+}
+
+func (i *InmemSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ k, name := i.flattenKeyLabels(key, labels)
+ intv := i.getInterval()
+
+ intv.Lock()
+ defer intv.Unlock()
+
+ agg, ok := intv.Counters[k]
+ if !ok {
+ agg = SampledValue{
+ Name: name,
+ AggregateSample: &AggregateSample{},
+ Labels: labels,
+ }
+ intv.Counters[k] = agg
+ }
+ agg.Ingest(float64(val), i.rateDenom)
+}
+
+func (i *InmemSink) AddSample(key []string, val float32) {
+ i.AddSampleWithLabels(key, val, nil)
+}
+
+func (i *InmemSink) AddSampleWithLabels(key []string, val float32, labels []Label) {
+ k, name := i.flattenKeyLabels(key, labels)
+ intv := i.getInterval()
+
+ intv.Lock()
+ defer intv.Unlock()
+
+ agg, ok := intv.Samples[k]
+ if !ok {
+ agg = SampledValue{
+ Name: name,
+ AggregateSample: &AggregateSample{},
+ Labels: labels,
+ }
+ intv.Samples[k] = agg
+ }
+ agg.Ingest(float64(val), i.rateDenom)
+}
+
+// Data is used to retrieve all the aggregated metrics
+// Intervals may be in use, and a read lock should be acquired
+func (i *InmemSink) Data() []*IntervalMetrics {
+ // Get the current interval, forces creation
+ i.getInterval()
+
+ i.intervalLock.RLock()
+ defer i.intervalLock.RUnlock()
+
+ n := len(i.intervals)
+ intervals := make([]*IntervalMetrics, n)
+
+ copy(intervals[:n-1], i.intervals[:n-1])
+ current := i.intervals[n-1]
+
+ // make its own copy for current interval
+ intervals[n-1] = &IntervalMetrics{}
+ copyCurrent := intervals[n-1]
+ current.RLock()
+ *copyCurrent = *current
+
+ copyCurrent.Gauges = make(map[string]GaugeValue, len(current.Gauges))
+ for k, v := range current.Gauges {
+ copyCurrent.Gauges[k] = v
+ }
+ // saved values will be not change, just copy its link
+ copyCurrent.Points = make(map[string][]float32, len(current.Points))
+ for k, v := range current.Points {
+ copyCurrent.Points[k] = v
+ }
+ copyCurrent.Counters = make(map[string]SampledValue, len(current.Counters))
+ for k, v := range current.Counters {
+ copyCurrent.Counters[k] = v
+ }
+ copyCurrent.Samples = make(map[string]SampledValue, len(current.Samples))
+ for k, v := range current.Samples {
+ copyCurrent.Samples[k] = v
+ }
+ current.RUnlock()
+
+ return intervals
+}
+
+func (i *InmemSink) getExistingInterval(intv time.Time) *IntervalMetrics {
+ i.intervalLock.RLock()
+ defer i.intervalLock.RUnlock()
+
+ n := len(i.intervals)
+ if n > 0 && i.intervals[n-1].Interval == intv {
+ return i.intervals[n-1]
+ }
+ return nil
+}
+
+func (i *InmemSink) createInterval(intv time.Time) *IntervalMetrics {
+ i.intervalLock.Lock()
+ defer i.intervalLock.Unlock()
+
+ // Check for an existing interval
+ n := len(i.intervals)
+ if n > 0 && i.intervals[n-1].Interval == intv {
+ return i.intervals[n-1]
+ }
+
+ // Add the current interval
+ current := NewIntervalMetrics(intv)
+ i.intervals = append(i.intervals, current)
+ n++
+
+ // Truncate the intervals if they are too long
+ if n >= i.maxIntervals {
+ copy(i.intervals[0:], i.intervals[n-i.maxIntervals:])
+ i.intervals = i.intervals[:i.maxIntervals]
+ }
+ return current
+}
+
+// getInterval returns the current interval to write to
+func (i *InmemSink) getInterval() *IntervalMetrics {
+ intv := time.Now().Truncate(i.interval)
+ if m := i.getExistingInterval(intv); m != nil {
+ return m
+ }
+ return i.createInterval(intv)
+}
+
+// Flattens the key for formatting, removes spaces
+func (i *InmemSink) flattenKey(parts []string) string {
+ buf := &bytes.Buffer{}
+ replacer := strings.NewReplacer(" ", "_")
+
+ if len(parts) > 0 {
+ replacer.WriteString(buf, parts[0])
+ }
+ for _, part := range parts[1:] {
+ replacer.WriteString(buf, ".")
+ replacer.WriteString(buf, part)
+ }
+
+ return buf.String()
+}
+
+// Flattens the key for formatting along with its labels, removes spaces
+func (i *InmemSink) flattenKeyLabels(parts []string, labels []Label) (string, string) {
+ buf := &bytes.Buffer{}
+ replacer := strings.NewReplacer(" ", "_")
+
+ if len(parts) > 0 {
+ replacer.WriteString(buf, parts[0])
+ }
+ for _, part := range parts[1:] {
+ replacer.WriteString(buf, ".")
+ replacer.WriteString(buf, part)
+ }
+
+ key := buf.String()
+
+ for _, label := range labels {
+ replacer.WriteString(buf, fmt.Sprintf(";%s=%s", label.Name, label.Value))
+ }
+
+ return buf.String(), key
+}
diff --git a/vendor/github.com/armon/go-metrics/inmem_endpoint.go b/vendor/github.com/armon/go-metrics/inmem_endpoint.go
new file mode 100644
index 00000000..504f1b37
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/inmem_endpoint.go
@@ -0,0 +1,118 @@
+package metrics
+
+import (
+ "fmt"
+ "net/http"
+ "sort"
+ "time"
+)
+
+// MetricsSummary holds a roll-up of metrics info for a given interval
+type MetricsSummary struct {
+ Timestamp string
+ Gauges []GaugeValue
+ Points []PointValue
+ Counters []SampledValue
+ Samples []SampledValue
+}
+
+type GaugeValue struct {
+ Name string
+ Hash string `json:"-"`
+ Value float32
+
+ Labels []Label `json:"-"`
+ DisplayLabels map[string]string `json:"Labels"`
+}
+
+type PointValue struct {
+ Name string
+ Points []float32
+}
+
+type SampledValue struct {
+ Name string
+ Hash string `json:"-"`
+ *AggregateSample
+ Mean float64
+ Stddev float64
+
+ Labels []Label `json:"-"`
+ DisplayLabels map[string]string `json:"Labels"`
+}
+
+// DisplayMetrics returns a summary of the metrics from the most recent finished interval.
+func (i *InmemSink) DisplayMetrics(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
+ data := i.Data()
+
+ var interval *IntervalMetrics
+ n := len(data)
+ switch {
+ case n == 0:
+ return nil, fmt.Errorf("no metric intervals have been initialized yet")
+ case n == 1:
+ // Show the current interval if it's all we have
+ interval = i.intervals[0]
+ default:
+ // Show the most recent finished interval if we have one
+ interval = i.intervals[n-2]
+ }
+
+ summary := MetricsSummary{
+ Timestamp: interval.Interval.Round(time.Second).UTC().String(),
+ Gauges: make([]GaugeValue, 0, len(interval.Gauges)),
+ Points: make([]PointValue, 0, len(interval.Points)),
+ }
+
+ // Format and sort the output of each metric type, so it gets displayed in a
+ // deterministic order.
+ for name, points := range interval.Points {
+ summary.Points = append(summary.Points, PointValue{name, points})
+ }
+ sort.Slice(summary.Points, func(i, j int) bool {
+ return summary.Points[i].Name < summary.Points[j].Name
+ })
+
+ for hash, value := range interval.Gauges {
+ value.Hash = hash
+ value.DisplayLabels = make(map[string]string)
+ for _, label := range value.Labels {
+ value.DisplayLabels[label.Name] = label.Value
+ }
+ value.Labels = nil
+
+ summary.Gauges = append(summary.Gauges, value)
+ }
+ sort.Slice(summary.Gauges, func(i, j int) bool {
+ return summary.Gauges[i].Hash < summary.Gauges[j].Hash
+ })
+
+ summary.Counters = formatSamples(interval.Counters)
+ summary.Samples = formatSamples(interval.Samples)
+
+ return summary, nil
+}
+
+func formatSamples(source map[string]SampledValue) []SampledValue {
+ output := make([]SampledValue, 0, len(source))
+ for hash, sample := range source {
+ displayLabels := make(map[string]string)
+ for _, label := range sample.Labels {
+ displayLabels[label.Name] = label.Value
+ }
+
+ output = append(output, SampledValue{
+ Name: sample.Name,
+ Hash: hash,
+ AggregateSample: sample.AggregateSample,
+ Mean: sample.AggregateSample.Mean(),
+ Stddev: sample.AggregateSample.Stddev(),
+ DisplayLabels: displayLabels,
+ })
+ }
+ sort.Slice(output, func(i, j int) bool {
+ return output[i].Hash < output[j].Hash
+ })
+
+ return output
+}
diff --git a/vendor/github.com/armon/go-metrics/inmem_signal.go b/vendor/github.com/armon/go-metrics/inmem_signal.go
new file mode 100644
index 00000000..0937f4ae
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/inmem_signal.go
@@ -0,0 +1,117 @@
+package metrics
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "os/signal"
+ "strings"
+ "sync"
+ "syscall"
+)
+
+// InmemSignal is used to listen for a given signal, and when received,
+// to dump the current metrics from the InmemSink to an io.Writer
+type InmemSignal struct {
+ signal syscall.Signal
+ inm *InmemSink
+ w io.Writer
+ sigCh chan os.Signal
+
+ stop bool
+ stopCh chan struct{}
+ stopLock sync.Mutex
+}
+
+// NewInmemSignal creates a new InmemSignal which listens for a given signal,
+// and dumps the current metrics out to a writer
+func NewInmemSignal(inmem *InmemSink, sig syscall.Signal, w io.Writer) *InmemSignal {
+ i := &InmemSignal{
+ signal: sig,
+ inm: inmem,
+ w: w,
+ sigCh: make(chan os.Signal, 1),
+ stopCh: make(chan struct{}),
+ }
+ signal.Notify(i.sigCh, sig)
+ go i.run()
+ return i
+}
+
+// DefaultInmemSignal returns a new InmemSignal that responds to SIGUSR1
+// and writes output to stderr. Windows uses SIGBREAK
+func DefaultInmemSignal(inmem *InmemSink) *InmemSignal {
+ return NewInmemSignal(inmem, DefaultSignal, os.Stderr)
+}
+
+// Stop is used to stop the InmemSignal from listening
+func (i *InmemSignal) Stop() {
+ i.stopLock.Lock()
+ defer i.stopLock.Unlock()
+
+ if i.stop {
+ return
+ }
+ i.stop = true
+ close(i.stopCh)
+ signal.Stop(i.sigCh)
+}
+
+// run is a long running routine that handles signals
+func (i *InmemSignal) run() {
+ for {
+ select {
+ case <-i.sigCh:
+ i.dumpStats()
+ case <-i.stopCh:
+ return
+ }
+ }
+}
+
+// dumpStats is used to dump the data to output writer
+func (i *InmemSignal) dumpStats() {
+ buf := bytes.NewBuffer(nil)
+
+ data := i.inm.Data()
+ // Skip the last period which is still being aggregated
+ for j := 0; j < len(data)-1; j++ {
+ intv := data[j]
+ intv.RLock()
+ for _, val := range intv.Gauges {
+ name := i.flattenLabels(val.Name, val.Labels)
+ fmt.Fprintf(buf, "[%v][G] '%s': %0.3f\n", intv.Interval, name, val.Value)
+ }
+ for name, vals := range intv.Points {
+ for _, val := range vals {
+ fmt.Fprintf(buf, "[%v][P] '%s': %0.3f\n", intv.Interval, name, val)
+ }
+ }
+ for _, agg := range intv.Counters {
+ name := i.flattenLabels(agg.Name, agg.Labels)
+ fmt.Fprintf(buf, "[%v][C] '%s': %s\n", intv.Interval, name, agg.AggregateSample)
+ }
+ for _, agg := range intv.Samples {
+ name := i.flattenLabels(agg.Name, agg.Labels)
+ fmt.Fprintf(buf, "[%v][S] '%s': %s\n", intv.Interval, name, agg.AggregateSample)
+ }
+ intv.RUnlock()
+ }
+
+ // Write out the bytes
+ i.w.Write(buf.Bytes())
+}
+
+// Flattens the key for formatting along with its labels, removes spaces
+func (i *InmemSignal) flattenLabels(name string, labels []Label) string {
+ buf := bytes.NewBufferString(name)
+ replacer := strings.NewReplacer(" ", "_", ":", "_")
+
+ for _, label := range labels {
+ replacer.WriteString(buf, ".")
+ replacer.WriteString(buf, label.Value)
+ }
+
+ return buf.String()
+}
diff --git a/vendor/github.com/armon/go-metrics/metrics.go b/vendor/github.com/armon/go-metrics/metrics.go
new file mode 100644
index 00000000..cf9def74
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/metrics.go
@@ -0,0 +1,278 @@
+package metrics
+
+import (
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/hashicorp/go-immutable-radix"
+)
+
+type Label struct {
+ Name string
+ Value string
+}
+
+func (m *Metrics) SetGauge(key []string, val float32) {
+ m.SetGaugeWithLabels(key, val, nil)
+}
+
+func (m *Metrics) SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ if m.HostName != "" {
+ if m.EnableHostnameLabel {
+ labels = append(labels, Label{"host", m.HostName})
+ } else if m.EnableHostname {
+ key = insert(0, m.HostName, key)
+ }
+ }
+ if m.EnableTypePrefix {
+ key = insert(0, "gauge", key)
+ }
+ if m.ServiceName != "" {
+ if m.EnableServiceLabel {
+ labels = append(labels, Label{"service", m.ServiceName})
+ } else {
+ key = insert(0, m.ServiceName, key)
+ }
+ }
+ allowed, labelsFiltered := m.allowMetric(key, labels)
+ if !allowed {
+ return
+ }
+ m.sink.SetGaugeWithLabels(key, val, labelsFiltered)
+}
+
+func (m *Metrics) EmitKey(key []string, val float32) {
+ if m.EnableTypePrefix {
+ key = insert(0, "kv", key)
+ }
+ if m.ServiceName != "" {
+ key = insert(0, m.ServiceName, key)
+ }
+ allowed, _ := m.allowMetric(key, nil)
+ if !allowed {
+ return
+ }
+ m.sink.EmitKey(key, val)
+}
+
+func (m *Metrics) IncrCounter(key []string, val float32) {
+ m.IncrCounterWithLabels(key, val, nil)
+}
+
+func (m *Metrics) IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ if m.HostName != "" && m.EnableHostnameLabel {
+ labels = append(labels, Label{"host", m.HostName})
+ }
+ if m.EnableTypePrefix {
+ key = insert(0, "counter", key)
+ }
+ if m.ServiceName != "" {
+ if m.EnableServiceLabel {
+ labels = append(labels, Label{"service", m.ServiceName})
+ } else {
+ key = insert(0, m.ServiceName, key)
+ }
+ }
+ allowed, labelsFiltered := m.allowMetric(key, labels)
+ if !allowed {
+ return
+ }
+ m.sink.IncrCounterWithLabels(key, val, labelsFiltered)
+}
+
+func (m *Metrics) AddSample(key []string, val float32) {
+ m.AddSampleWithLabels(key, val, nil)
+}
+
+func (m *Metrics) AddSampleWithLabels(key []string, val float32, labels []Label) {
+ if m.HostName != "" && m.EnableHostnameLabel {
+ labels = append(labels, Label{"host", m.HostName})
+ }
+ if m.EnableTypePrefix {
+ key = insert(0, "sample", key)
+ }
+ if m.ServiceName != "" {
+ if m.EnableServiceLabel {
+ labels = append(labels, Label{"service", m.ServiceName})
+ } else {
+ key = insert(0, m.ServiceName, key)
+ }
+ }
+ allowed, labelsFiltered := m.allowMetric(key, labels)
+ if !allowed {
+ return
+ }
+ m.sink.AddSampleWithLabels(key, val, labelsFiltered)
+}
+
+func (m *Metrics) MeasureSince(key []string, start time.Time) {
+ m.MeasureSinceWithLabels(key, start, nil)
+}
+
+func (m *Metrics) MeasureSinceWithLabels(key []string, start time.Time, labels []Label) {
+ if m.HostName != "" && m.EnableHostnameLabel {
+ labels = append(labels, Label{"host", m.HostName})
+ }
+ if m.EnableTypePrefix {
+ key = insert(0, "timer", key)
+ }
+ if m.ServiceName != "" {
+ if m.EnableServiceLabel {
+ labels = append(labels, Label{"service", m.ServiceName})
+ } else {
+ key = insert(0, m.ServiceName, key)
+ }
+ }
+ allowed, labelsFiltered := m.allowMetric(key, labels)
+ if !allowed {
+ return
+ }
+ now := time.Now()
+ elapsed := now.Sub(start)
+ msec := float32(elapsed.Nanoseconds()) / float32(m.TimerGranularity)
+ m.sink.AddSampleWithLabels(key, msec, labelsFiltered)
+}
+
+// UpdateFilter overwrites the existing filter with the given rules.
+func (m *Metrics) UpdateFilter(allow, block []string) {
+ m.UpdateFilterAndLabels(allow, block, m.AllowedLabels, m.BlockedLabels)
+}
+
+// UpdateFilterAndLabels overwrites the existing filter with the given rules.
+func (m *Metrics) UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels []string) {
+ m.filterLock.Lock()
+ defer m.filterLock.Unlock()
+
+ m.AllowedPrefixes = allow
+ m.BlockedPrefixes = block
+
+ if allowedLabels == nil {
+ // Having a white list means we take only elements from it
+ m.allowedLabels = nil
+ } else {
+ m.allowedLabels = make(map[string]bool)
+ for _, v := range allowedLabels {
+ m.allowedLabels[v] = true
+ }
+ }
+ m.blockedLabels = make(map[string]bool)
+ for _, v := range blockedLabels {
+ m.blockedLabels[v] = true
+ }
+ m.AllowedLabels = allowedLabels
+ m.BlockedLabels = blockedLabels
+
+ m.filter = iradix.New()
+ for _, prefix := range m.AllowedPrefixes {
+ m.filter, _, _ = m.filter.Insert([]byte(prefix), true)
+ }
+ for _, prefix := range m.BlockedPrefixes {
+ m.filter, _, _ = m.filter.Insert([]byte(prefix), false)
+ }
+}
+
+// labelIsAllowed return true if a should be included in metric
+// the caller should lock m.filterLock while calling this method
+func (m *Metrics) labelIsAllowed(label *Label) bool {
+ labelName := (*label).Name
+ if m.blockedLabels != nil {
+ _, ok := m.blockedLabels[labelName]
+ if ok {
+ // If present, let's remove this label
+ return false
+ }
+ }
+ if m.allowedLabels != nil {
+ _, ok := m.allowedLabels[labelName]
+ return ok
+ }
+ // Allow by default
+ return true
+}
+
+// filterLabels return only allowed labels
+// the caller should lock m.filterLock while calling this method
+func (m *Metrics) filterLabels(labels []Label) []Label {
+ if labels == nil {
+ return nil
+ }
+ toReturn := labels[:0]
+ for _, label := range labels {
+ if m.labelIsAllowed(&label) {
+ toReturn = append(toReturn, label)
+ }
+ }
+ return toReturn
+}
+
+// Returns whether the metric should be allowed based on configured prefix filters
+// Also return the applicable labels
+func (m *Metrics) allowMetric(key []string, labels []Label) (bool, []Label) {
+ m.filterLock.RLock()
+ defer m.filterLock.RUnlock()
+
+ if m.filter == nil || m.filter.Len() == 0 {
+ return m.Config.FilterDefault, m.filterLabels(labels)
+ }
+
+ _, allowed, ok := m.filter.Root().LongestPrefix([]byte(strings.Join(key, ".")))
+ if !ok {
+ return m.Config.FilterDefault, m.filterLabels(labels)
+ }
+
+ return allowed.(bool), m.filterLabels(labels)
+}
+
+// Periodically collects runtime stats to publish
+func (m *Metrics) collectStats() {
+ for {
+ time.Sleep(m.ProfileInterval)
+ m.emitRuntimeStats()
+ }
+}
+
+// Emits various runtime statsitics
+func (m *Metrics) emitRuntimeStats() {
+ // Export number of Goroutines
+ numRoutines := runtime.NumGoroutine()
+ m.SetGauge([]string{"runtime", "num_goroutines"}, float32(numRoutines))
+
+ // Export memory stats
+ var stats runtime.MemStats
+ runtime.ReadMemStats(&stats)
+ m.SetGauge([]string{"runtime", "alloc_bytes"}, float32(stats.Alloc))
+ m.SetGauge([]string{"runtime", "sys_bytes"}, float32(stats.Sys))
+ m.SetGauge([]string{"runtime", "malloc_count"}, float32(stats.Mallocs))
+ m.SetGauge([]string{"runtime", "free_count"}, float32(stats.Frees))
+ m.SetGauge([]string{"runtime", "heap_objects"}, float32(stats.HeapObjects))
+ m.SetGauge([]string{"runtime", "total_gc_pause_ns"}, float32(stats.PauseTotalNs))
+ m.SetGauge([]string{"runtime", "total_gc_runs"}, float32(stats.NumGC))
+
+ // Export info about the last few GC runs
+ num := stats.NumGC
+
+ // Handle wrap around
+ if num < m.lastNumGC {
+ m.lastNumGC = 0
+ }
+
+ // Ensure we don't scan more than 256
+ if num-m.lastNumGC >= 256 {
+ m.lastNumGC = num - 255
+ }
+
+ for i := m.lastNumGC; i < num; i++ {
+ pause := stats.PauseNs[i%256]
+ m.AddSample([]string{"runtime", "gc_pause_ns"}, float32(pause))
+ }
+ m.lastNumGC = num
+}
+
+// Inserts a string value at an index into the slice
+func insert(i int, v string, s []string) []string {
+ s = append(s, "")
+ copy(s[i+1:], s[i:])
+ s[i] = v
+ return s
+}
diff --git a/vendor/github.com/armon/go-metrics/sink.go b/vendor/github.com/armon/go-metrics/sink.go
new file mode 100644
index 00000000..0b7d6e4b
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/sink.go
@@ -0,0 +1,115 @@
+package metrics
+
+import (
+ "fmt"
+ "net/url"
+)
+
+// The MetricSink interface is used to transmit metrics information
+// to an external system
+type MetricSink interface {
+ // A Gauge should retain the last value it is set to
+ SetGauge(key []string, val float32)
+ SetGaugeWithLabels(key []string, val float32, labels []Label)
+
+ // Should emit a Key/Value pair for each call
+ EmitKey(key []string, val float32)
+
+ // Counters should accumulate values
+ IncrCounter(key []string, val float32)
+ IncrCounterWithLabels(key []string, val float32, labels []Label)
+
+ // Samples are for timing information, where quantiles are used
+ AddSample(key []string, val float32)
+ AddSampleWithLabels(key []string, val float32, labels []Label)
+}
+
+// BlackholeSink is used to just blackhole messages
+type BlackholeSink struct{}
+
+func (*BlackholeSink) SetGauge(key []string, val float32) {}
+func (*BlackholeSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {}
+func (*BlackholeSink) EmitKey(key []string, val float32) {}
+func (*BlackholeSink) IncrCounter(key []string, val float32) {}
+func (*BlackholeSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {}
+func (*BlackholeSink) AddSample(key []string, val float32) {}
+func (*BlackholeSink) AddSampleWithLabels(key []string, val float32, labels []Label) {}
+
+// FanoutSink is used to sink to fanout values to multiple sinks
+type FanoutSink []MetricSink
+
+func (fh FanoutSink) SetGauge(key []string, val float32) {
+ fh.SetGaugeWithLabels(key, val, nil)
+}
+
+func (fh FanoutSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ for _, s := range fh {
+ s.SetGaugeWithLabels(key, val, labels)
+ }
+}
+
+func (fh FanoutSink) EmitKey(key []string, val float32) {
+ for _, s := range fh {
+ s.EmitKey(key, val)
+ }
+}
+
+func (fh FanoutSink) IncrCounter(key []string, val float32) {
+ fh.IncrCounterWithLabels(key, val, nil)
+}
+
+func (fh FanoutSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ for _, s := range fh {
+ s.IncrCounterWithLabels(key, val, labels)
+ }
+}
+
+func (fh FanoutSink) AddSample(key []string, val float32) {
+ fh.AddSampleWithLabels(key, val, nil)
+}
+
+func (fh FanoutSink) AddSampleWithLabels(key []string, val float32, labels []Label) {
+ for _, s := range fh {
+ s.AddSampleWithLabels(key, val, labels)
+ }
+}
+
+// sinkURLFactoryFunc is an generic interface around the *SinkFromURL() function provided
+// by each sink type
+type sinkURLFactoryFunc func(*url.URL) (MetricSink, error)
+
+// sinkRegistry supports the generic NewMetricSink function by mapping URL
+// schemes to metric sink factory functions
+var sinkRegistry = map[string]sinkURLFactoryFunc{
+ "statsd": NewStatsdSinkFromURL,
+ "statsite": NewStatsiteSinkFromURL,
+ "inmem": NewInmemSinkFromURL,
+}
+
+// NewMetricSinkFromURL allows a generic URL input to configure any of the
+// supported sinks. The scheme of the URL identifies the type of the sink, the
+// and query parameters are used to set options.
+//
+// "statsd://" - Initializes a StatsdSink. The host and port are passed through
+// as the "addr" of the sink
+//
+// "statsite://" - Initializes a StatsiteSink. The host and port become the
+// "addr" of the sink
+//
+// "inmem://" - Initializes an InmemSink. The host and port are ignored. The
+// "interval" and "duration" query parameters must be specified with valid
+// durations, see NewInmemSink for details.
+func NewMetricSinkFromURL(urlStr string) (MetricSink, error) {
+ u, err := url.Parse(urlStr)
+ if err != nil {
+ return nil, err
+ }
+
+ sinkURLFactoryFunc := sinkRegistry[u.Scheme]
+ if sinkURLFactoryFunc == nil {
+ return nil, fmt.Errorf(
+ "cannot create metric sink, unrecognized sink name: %q", u.Scheme)
+ }
+
+ return sinkURLFactoryFunc(u)
+}
diff --git a/vendor/github.com/armon/go-metrics/start.go b/vendor/github.com/armon/go-metrics/start.go
new file mode 100644
index 00000000..32a28c48
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/start.go
@@ -0,0 +1,141 @@
+package metrics
+
+import (
+ "os"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/hashicorp/go-immutable-radix"
+)
+
+// Config is used to configure metrics settings
+type Config struct {
+ ServiceName string // Prefixed with keys to separate services
+ HostName string // Hostname to use. If not provided and EnableHostname, it will be os.Hostname
+ EnableHostname bool // Enable prefixing gauge values with hostname
+ EnableHostnameLabel bool // Enable adding hostname to labels
+ EnableServiceLabel bool // Enable adding service to labels
+ EnableRuntimeMetrics bool // Enables profiling of runtime metrics (GC, Goroutines, Memory)
+ EnableTypePrefix bool // Prefixes key with a type ("counter", "gauge", "timer")
+ TimerGranularity time.Duration // Granularity of timers.
+ ProfileInterval time.Duration // Interval to profile runtime metrics
+
+ AllowedPrefixes []string // A list of metric prefixes to allow, with '.' as the separator
+ BlockedPrefixes []string // A list of metric prefixes to block, with '.' as the separator
+ AllowedLabels []string // A list of metric labels to allow, with '.' as the separator
+ BlockedLabels []string // A list of metric labels to block, with '.' as the separator
+ FilterDefault bool // Whether to allow metrics by default
+}
+
+// Metrics represents an instance of a metrics sink that can
+// be used to emit
+type Metrics struct {
+ Config
+ lastNumGC uint32
+ sink MetricSink
+ filter *iradix.Tree
+ allowedLabels map[string]bool
+ blockedLabels map[string]bool
+ filterLock sync.RWMutex // Lock filters and allowedLabels/blockedLabels access
+}
+
+// Shared global metrics instance
+var globalMetrics atomic.Value // *Metrics
+
+func init() {
+ // Initialize to a blackhole sink to avoid errors
+ globalMetrics.Store(&Metrics{sink: &BlackholeSink{}})
+}
+
+// DefaultConfig provides a sane default configuration
+func DefaultConfig(serviceName string) *Config {
+ c := &Config{
+ ServiceName: serviceName, // Use client provided service
+ HostName: "",
+ EnableHostname: true, // Enable hostname prefix
+ EnableRuntimeMetrics: true, // Enable runtime profiling
+ EnableTypePrefix: false, // Disable type prefix
+ TimerGranularity: time.Millisecond, // Timers are in milliseconds
+ ProfileInterval: time.Second, // Poll runtime every second
+ FilterDefault: true, // Don't filter metrics by default
+ }
+
+ // Try to get the hostname
+ name, _ := os.Hostname()
+ c.HostName = name
+ return c
+}
+
+// New is used to create a new instance of Metrics
+func New(conf *Config, sink MetricSink) (*Metrics, error) {
+ met := &Metrics{}
+ met.Config = *conf
+ met.sink = sink
+ met.UpdateFilterAndLabels(conf.AllowedPrefixes, conf.BlockedPrefixes, conf.AllowedLabels, conf.BlockedLabels)
+
+ // Start the runtime collector
+ if conf.EnableRuntimeMetrics {
+ go met.collectStats()
+ }
+ return met, nil
+}
+
+// NewGlobal is the same as New, but it assigns the metrics object to be
+// used globally as well as returning it.
+func NewGlobal(conf *Config, sink MetricSink) (*Metrics, error) {
+ metrics, err := New(conf, sink)
+ if err == nil {
+ globalMetrics.Store(metrics)
+ }
+ return metrics, err
+}
+
+// Proxy all the methods to the globalMetrics instance
+func SetGauge(key []string, val float32) {
+ globalMetrics.Load().(*Metrics).SetGauge(key, val)
+}
+
+func SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ globalMetrics.Load().(*Metrics).SetGaugeWithLabels(key, val, labels)
+}
+
+func EmitKey(key []string, val float32) {
+ globalMetrics.Load().(*Metrics).EmitKey(key, val)
+}
+
+func IncrCounter(key []string, val float32) {
+ globalMetrics.Load().(*Metrics).IncrCounter(key, val)
+}
+
+func IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ globalMetrics.Load().(*Metrics).IncrCounterWithLabels(key, val, labels)
+}
+
+func AddSample(key []string, val float32) {
+ globalMetrics.Load().(*Metrics).AddSample(key, val)
+}
+
+func AddSampleWithLabels(key []string, val float32, labels []Label) {
+ globalMetrics.Load().(*Metrics).AddSampleWithLabels(key, val, labels)
+}
+
+func MeasureSince(key []string, start time.Time) {
+ globalMetrics.Load().(*Metrics).MeasureSince(key, start)
+}
+
+func MeasureSinceWithLabels(key []string, start time.Time, labels []Label) {
+ globalMetrics.Load().(*Metrics).MeasureSinceWithLabels(key, start, labels)
+}
+
+func UpdateFilter(allow, block []string) {
+ globalMetrics.Load().(*Metrics).UpdateFilter(allow, block)
+}
+
+// UpdateFilterAndLabels set allow/block prefixes of metrics while allowedLabels
+// and blockedLabels - when not nil - allow filtering of labels in order to
+// block/allow globally labels (especially useful when having large number of
+// values for a given label). See README.md for more information about usage.
+func UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels []string) {
+ globalMetrics.Load().(*Metrics).UpdateFilterAndLabels(allow, block, allowedLabels, blockedLabels)
+}
diff --git a/vendor/github.com/armon/go-metrics/statsd.go b/vendor/github.com/armon/go-metrics/statsd.go
new file mode 100644
index 00000000..1bfffce4
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/statsd.go
@@ -0,0 +1,184 @@
+package metrics
+
+import (
+ "bytes"
+ "fmt"
+ "log"
+ "net"
+ "net/url"
+ "strings"
+ "time"
+)
+
+const (
+ // statsdMaxLen is the maximum size of a packet
+ // to send to statsd
+ statsdMaxLen = 1400
+)
+
+// StatsdSink provides a MetricSink that can be used
+// with a statsite or statsd metrics server. It uses
+// only UDP packets, while StatsiteSink uses TCP.
+type StatsdSink struct {
+ addr string
+ metricQueue chan string
+}
+
+// NewStatsdSinkFromURL creates an StatsdSink from a URL. It is used
+// (and tested) from NewMetricSinkFromURL.
+func NewStatsdSinkFromURL(u *url.URL) (MetricSink, error) {
+ return NewStatsdSink(u.Host)
+}
+
+// NewStatsdSink is used to create a new StatsdSink
+func NewStatsdSink(addr string) (*StatsdSink, error) {
+ s := &StatsdSink{
+ addr: addr,
+ metricQueue: make(chan string, 4096),
+ }
+ go s.flushMetrics()
+ return s, nil
+}
+
+// Close is used to stop flushing to statsd
+func (s *StatsdSink) Shutdown() {
+ close(s.metricQueue)
+}
+
+func (s *StatsdSink) SetGauge(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|g\n", flatKey, val))
+}
+
+func (s *StatsdSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|g\n", flatKey, val))
+}
+
+func (s *StatsdSink) EmitKey(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|kv\n", flatKey, val))
+}
+
+func (s *StatsdSink) IncrCounter(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|c\n", flatKey, val))
+}
+
+func (s *StatsdSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|c\n", flatKey, val))
+}
+
+func (s *StatsdSink) AddSample(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|ms\n", flatKey, val))
+}
+
+func (s *StatsdSink) AddSampleWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|ms\n", flatKey, val))
+}
+
+// Flattens the key for formatting, removes spaces
+func (s *StatsdSink) flattenKey(parts []string) string {
+ joined := strings.Join(parts, ".")
+ return strings.Map(func(r rune) rune {
+ switch r {
+ case ':':
+ fallthrough
+ case ' ':
+ return '_'
+ default:
+ return r
+ }
+ }, joined)
+}
+
+// Flattens the key along with labels for formatting, removes spaces
+func (s *StatsdSink) flattenKeyLabels(parts []string, labels []Label) string {
+ for _, label := range labels {
+ parts = append(parts, label.Value)
+ }
+ return s.flattenKey(parts)
+}
+
+// Does a non-blocking push to the metrics queue
+func (s *StatsdSink) pushMetric(m string) {
+ select {
+ case s.metricQueue <- m:
+ default:
+ }
+}
+
+// Flushes metrics
+func (s *StatsdSink) flushMetrics() {
+ var sock net.Conn
+ var err error
+ var wait <-chan time.Time
+ ticker := time.NewTicker(flushInterval)
+ defer ticker.Stop()
+
+CONNECT:
+ // Create a buffer
+ buf := bytes.NewBuffer(nil)
+
+ // Attempt to connect
+ sock, err = net.Dial("udp", s.addr)
+ if err != nil {
+ log.Printf("[ERR] Error connecting to statsd! Err: %s", err)
+ goto WAIT
+ }
+
+ for {
+ select {
+ case metric, ok := <-s.metricQueue:
+ // Get a metric from the queue
+ if !ok {
+ goto QUIT
+ }
+
+ // Check if this would overflow the packet size
+ if len(metric)+buf.Len() > statsdMaxLen {
+ _, err := sock.Write(buf.Bytes())
+ buf.Reset()
+ if err != nil {
+ log.Printf("[ERR] Error writing to statsd! Err: %s", err)
+ goto WAIT
+ }
+ }
+
+ // Append to the buffer
+ buf.WriteString(metric)
+
+ case <-ticker.C:
+ if buf.Len() == 0 {
+ continue
+ }
+
+ _, err := sock.Write(buf.Bytes())
+ buf.Reset()
+ if err != nil {
+ log.Printf("[ERR] Error flushing to statsd! Err: %s", err)
+ goto WAIT
+ }
+ }
+ }
+
+WAIT:
+ // Wait for a while
+ wait = time.After(time.Duration(5) * time.Second)
+ for {
+ select {
+ // Dequeue the messages to avoid backlog
+ case _, ok := <-s.metricQueue:
+ if !ok {
+ goto QUIT
+ }
+ case <-wait:
+ goto CONNECT
+ }
+ }
+QUIT:
+ s.metricQueue = nil
+}
diff --git a/vendor/github.com/armon/go-metrics/statsite.go b/vendor/github.com/armon/go-metrics/statsite.go
new file mode 100644
index 00000000..6c0d284d
--- /dev/null
+++ b/vendor/github.com/armon/go-metrics/statsite.go
@@ -0,0 +1,172 @@
+package metrics
+
+import (
+ "bufio"
+ "fmt"
+ "log"
+ "net"
+ "net/url"
+ "strings"
+ "time"
+)
+
+const (
+ // We force flush the statsite metrics after this period of
+ // inactivity. Prevents stats from getting stuck in a buffer
+ // forever.
+ flushInterval = 100 * time.Millisecond
+)
+
+// NewStatsiteSinkFromURL creates an StatsiteSink from a URL. It is used
+// (and tested) from NewMetricSinkFromURL.
+func NewStatsiteSinkFromURL(u *url.URL) (MetricSink, error) {
+ return NewStatsiteSink(u.Host)
+}
+
+// StatsiteSink provides a MetricSink that can be used with a
+// statsite metrics server
+type StatsiteSink struct {
+ addr string
+ metricQueue chan string
+}
+
+// NewStatsiteSink is used to create a new StatsiteSink
+func NewStatsiteSink(addr string) (*StatsiteSink, error) {
+ s := &StatsiteSink{
+ addr: addr,
+ metricQueue: make(chan string, 4096),
+ }
+ go s.flushMetrics()
+ return s, nil
+}
+
+// Close is used to stop flushing to statsite
+func (s *StatsiteSink) Shutdown() {
+ close(s.metricQueue)
+}
+
+func (s *StatsiteSink) SetGauge(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|g\n", flatKey, val))
+}
+
+func (s *StatsiteSink) SetGaugeWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|g\n", flatKey, val))
+}
+
+func (s *StatsiteSink) EmitKey(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|kv\n", flatKey, val))
+}
+
+func (s *StatsiteSink) IncrCounter(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|c\n", flatKey, val))
+}
+
+func (s *StatsiteSink) IncrCounterWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|c\n", flatKey, val))
+}
+
+func (s *StatsiteSink) AddSample(key []string, val float32) {
+ flatKey := s.flattenKey(key)
+ s.pushMetric(fmt.Sprintf("%s:%f|ms\n", flatKey, val))
+}
+
+func (s *StatsiteSink) AddSampleWithLabels(key []string, val float32, labels []Label) {
+ flatKey := s.flattenKeyLabels(key, labels)
+ s.pushMetric(fmt.Sprintf("%s:%f|ms\n", flatKey, val))
+}
+
+// Flattens the key for formatting, removes spaces
+func (s *StatsiteSink) flattenKey(parts []string) string {
+ joined := strings.Join(parts, ".")
+ return strings.Map(func(r rune) rune {
+ switch r {
+ case ':':
+ fallthrough
+ case ' ':
+ return '_'
+ default:
+ return r
+ }
+ }, joined)
+}
+
+// Flattens the key along with labels for formatting, removes spaces
+func (s *StatsiteSink) flattenKeyLabels(parts []string, labels []Label) string {
+ for _, label := range labels {
+ parts = append(parts, label.Value)
+ }
+ return s.flattenKey(parts)
+}
+
+// Does a non-blocking push to the metrics queue
+func (s *StatsiteSink) pushMetric(m string) {
+ select {
+ case s.metricQueue <- m:
+ default:
+ }
+}
+
+// Flushes metrics
+func (s *StatsiteSink) flushMetrics() {
+ var sock net.Conn
+ var err error
+ var wait <-chan time.Time
+ var buffered *bufio.Writer
+ ticker := time.NewTicker(flushInterval)
+ defer ticker.Stop()
+
+CONNECT:
+ // Attempt to connect
+ sock, err = net.Dial("tcp", s.addr)
+ if err != nil {
+ log.Printf("[ERR] Error connecting to statsite! Err: %s", err)
+ goto WAIT
+ }
+
+ // Create a buffered writer
+ buffered = bufio.NewWriter(sock)
+
+ for {
+ select {
+ case metric, ok := <-s.metricQueue:
+ // Get a metric from the queue
+ if !ok {
+ goto QUIT
+ }
+
+ // Try to send to statsite
+ _, err := buffered.Write([]byte(metric))
+ if err != nil {
+ log.Printf("[ERR] Error writing to statsite! Err: %s", err)
+ goto WAIT
+ }
+ case <-ticker.C:
+ if err := buffered.Flush(); err != nil {
+ log.Printf("[ERR] Error flushing to statsite! Err: %s", err)
+ goto WAIT
+ }
+ }
+ }
+
+WAIT:
+ // Wait for a while
+ wait = time.After(time.Duration(5) * time.Second)
+ for {
+ select {
+ // Dequeue the messages to avoid backlog
+ case _, ok := <-s.metricQueue:
+ if !ok {
+ goto QUIT
+ }
+ case <-wait:
+ goto CONNECT
+ }
+ }
+QUIT:
+ s.metricQueue = nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
index b6432f1a..645df245 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
@@ -23,28 +23,27 @@ func stringValue(v reflect.Value, indent int, buf *bytes.Buffer) {
case reflect.Struct:
buf.WriteString("{\n")
- names := []string{}
for i := 0; i < v.Type().NumField(); i++ {
- name := v.Type().Field(i).Name
- f := v.Field(i)
- if name[0:1] == strings.ToLower(name[0:1]) {
+ ft := v.Type().Field(i)
+ fv := v.Field(i)
+
+ if ft.Name[0:1] == strings.ToLower(ft.Name[0:1]) {
continue // ignore unexported fields
}
- if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice) && f.IsNil() {
+ if (fv.Kind() == reflect.Ptr || fv.Kind() == reflect.Slice) && fv.IsNil() {
continue // ignore unset fields
}
- names = append(names, name)
- }
- for i, n := range names {
- val := v.FieldByName(n)
buf.WriteString(strings.Repeat(" ", indent+2))
- buf.WriteString(n + ": ")
- stringValue(val, indent+2, buf)
+ buf.WriteString(ft.Name + ": ")
- if i < len(names)-1 {
- buf.WriteString(",\n")
+ if tag := ft.Tag.Get("sensitive"); tag == "true" {
+ buf.WriteString("<sensitive>")
+ } else {
+ stringValue(fv, indent+2, buf)
}
+
+ buf.WriteString(",\n")
}
buf.WriteString("\n" + strings.Repeat(" ", indent) + "}")
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go
index 212fe25e..70960538 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go
@@ -18,7 +18,7 @@ type Config struct {
// States that the signing name did not come from a modeled source but
// was derived based on other data. Used by service client constructors
- // to determine if the signin name can be overriden based on metadata the
+ // to determine if the signin name can be overridden based on metadata the
// service has.
SigningNameDerived bool
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/config.go b/vendor/github.com/aws/aws-sdk-go/aws/config.go
index 5421b5d4..10634d17 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/config.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/config.go
@@ -18,7 +18,7 @@ const UseServiceDefaultRetries = -1
type RequestRetryer interface{}
// A Config provides service configuration for service clients. By default,
-// all clients will use the defaults.DefaultConfig tructure.
+// all clients will use the defaults.DefaultConfig structure.
//
// // Create Session with MaxRetry configuration to be shared by multiple
// // service clients.
@@ -45,8 +45,8 @@ type Config struct {
// that overrides the default generated endpoint for a client. Set this
// to `""` to use the default generated endpoint.
//
- // @note You must still provide a `Region` value when specifying an
- // endpoint for a client.
+ // Note: You must still provide a `Region` value when specifying an
+ // endpoint for a client.
Endpoint *string
// The resolver to use for looking up endpoints for AWS service clients
@@ -65,8 +65,8 @@ type Config struct {
// noted. A full list of regions is found in the "Regions and Endpoints"
// document.
//
- // @see http://docs.aws.amazon.com/general/latest/gr/rande.html
- // AWS Regions and Endpoints
+ // See http://docs.aws.amazon.com/general/latest/gr/rande.html for AWS
+ // Regions and Endpoints.
Region *string
// Set this to `true` to disable SSL when sending requests. Defaults
@@ -120,9 +120,10 @@ type Config struct {
// will use virtual hosted bucket addressing when possible
// (`http://BUCKET.s3.amazonaws.com/KEY`).
//
- // @note This configuration option is specific to the Amazon S3 service.
- // @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
- // Amazon S3: Virtual Hosting of Buckets
+ // Note: This configuration option is specific to the Amazon S3 service.
+ //
+ // See http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
+ // for Amazon S3: Virtual Hosting of Buckets
S3ForcePathStyle *bool
// Set this to `true` to disable the SDK adding the `Expect: 100-Continue`
@@ -223,6 +224,28 @@ type Config struct {
// Key: aws.String("//foo//bar//moo"),
// })
DisableRestProtocolURICleaning *bool
+
+ // EnableEndpointDiscovery will allow for endpoint discovery on operations that
+ // have the definition in its model. By default, endpoint discovery is off.
+ //
+ // Example:
+ // sess := session.Must(session.NewSession(&aws.Config{
+ // EnableEndpointDiscovery: aws.Bool(true),
+ // }))
+ //
+ // svc := s3.New(sess)
+ // out, err := svc.GetObject(&s3.GetObjectInput {
+ // Bucket: aws.String("bucketname"),
+ // Key: aws.String("/foo/bar/moo"),
+ // })
+ EnableEndpointDiscovery *bool
+
+ // DisableEndpointHostPrefix will disable the SDK's behavior of prefixing
+ // request endpoint hosts with modeled information.
+ //
+ // Disabling this feature is useful when you want to use local endpoints
+ // for testing that do not support the modeled host prefix pattern.
+ DisableEndpointHostPrefix *bool
}
// NewConfig returns a new Config pointer that can be chained with builder
@@ -377,6 +400,19 @@ func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {
return c
}
+// WithEndpointDiscovery will set whether or not to use endpoint discovery.
+func (c *Config) WithEndpointDiscovery(t bool) *Config {
+ c.EnableEndpointDiscovery = &t
+ return c
+}
+
+// WithDisableEndpointHostPrefix will set whether or not to use modeled host prefix
+// when making requests.
+func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {
+ c.DisableEndpointHostPrefix = &t
+ return c
+}
+
// MergeIn merges the passed in configs into the existing config object.
func (c *Config) MergeIn(cfgs ...*Config) {
for _, other := range cfgs {
@@ -476,6 +512,14 @@ func mergeInConfig(dst *Config, other *Config) {
if other.EnforceShouldRetryCheck != nil {
dst.EnforceShouldRetryCheck = other.EnforceShouldRetryCheck
}
+
+ if other.EnableEndpointDiscovery != nil {
+ dst.EnableEndpointDiscovery = other.EnableEndpointDiscovery
+ }
+
+ if other.DisableEndpointHostPrefix != nil {
+ dst.DisableEndpointHostPrefix = other.DisableEndpointHostPrefix
+ }
}
// Copy will return a shallow copy of the Config object. If any additional
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context.go b/vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go
index 79f42685..2866f9a7 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/context.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go
@@ -1,8 +1,8 @@
+// +build !go1.9
+
package aws
-import (
- "time"
-)
+import "time"
// Context is an copy of the Go v1.7 stdlib's context.Context interface.
// It is represented as a SDK interface to enable you to use the "WithContext"
@@ -35,37 +35,3 @@ type Context interface {
// functions.
Value(key interface{}) interface{}
}
-
-// BackgroundContext returns a context that will never be canceled, has no
-// values, and no deadline. This context is used by the SDK to provide
-// backwards compatibility with non-context API operations and functionality.
-//
-// Go 1.6 and before:
-// This context function is equivalent to context.Background in the Go stdlib.
-//
-// Go 1.7 and later:
-// The context returned will be the value returned by context.Background()
-//
-// See https://golang.org/pkg/context for more information on Contexts.
-func BackgroundContext() Context {
- return backgroundCtx
-}
-
-// SleepWithContext will wait for the timer duration to expire, or the context
-// is canceled. Which ever happens first. If the context is canceled the Context's
-// error will be returned.
-//
-// Expects Context to always return a non-nil error if the Done channel is closed.
-func SleepWithContext(ctx Context, dur time.Duration) error {
- t := time.NewTimer(dur)
- defer t.Stop()
-
- select {
- case <-t.C:
- break
- case <-ctx.Done():
- return ctx.Err()
- }
-
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go b/vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go
deleted file mode 100644
index 064f75c9..00000000
--- a/vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// +build go1.7
-
-package aws
-
-import "context"
-
-var (
- backgroundCtx = context.Background()
-)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go b/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go
new file mode 100644
index 00000000..3718b26e
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go
@@ -0,0 +1,11 @@
+// +build go1.9
+
+package aws
+
+import "context"
+
+// Context is an alias of the Go stdlib's context.Context interface.
+// It can be used within the SDK's API operation "WithContext" methods.
+//
+// See https://golang.org/pkg/context on how to use contexts.
+type Context = context.Context
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_1_6.go b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go
index 8fdda530..66c5945d 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/context_1_6.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go
@@ -39,3 +39,18 @@ func (e *emptyCtx) String() string {
var (
backgroundCtx = new(emptyCtx)
)
+
+// BackgroundContext returns a context that will never be canceled, has no
+// values, and no deadline. This context is used by the SDK to provide
+// backwards compatibility with non-context API operations and functionality.
+//
+// Go 1.6 and before:
+// This context function is equivalent to context.Background in the Go stdlib.
+//
+// Go 1.7 and later:
+// The context returned will be the value returned by context.Background()
+//
+// See https://golang.org/pkg/context for more information on Contexts.
+func BackgroundContext() Context {
+ return backgroundCtx
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go
new file mode 100644
index 00000000..9c29f29a
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go
@@ -0,0 +1,20 @@
+// +build go1.7
+
+package aws
+
+import "context"
+
+// BackgroundContext returns a context that will never be canceled, has no
+// values, and no deadline. This context is used by the SDK to provide
+// backwards compatibility with non-context API operations and functionality.
+//
+// Go 1.6 and before:
+// This context function is equivalent to context.Background in the Go stdlib.
+//
+// Go 1.7 and later:
+// The context returned will be the value returned by context.Background()
+//
+// See https://golang.org/pkg/context for more information on Contexts.
+func BackgroundContext() Context {
+ return context.Background()
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go b/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go
new file mode 100644
index 00000000..304fd156
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go
@@ -0,0 +1,24 @@
+package aws
+
+import (
+ "time"
+)
+
+// SleepWithContext will wait for the timer duration to expire, or the context
+// is canceled. Which ever happens first. If the context is canceled the Context's
+// error will be returned.
+//
+// Expects Context to always return a non-nil error if the Done channel is closed.
+func SleepWithContext(ctx Context, dur time.Duration) error {
+ t := time.NewTimer(dur)
+ defer t.Stop()
+
+ select {
+ case <-t.C:
+ break
+ case <-ctx.Done():
+ return ctx.Err()
+ }
+
+ return nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
index cfcddf3d..f8853d78 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
@@ -72,9 +72,9 @@ var ValidateReqSigHandler = request.NamedHandler{
signedTime = r.LastSignedAt
}
- // 10 minutes to allow for some clock skew/delays in transmission.
+ // 5 minutes to allow for some clock skew/delays in transmission.
// Would be improved with aws/aws-sdk-go#423
- if signedTime.Add(10 * time.Minute).After(time.Now()) {
+ if signedTime.Add(5 * time.Minute).After(time.Now()) {
return
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
index a15f496b..ab69c7a6 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
@@ -17,7 +17,7 @@ var SDKVersionUserAgentHandler = request.NamedHandler{
}
const execEnvVar = `AWS_EXECUTION_ENV`
-const execEnvUAKey = `exec_env`
+const execEnvUAKey = `exec-env`
// AddHostExecEnvUserAgentHander is a request handler appending the SDK's
// execution environment to the user agent.
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go
index f298d659..3ad1e798 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go
@@ -9,9 +9,7 @@ var (
// providers in the ChainProvider.
//
// This has been deprecated. For verbose error messaging set
- // aws.Config.CredentialsChainVerboseErrors to true
- //
- // @readonly
+ // aws.Config.CredentialsChainVerboseErrors to true.
ErrNoValidProvidersFoundInChain = awserr.New("NoCredentialProviders",
`no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors`,
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
index a270844d..894bbc7f 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
@@ -49,6 +49,8 @@
package credentials
import (
+ "fmt"
+ "github.com/aws/aws-sdk-go/aws/awserr"
"sync"
"time"
)
@@ -64,8 +66,6 @@ import (
// Credentials: credentials.AnonymousCredentials,
// })))
// // Access public S3 buckets.
-//
-// @readonly
var AnonymousCredentials = NewStaticCredentials("", "", "")
// A Value is the AWS credentials value for individual credential fields.
@@ -99,6 +99,14 @@ type Provider interface {
IsExpired() bool
}
+// An Expirer is an interface that Providers can implement to expose the expiration
+// time, if known. If the Provider cannot accurately provide this info,
+// it should not implement this interface.
+type Expirer interface {
+ // The time at which the credentials are no longer valid
+ ExpiresAt() time.Time
+}
+
// An ErrorProvider is a stub credentials provider that always returns an error
// this is used by the SDK when construction a known provider is not possible
// due to an error.
@@ -165,6 +173,11 @@ func (e *Expiry) IsExpired() bool {
return e.expiration.Before(curTime())
}
+// ExpiresAt returns the expiration time of the credential
+func (e *Expiry) ExpiresAt() time.Time {
+ return e.expiration
+}
+
// A Credentials provides concurrency safe retrieval of AWS credentials Value.
// Credentials will cache the credentials value until they expire. Once the value
// expires the next Get will attempt to retrieve valid credentials.
@@ -257,3 +270,23 @@ func (c *Credentials) IsExpired() bool {
func (c *Credentials) isExpired() bool {
return c.forceRefresh || c.provider.IsExpired()
}
+
+// ExpiresAt provides access to the functionality of the Expirer interface of
+// the underlying Provider, if it supports that interface. Otherwise, it returns
+// an error.
+func (c *Credentials) ExpiresAt() (time.Time, error) {
+ c.m.RLock()
+ defer c.m.RUnlock()
+
+ expirer, ok := c.provider.(Expirer)
+ if !ok {
+ return time.Time{}, awserr.New("ProviderNotExpirer",
+ fmt.Sprintf("provider %s does not support ExpiresAt()", c.creds.ProviderName),
+ nil)
+ }
+ if c.forceRefresh {
+ // set expiration time to the distant past
+ return time.Time{}, nil
+ }
+ return expirer.ExpiresAt(), nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
index c14231a1..54c5cf73 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
@@ -12,14 +12,10 @@ const EnvProviderName = "EnvProvider"
var (
// ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be
// found in the process's environment.
- //
- // @readonly
ErrAccessKeyIDNotFound = awserr.New("EnvAccessKeyNotFound", "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment", nil)
// ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key
// can't be found in the process's environment.
- //
- // @readonly
ErrSecretAccessKeyNotFound = awserr.New("EnvSecretNotFound", "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment", nil)
)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go
new file mode 100644
index 00000000..1980c8c1
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go
@@ -0,0 +1,425 @@
+/*
+Package processcreds is a credential Provider to retrieve `credential_process`
+credentials.
+
+WARNING: The following describes a method of sourcing credentials from an external
+process. This can potentially be dangerous, so proceed with caution. Other
+credential providers should be preferred if at all possible. If using this
+option, you should make sure that the config file is as locked down as possible
+using security best practices for your operating system.
+
+You can use credentials from a `credential_process` in a variety of ways.
+
+One way is to setup your shared config file, located in the default
+location, with the `credential_process` key and the command you want to be
+called. You also need to set the AWS_SDK_LOAD_CONFIG environment variable
+(e.g., `export AWS_SDK_LOAD_CONFIG=1`) to use the shared config file.
+
+ [default]
+ credential_process = /command/to/call
+
+Creating a new session will use the credential process to retrieve credentials.
+NOTE: If there are credentials in the profile you are using, the credential
+process will not be used.
+
+ // Initialize a session to load credentials.
+ sess, _ := session.NewSession(&aws.Config{
+ Region: aws.String("us-east-1")},
+ )
+
+ // Create S3 service client to use the credentials.
+ svc := s3.New(sess)
+
+Another way to use the `credential_process` method is by using
+`credentials.NewCredentials()` and providing a command to be executed to
+retrieve credentials:
+
+ // Create credentials using the ProcessProvider.
+ creds := processcreds.NewCredentials("/path/to/command")
+
+ // Create service client value configured for credentials.
+ svc := s3.New(sess, &aws.Config{Credentials: creds})
+
+You can set a non-default timeout for the `credential_process` with another
+constructor, `credentials.NewCredentialsTimeout()`, providing the timeout. To
+set a one minute timeout:
+
+ // Create credentials using the ProcessProvider.
+ creds := processcreds.NewCredentialsTimeout(
+ "/path/to/command",
+ time.Duration(500) * time.Millisecond)
+
+If you need more control, you can set any configurable options in the
+credentials using one or more option functions. For example, you can set a two
+minute timeout, a credential duration of 60 minutes, and a maximum stdout
+buffer size of 2k.
+
+ creds := processcreds.NewCredentials(
+ "/path/to/command",
+ func(opt *ProcessProvider) {
+ opt.Timeout = time.Duration(2) * time.Minute
+ opt.Duration = time.Duration(60) * time.Minute
+ opt.MaxBufSize = 2048
+ })
+
+You can also use your own `exec.Cmd`:
+
+ // Create an exec.Cmd
+ myCommand := exec.Command("/path/to/command")
+
+ // Create credentials using your exec.Cmd and custom timeout
+ creds := processcreds.NewCredentialsCommand(
+ myCommand,
+ func(opt *processcreds.ProcessProvider) {
+ opt.Timeout = time.Duration(1) * time.Second
+ })
+*/
+package processcreds
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/aws/aws-sdk-go/aws/awserr"
+ "github.com/aws/aws-sdk-go/aws/credentials"
+)
+
+const (
+ // ProviderName is the name this credentials provider will label any
+ // returned credentials Value with.
+ ProviderName = `ProcessProvider`
+
+ // ErrCodeProcessProviderParse error parsing process output
+ ErrCodeProcessProviderParse = "ProcessProviderParseError"
+
+ // ErrCodeProcessProviderVersion version error in output
+ ErrCodeProcessProviderVersion = "ProcessProviderVersionError"
+
+ // ErrCodeProcessProviderRequired required attribute missing in output
+ ErrCodeProcessProviderRequired = "ProcessProviderRequiredError"
+
+ // ErrCodeProcessProviderExecution execution of command failed
+ ErrCodeProcessProviderExecution = "ProcessProviderExecutionError"
+
+ // errMsgProcessProviderTimeout process took longer than allowed
+ errMsgProcessProviderTimeout = "credential process timed out"
+
+ // errMsgProcessProviderProcess process error
+ errMsgProcessProviderProcess = "error in credential_process"
+
+ // errMsgProcessProviderParse problem parsing output
+ errMsgProcessProviderParse = "parse failed of credential_process output"
+
+ // errMsgProcessProviderVersion version error in output
+ errMsgProcessProviderVersion = "wrong version in process output (not 1)"
+
+ // errMsgProcessProviderMissKey missing access key id in output
+ errMsgProcessProviderMissKey = "missing AccessKeyId in process output"
+
+ // errMsgProcessProviderMissSecret missing secret acess key in output
+ errMsgProcessProviderMissSecret = "missing SecretAccessKey in process output"
+
+ // errMsgProcessProviderPrepareCmd prepare of command failed
+ errMsgProcessProviderPrepareCmd = "failed to prepare command"
+
+ // errMsgProcessProviderEmptyCmd command must not be empty
+ errMsgProcessProviderEmptyCmd = "command must not be empty"
+
+ // errMsgProcessProviderPipe failed to initialize pipe
+ errMsgProcessProviderPipe = "failed to initialize pipe"
+
+ // DefaultDuration is the default amount of time in minutes that the
+ // credentials will be valid for.
+ DefaultDuration = time.Duration(15) * time.Minute
+
+ // DefaultBufSize limits buffer size from growing to an enormous
+ // amount due to a faulty process.
+ DefaultBufSize = 1024
+
+ // DefaultTimeout default limit on time a process can run.
+ DefaultTimeout = time.Duration(1) * time.Minute
+)
+
+// ProcessProvider satisfies the credentials.Provider interface, and is a
+// client to retrieve credentials from a process.
+type ProcessProvider struct {
+ staticCreds bool
+ credentials.Expiry
+ originalCommand []string
+
+ // Expiry duration of the credentials. Defaults to 15 minutes if not set.
+ Duration time.Duration
+
+ // ExpiryWindow will allow the credentials to trigger refreshing prior to
+ // the credentials actually expiring. This is beneficial so race conditions
+ // with expiring credentials do not cause request to fail unexpectedly
+ // due to ExpiredTokenException exceptions.
+ //
+ // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true
+ // 10 seconds before the credentials are actually expired.
+ //
+ // If ExpiryWindow is 0 or less it will be ignored.
+ ExpiryWindow time.Duration
+
+ // A string representing an os command that should return a JSON with
+ // credential information.
+ command *exec.Cmd
+
+ // MaxBufSize limits memory usage from growing to an enormous
+ // amount due to a faulty process.
+ MaxBufSize int
+
+ // Timeout limits the time a process can run.
+ Timeout time.Duration
+}
+
+// NewCredentials returns a pointer to a new Credentials object wrapping the
+// ProcessProvider. The credentials will expire every 15 minutes by default.
+func NewCredentials(command string, options ...func(*ProcessProvider)) *credentials.Credentials {
+ p := &ProcessProvider{
+ command: exec.Command(command),
+ Duration: DefaultDuration,
+ Timeout: DefaultTimeout,
+ MaxBufSize: DefaultBufSize,
+ }
+
+ for _, option := range options {
+ option(p)
+ }
+
+ return credentials.NewCredentials(p)
+}
+
+// NewCredentialsTimeout returns a pointer to a new Credentials object with
+// the specified command and timeout, and default duration and max buffer size.
+func NewCredentialsTimeout(command string, timeout time.Duration) *credentials.Credentials {
+ p := NewCredentials(command, func(opt *ProcessProvider) {
+ opt.Timeout = timeout
+ })
+
+ return p
+}
+
+// NewCredentialsCommand returns a pointer to a new Credentials object with
+// the specified command, and default timeout, duration and max buffer size.
+func NewCredentialsCommand(command *exec.Cmd, options ...func(*ProcessProvider)) *credentials.Credentials {
+ p := &ProcessProvider{
+ command: command,
+ Duration: DefaultDuration,
+ Timeout: DefaultTimeout,
+ MaxBufSize: DefaultBufSize,
+ }
+
+ for _, option := range options {
+ option(p)
+ }
+
+ return credentials.NewCredentials(p)
+}
+
+type credentialProcessResponse struct {
+ Version int
+ AccessKeyID string `json:"AccessKeyId"`
+ SecretAccessKey string
+ SessionToken string
+ Expiration *time.Time
+}
+
+// Retrieve executes the 'credential_process' and returns the credentials.
+func (p *ProcessProvider) Retrieve() (credentials.Value, error) {
+ out, err := p.executeCredentialProcess()
+ if err != nil {
+ return credentials.Value{ProviderName: ProviderName}, err
+ }
+
+ // Serialize and validate response
+ resp := &credentialProcessResponse{}
+ if err = json.Unmarshal(out, resp); err != nil {
+ return credentials.Value{ProviderName: ProviderName}, awserr.New(
+ ErrCodeProcessProviderParse,
+ fmt.Sprintf("%s: %s", errMsgProcessProviderParse, string(out)),
+ err)
+ }
+
+ if resp.Version != 1 {
+ return credentials.Value{ProviderName: ProviderName}, awserr.New(
+ ErrCodeProcessProviderVersion,
+ errMsgProcessProviderVersion,
+ nil)
+ }
+
+ if len(resp.AccessKeyID) == 0 {
+ return credentials.Value{ProviderName: ProviderName}, awserr.New(
+ ErrCodeProcessProviderRequired,
+ errMsgProcessProviderMissKey,
+ nil)
+ }
+
+ if len(resp.SecretAccessKey) == 0 {
+ return credentials.Value{ProviderName: ProviderName}, awserr.New(
+ ErrCodeProcessProviderRequired,
+ errMsgProcessProviderMissSecret,
+ nil)
+ }
+
+ // Handle expiration
+ p.staticCreds = resp.Expiration == nil
+ if resp.Expiration != nil {
+ p.SetExpiration(*resp.Expiration, p.ExpiryWindow)
+ }
+
+ return credentials.Value{
+ ProviderName: ProviderName,
+ AccessKeyID: resp.AccessKeyID,
+ SecretAccessKey: resp.SecretAccessKey,
+ SessionToken: resp.SessionToken,
+ }, nil
+}
+
+// IsExpired returns true if the credentials retrieved are expired, or not yet
+// retrieved.
+func (p *ProcessProvider) IsExpired() bool {
+ if p.staticCreds {
+ return false
+ }
+ return p.Expiry.IsExpired()
+}
+
+// prepareCommand prepares the command to be executed.
+func (p *ProcessProvider) prepareCommand() error {
+
+ var cmdArgs []string
+ if runtime.GOOS == "windows" {
+ cmdArgs = []string{"cmd.exe", "/C"}
+ } else {
+ cmdArgs = []string{"sh", "-c"}
+ }
+
+ if len(p.originalCommand) == 0 {
+ p.originalCommand = make([]string, len(p.command.Args))
+ copy(p.originalCommand, p.command.Args)
+
+ // check for empty command because it succeeds
+ if len(strings.TrimSpace(p.originalCommand[0])) < 1 {
+ return awserr.New(
+ ErrCodeProcessProviderExecution,
+ fmt.Sprintf(
+ "%s: %s",
+ errMsgProcessProviderPrepareCmd,
+ errMsgProcessProviderEmptyCmd),
+ nil)
+ }
+ }
+
+ cmdArgs = append(cmdArgs, p.originalCommand...)
+ p.command = exec.Command(cmdArgs[0], cmdArgs[1:]...)
+ p.command.Env = os.Environ()
+
+ return nil
+}
+
+// executeCredentialProcess starts the credential process on the OS and
+// returns the results or an error.
+func (p *ProcessProvider) executeCredentialProcess() ([]byte, error) {
+
+ if err := p.prepareCommand(); err != nil {
+ return nil, err
+ }
+
+ // Setup the pipes
+ outReadPipe, outWritePipe, err := os.Pipe()
+ if err != nil {
+ return nil, awserr.New(
+ ErrCodeProcessProviderExecution,
+ errMsgProcessProviderPipe,
+ err)
+ }
+
+ p.command.Stderr = os.Stderr // display stderr on console for MFA
+ p.command.Stdout = outWritePipe // get creds json on process's stdout
+ p.command.Stdin = os.Stdin // enable stdin for MFA
+
+ output := bytes.NewBuffer(make([]byte, 0, p.MaxBufSize))
+
+ stdoutCh := make(chan error, 1)
+ go readInput(
+ io.LimitReader(outReadPipe, int64(p.MaxBufSize)),
+ output,
+ stdoutCh)
+
+ execCh := make(chan error, 1)
+ go executeCommand(*p.command, execCh)
+
+ finished := false
+ var errors []error
+ for !finished {
+ select {
+ case readError := <-stdoutCh:
+ errors = appendError(errors, readError)
+ finished = true
+ case execError := <-execCh:
+ err := outWritePipe.Close()
+ errors = appendError(errors, err)
+ errors = appendError(errors, execError)
+ if errors != nil {
+ return output.Bytes(), awserr.NewBatchError(
+ ErrCodeProcessProviderExecution,
+ errMsgProcessProviderProcess,
+ errors)
+ }
+ case <-time.After(p.Timeout):
+ finished = true
+ return output.Bytes(), awserr.NewBatchError(
+ ErrCodeProcessProviderExecution,
+ errMsgProcessProviderTimeout,
+ errors) // errors can be nil
+ }
+ }
+
+ out := output.Bytes()
+
+ if runtime.GOOS == "windows" {
+ // windows adds slashes to quotes
+ out = []byte(strings.Replace(string(out), `\"`, `"`, -1))
+ }
+
+ return out, nil
+}
+
+// appendError conveniently checks for nil before appending slice
+func appendError(errors []error, err error) []error {
+ if err != nil {
+ return append(errors, err)
+ }
+ return errors
+}
+
+func executeCommand(cmd exec.Cmd, exec chan error) {
+ // Start the command
+ err := cmd.Start()
+ if err == nil {
+ err = cmd.Wait()
+ }
+
+ exec <- err
+}
+
+func readInput(r io.Reader, w io.Writer, read chan error) {
+ tee := io.TeeReader(r, w)
+
+ _, err := ioutil.ReadAll(tee)
+
+ if err == io.EOF {
+ err = nil
+ }
+
+ read <- err // will only arrive here when write end of pipe is closed
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go
index 51e21e0f..e1551495 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go
@@ -4,9 +4,8 @@ import (
"fmt"
"os"
- "github.com/go-ini/ini"
-
"github.com/aws/aws-sdk-go/aws/awserr"
+ "github.com/aws/aws-sdk-go/internal/ini"
"github.com/aws/aws-sdk-go/internal/shareddefaults"
)
@@ -77,36 +76,37 @@ func (p *SharedCredentialsProvider) IsExpired() bool {
// The credentials retrieved from the profile will be returned or error. Error will be
// returned if it fails to read from the file, or the data is invalid.
func loadProfile(filename, profile string) (Value, error) {
- config, err := ini.Load(filename)
+ config, err := ini.OpenFile(filename)
if err != nil {
return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsLoad", "failed to load shared credentials file", err)
}
- iniProfile, err := config.GetSection(profile)
- if err != nil {
- return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsLoad", "failed to get profile", err)
+
+ iniProfile, ok := config.GetSection(profile)
+ if !ok {
+ return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsLoad", "failed to get profile", nil)
}
- id, err := iniProfile.GetKey("aws_access_key_id")
- if err != nil {
+ id := iniProfile.String("aws_access_key_id")
+ if len(id) == 0 {
return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsAccessKey",
fmt.Sprintf("shared credentials %s in %s did not contain aws_access_key_id", profile, filename),
- err)
+ nil)
}
- secret, err := iniProfile.GetKey("aws_secret_access_key")
- if err != nil {
+ secret := iniProfile.String("aws_secret_access_key")
+ if len(secret) == 0 {
return Value{ProviderName: SharedCredsProviderName}, awserr.New("SharedCredsSecret",
fmt.Sprintf("shared credentials %s in %s did not contain aws_secret_access_key", profile, filename),
nil)
}
// Default to empty string if not found
- token := iniProfile.Key("aws_session_token")
+ token := iniProfile.String("aws_session_token")
return Value{
- AccessKeyID: id.String(),
- SecretAccessKey: secret.String(),
- SessionToken: token.String(),
+ AccessKeyID: id,
+ SecretAccessKey: secret,
+ SessionToken: token,
ProviderName: SharedCredsProviderName,
}, nil
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
index 4f5dab3f..531139e3 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
@@ -9,8 +9,6 @@ const StaticProviderName = "StaticProvider"
var (
// ErrStaticCredentialsEmpty is emitted when static credentials are empty.
- //
- // @readonly
ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil)
)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
index 4b0d630e..5bacc791 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
@@ -3,6 +3,8 @@ package csm
import (
"strconv"
"time"
+
+ "github.com/aws/aws-sdk-go/aws"
)
type metricTime time.Time
@@ -39,6 +41,12 @@ type metric struct {
SDKException *string `json:"SdkException,omitempty"`
SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"`
+ FinalHTTPStatusCode *int `json:"FinalHttpStatusCode,omitempty"`
+ FinalAWSException *string `json:"FinalAwsException,omitempty"`
+ FinalAWSExceptionMessage *string `json:"FinalAwsExceptionMessage,omitempty"`
+ FinalSDKException *string `json:"FinalSdkException,omitempty"`
+ FinalSDKExceptionMessage *string `json:"FinalSdkExceptionMessage,omitempty"`
+
DestinationIP *string `json:"DestinationIp,omitempty"`
ConnectionReused *int `json:"ConnectionReused,omitempty"`
@@ -48,4 +56,54 @@ type metric struct {
DNSLatency *int `json:"DnsLatency,omitempty"`
TCPLatency *int `json:"TcpLatency,omitempty"`
SSLLatency *int `json:"SslLatency,omitempty"`
+
+ MaxRetriesExceeded *int `json:"MaxRetriesExceeded,omitempty"`
+}
+
+func (m *metric) TruncateFields() {
+ m.ClientID = truncateString(m.ClientID, 255)
+ m.UserAgent = truncateString(m.UserAgent, 256)
+
+ m.AWSException = truncateString(m.AWSException, 128)
+ m.AWSExceptionMessage = truncateString(m.AWSExceptionMessage, 512)
+
+ m.SDKException = truncateString(m.SDKException, 128)
+ m.SDKExceptionMessage = truncateString(m.SDKExceptionMessage, 512)
+
+ m.FinalAWSException = truncateString(m.FinalAWSException, 128)
+ m.FinalAWSExceptionMessage = truncateString(m.FinalAWSExceptionMessage, 512)
+
+ m.FinalSDKException = truncateString(m.FinalSDKException, 128)
+ m.FinalSDKExceptionMessage = truncateString(m.FinalSDKExceptionMessage, 512)
+}
+
+func truncateString(v *string, l int) *string {
+ if v != nil && len(*v) > l {
+ nv := (*v)[:l]
+ return &nv
+ }
+
+ return v
+}
+
+func (m *metric) SetException(e metricException) {
+ switch te := e.(type) {
+ case awsException:
+ m.AWSException = aws.String(te.exception)
+ m.AWSExceptionMessage = aws.String(te.message)
+ case sdkException:
+ m.SDKException = aws.String(te.exception)
+ m.SDKExceptionMessage = aws.String(te.message)
+ }
+}
+
+func (m *metric) SetFinalException(e metricException) {
+ switch te := e.(type) {
+ case awsException:
+ m.FinalAWSException = aws.String(te.exception)
+ m.FinalAWSExceptionMessage = aws.String(te.message)
+ case sdkException:
+ m.FinalSDKException = aws.String(te.exception)
+ m.FinalSDKExceptionMessage = aws.String(te.message)
+ }
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go
new file mode 100644
index 00000000..54a99280
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go
@@ -0,0 +1,26 @@
+package csm
+
+type metricException interface {
+ Exception() string
+ Message() string
+}
+
+type requestException struct {
+ exception string
+ message string
+}
+
+func (e requestException) Exception() string {
+ return e.exception
+}
+func (e requestException) Message() string {
+ return e.message
+}
+
+type awsException struct {
+ requestException
+}
+
+type sdkException struct {
+ requestException
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
index 11082e5e..0b5571ac 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
@@ -82,14 +82,15 @@ func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) {
if r.Error != nil {
if awserr, ok := r.Error.(awserr.Error); ok {
- setError(&m, awserr)
+ m.SetException(getMetricException(awserr))
}
}
+ m.TruncateFields()
rep.metricsCh.Push(m)
}
-func setError(m *metric, err awserr.Error) {
+func getMetricException(err awserr.Error) metricException {
msg := err.Error()
code := err.Code()
@@ -97,11 +98,13 @@ func setError(m *metric, err awserr.Error) {
case "RequestError",
"SerializationError",
request.CanceledErrorCode:
- m.SDKException = &code
- m.SDKExceptionMessage = &msg
+ return sdkException{
+ requestException{exception: code, message: msg},
+ }
default:
- m.AWSException = &code
- m.AWSExceptionMessage = &msg
+ return awsException{
+ requestException{exception: code, message: msg},
+ }
}
}
@@ -112,16 +115,31 @@ func (rep *Reporter) sendAPICallMetric(r *request.Request) {
now := time.Now()
m := metric{
- ClientID: aws.String(rep.clientID),
- API: aws.String(r.Operation.Name),
- Service: aws.String(r.ClientInfo.ServiceID),
- Timestamp: (*metricTime)(&now),
- Type: aws.String("ApiCall"),
- AttemptCount: aws.Int(r.RetryCount + 1),
- Latency: aws.Int(int(time.Now().Sub(r.Time) / time.Millisecond)),
- XAmzRequestID: aws.String(r.RequestID),
+ ClientID: aws.String(rep.clientID),
+ API: aws.String(r.Operation.Name),
+ Service: aws.String(r.ClientInfo.ServiceID),
+ Timestamp: (*metricTime)(&now),
+ UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")),
+ Type: aws.String("ApiCall"),
+ AttemptCount: aws.Int(r.RetryCount + 1),
+ Region: r.Config.Region,
+ Latency: aws.Int(int(time.Now().Sub(r.Time) / time.Millisecond)),
+ XAmzRequestID: aws.String(r.RequestID),
+ MaxRetriesExceeded: aws.Int(boolIntValue(r.RetryCount >= r.MaxRetries())),
+ }
+
+ if r.HTTPResponse != nil {
+ m.FinalHTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode)
}
+ if r.Error != nil {
+ if awserr, ok := r.Error.(awserr.Error); ok {
+ m.SetFinalException(getMetricException(awserr))
+ }
+ }
+
+ m.TruncateFields()
+
// TODO: Probably want to figure something out for logging dropped
// metrics
rep.metricsCh.Push(m)
@@ -221,11 +239,22 @@ func (rep *Reporter) InjectHandlers(handlers *request.Handlers) {
return
}
- apiCallHandler := request.NamedHandler{Name: APICallMetricHandlerName, Fn: rep.sendAPICallMetric}
- apiCallAttemptHandler := request.NamedHandler{Name: APICallAttemptMetricHandlerName, Fn: rep.sendAPICallAttemptMetric}
+ handlers.Complete.PushFrontNamed(request.NamedHandler{
+ Name: APICallMetricHandlerName,
+ Fn: rep.sendAPICallMetric,
+ })
- handlers.Complete.PushFrontNamed(apiCallHandler)
- handlers.Complete.PushFrontNamed(apiCallAttemptHandler)
+ handlers.CompleteAttempt.PushFrontNamed(request.NamedHandler{
+ Name: APICallAttemptMetricHandlerName,
+ Fn: rep.sendAPICallAttemptMetric,
+ })
+}
+
+// boolIntValue return 1 for true and 0 for false.
+func boolIntValue(b bool) int {
+ if b {
+ return 1
+ }
- handlers.AfterRetry.PushFrontNamed(apiCallAttemptHandler)
+ return 0
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
index 6cd84cd9..23bb639e 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
@@ -24,6 +24,7 @@ import (
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/request"
+ "github.com/aws/aws-sdk-go/internal/shareddefaults"
)
// A Defaults provides a collection of default values for SDK clients.
@@ -114,7 +115,6 @@ func CredProviders(cfg *aws.Config, handlers request.Handlers) []credentials.Pro
const (
httpProviderAuthorizationEnvVar = "AWS_CONTAINER_AUTHORIZATION_TOKEN"
httpProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_FULL_URI"
- ecsCredsProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
)
// RemoteCredProvider returns a credentials provider for the default remote
@@ -124,8 +124,8 @@ func RemoteCredProvider(cfg aws.Config, handlers request.Handlers) credentials.P
return localHTTPCredProvider(cfg, handlers, u)
}
- if uri := os.Getenv(ecsCredsProviderEnvVar); len(uri) > 0 {
- u := fmt.Sprintf("http://169.254.170.2%s", uri)
+ if uri := os.Getenv(shareddefaults.ECSCredsProviderEnvVar); len(uri) > 0 {
+ u := fmt.Sprintf("%s%s", shareddefaults.ECSContainerCredentialsURI, uri)
return httpCredProvider(cfg, handlers, u)
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
index c215cd3f..88e2fc70 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
@@ -118,6 +118,10 @@ func (c *EC2Metadata) Region() (string, error) {
return "", err
}
+ if len(resp) == 0 {
+ return "", awserr.New("EC2MetadataError", "invalid Region response", nil)
+ }
+
// returns region without the suffix. Eg: us-west-2a becomes us-west-2
return resp[:len(resp)-1], nil
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
index 53457cac..7d1f66e4 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
@@ -4,7 +4,7 @@
// This package's client can be disabled completely by setting the environment
// variable "AWS_EC2_METADATA_DISABLED=true". This environment variable set to
// true instructs the SDK to disable the EC2 Metadata client. The client cannot
-// be used while the environemnt variable is set to true, (case insensitive).
+// be used while the environment variable is set to true, (case insensitive).
package ec2metadata
import (
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
index c04ba06c..87b9ff3f 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
@@ -85,6 +85,7 @@ func decodeV3Endpoints(modelDef modelDefinition, opts DecodeModelOptions) (Resol
custAddS3DualStack(p)
custRmIotDataService(p)
custFixAppAutoscalingChina(p)
+ custFixAppAutoscalingUsGov(p)
}
return ps, nil
@@ -95,7 +96,12 @@ func custAddS3DualStack(p *partition) {
return
}
- s, ok := p.Services["s3"]
+ custAddDualstack(p, "s3")
+ custAddDualstack(p, "s3-control")
+}
+
+func custAddDualstack(p *partition, svcName string) {
+ s, ok := p.Services[svcName]
if !ok {
return
}
@@ -103,7 +109,7 @@ func custAddS3DualStack(p *partition) {
s.Defaults.HasDualStack = boxedTrue
s.Defaults.DualStackHostname = "{service}.dualstack.{region}.{dnsSuffix}"
- p.Services["s3"] = s
+ p.Services[svcName] = s
}
func custAddEC2Metadata(p *partition) {
@@ -144,6 +150,33 @@ func custFixAppAutoscalingChina(p *partition) {
p.Services[serviceName] = s
}
+func custFixAppAutoscalingUsGov(p *partition) {
+ if p.ID != "aws-us-gov" {
+ return
+ }
+
+ const serviceName = "application-autoscaling"
+ s, ok := p.Services[serviceName]
+ if !ok {
+ return
+ }
+
+ if a := s.Defaults.CredentialScope.Service; a != "" {
+ fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty credential scope service, got %s\n", a)
+ return
+ }
+
+ if a := s.Defaults.Hostname; a != "" {
+ fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty hostname, got %s\n", a)
+ return
+ }
+
+ s.Defaults.CredentialScope.Service = "application-autoscaling"
+ s.Defaults.Hostname = "autoscaling.{region}.amazonaws.com"
+
+ p.Services[serviceName] = s
+}
+
type decodeModelError struct {
awsError
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
index 005bde0d..97486c32 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
@@ -22,6 +22,7 @@ const (
ApSoutheast2RegionID = "ap-southeast-2" // Asia Pacific (Sydney).
CaCentral1RegionID = "ca-central-1" // Canada (Central).
EuCentral1RegionID = "eu-central-1" // EU (Frankfurt).
+ EuNorth1RegionID = "eu-north-1" // EU (Stockholm).
EuWest1RegionID = "eu-west-1" // EU (Ireland).
EuWest2RegionID = "eu-west-2" // EU (London).
EuWest3RegionID = "eu-west-3" // EU (Paris).
@@ -40,141 +41,10 @@ const (
// AWS GovCloud (US) partition's regions.
const (
+ UsGovEast1RegionID = "us-gov-east-1" // AWS GovCloud (US-East).
UsGovWest1RegionID = "us-gov-west-1" // AWS GovCloud (US).
)
-// Service identifiers
-const (
- A4bServiceID = "a4b" // A4b.
- AcmServiceID = "acm" // Acm.
- AcmPcaServiceID = "acm-pca" // AcmPca.
- ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor.
- ApiPricingServiceID = "api.pricing" // ApiPricing.
- ApiSagemakerServiceID = "api.sagemaker" // ApiSagemaker.
- ApigatewayServiceID = "apigateway" // Apigateway.
- ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling.
- Appstream2ServiceID = "appstream2" // Appstream2.
- AthenaServiceID = "athena" // Athena.
- AutoscalingServiceID = "autoscaling" // Autoscaling.
- AutoscalingPlansServiceID = "autoscaling-plans" // AutoscalingPlans.
- BatchServiceID = "batch" // Batch.
- BudgetsServiceID = "budgets" // Budgets.
- CeServiceID = "ce" // Ce.
- Cloud9ServiceID = "cloud9" // Cloud9.
- ClouddirectoryServiceID = "clouddirectory" // Clouddirectory.
- CloudformationServiceID = "cloudformation" // Cloudformation.
- CloudfrontServiceID = "cloudfront" // Cloudfront.
- CloudhsmServiceID = "cloudhsm" // Cloudhsm.
- Cloudhsmv2ServiceID = "cloudhsmv2" // Cloudhsmv2.
- CloudsearchServiceID = "cloudsearch" // Cloudsearch.
- CloudtrailServiceID = "cloudtrail" // Cloudtrail.
- CodebuildServiceID = "codebuild" // Codebuild.
- CodecommitServiceID = "codecommit" // Codecommit.
- CodedeployServiceID = "codedeploy" // Codedeploy.
- CodepipelineServiceID = "codepipeline" // Codepipeline.
- CodestarServiceID = "codestar" // Codestar.
- CognitoIdentityServiceID = "cognito-identity" // CognitoIdentity.
- CognitoIdpServiceID = "cognito-idp" // CognitoIdp.
- CognitoSyncServiceID = "cognito-sync" // CognitoSync.
- ComprehendServiceID = "comprehend" // Comprehend.
- ConfigServiceID = "config" // Config.
- CurServiceID = "cur" // Cur.
- DatapipelineServiceID = "datapipeline" // Datapipeline.
- DaxServiceID = "dax" // Dax.
- DevicefarmServiceID = "devicefarm" // Devicefarm.
- DirectconnectServiceID = "directconnect" // Directconnect.
- DiscoveryServiceID = "discovery" // Discovery.
- DmsServiceID = "dms" // Dms.
- DsServiceID = "ds" // Ds.
- DynamodbServiceID = "dynamodb" // Dynamodb.
- Ec2ServiceID = "ec2" // Ec2.
- Ec2metadataServiceID = "ec2metadata" // Ec2metadata.
- EcrServiceID = "ecr" // Ecr.
- EcsServiceID = "ecs" // Ecs.
- ElasticacheServiceID = "elasticache" // Elasticache.
- ElasticbeanstalkServiceID = "elasticbeanstalk" // Elasticbeanstalk.
- ElasticfilesystemServiceID = "elasticfilesystem" // Elasticfilesystem.
- ElasticloadbalancingServiceID = "elasticloadbalancing" // Elasticloadbalancing.
- ElasticmapreduceServiceID = "elasticmapreduce" // Elasticmapreduce.
- ElastictranscoderServiceID = "elastictranscoder" // Elastictranscoder.
- EmailServiceID = "email" // Email.
- EntitlementMarketplaceServiceID = "entitlement.marketplace" // EntitlementMarketplace.
- EsServiceID = "es" // Es.
- EventsServiceID = "events" // Events.
- FirehoseServiceID = "firehose" // Firehose.
- FmsServiceID = "fms" // Fms.
- GameliftServiceID = "gamelift" // Gamelift.
- GlacierServiceID = "glacier" // Glacier.
- GlueServiceID = "glue" // Glue.
- GreengrassServiceID = "greengrass" // Greengrass.
- GuarddutyServiceID = "guardduty" // Guardduty.
- HealthServiceID = "health" // Health.
- IamServiceID = "iam" // Iam.
- ImportexportServiceID = "importexport" // Importexport.
- InspectorServiceID = "inspector" // Inspector.
- IotServiceID = "iot" // Iot.
- IotanalyticsServiceID = "iotanalytics" // Iotanalytics.
- KinesisServiceID = "kinesis" // Kinesis.
- KinesisanalyticsServiceID = "kinesisanalytics" // Kinesisanalytics.
- KinesisvideoServiceID = "kinesisvideo" // Kinesisvideo.
- KmsServiceID = "kms" // Kms.
- LambdaServiceID = "lambda" // Lambda.
- LightsailServiceID = "lightsail" // Lightsail.
- LogsServiceID = "logs" // Logs.
- MachinelearningServiceID = "machinelearning" // Machinelearning.
- MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics" // Marketplacecommerceanalytics.
- MediaconvertServiceID = "mediaconvert" // Mediaconvert.
- MedialiveServiceID = "medialive" // Medialive.
- MediapackageServiceID = "mediapackage" // Mediapackage.
- MediastoreServiceID = "mediastore" // Mediastore.
- MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace.
- MghServiceID = "mgh" // Mgh.
- MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics.
- ModelsLexServiceID = "models.lex" // ModelsLex.
- MonitoringServiceID = "monitoring" // Monitoring.
- MturkRequesterServiceID = "mturk-requester" // MturkRequester.
- NeptuneServiceID = "neptune" // Neptune.
- OpsworksServiceID = "opsworks" // Opsworks.
- OpsworksCmServiceID = "opsworks-cm" // OpsworksCm.
- OrganizationsServiceID = "organizations" // Organizations.
- PinpointServiceID = "pinpoint" // Pinpoint.
- PollyServiceID = "polly" // Polly.
- RdsServiceID = "rds" // Rds.
- RedshiftServiceID = "redshift" // Redshift.
- RekognitionServiceID = "rekognition" // Rekognition.
- ResourceGroupsServiceID = "resource-groups" // ResourceGroups.
- Route53ServiceID = "route53" // Route53.
- Route53domainsServiceID = "route53domains" // Route53domains.
- RuntimeLexServiceID = "runtime.lex" // RuntimeLex.
- RuntimeSagemakerServiceID = "runtime.sagemaker" // RuntimeSagemaker.
- S3ServiceID = "s3" // S3.
- SdbServiceID = "sdb" // Sdb.
- SecretsmanagerServiceID = "secretsmanager" // Secretsmanager.
- ServerlessrepoServiceID = "serverlessrepo" // Serverlessrepo.
- ServicecatalogServiceID = "servicecatalog" // Servicecatalog.
- ServicediscoveryServiceID = "servicediscovery" // Servicediscovery.
- ShieldServiceID = "shield" // Shield.
- SmsServiceID = "sms" // Sms.
- SnowballServiceID = "snowball" // Snowball.
- SnsServiceID = "sns" // Sns.
- SqsServiceID = "sqs" // Sqs.
- SsmServiceID = "ssm" // Ssm.
- StatesServiceID = "states" // States.
- StoragegatewayServiceID = "storagegateway" // Storagegateway.
- StreamsDynamodbServiceID = "streams.dynamodb" // StreamsDynamodb.
- StsServiceID = "sts" // Sts.
- SupportServiceID = "support" // Support.
- SwfServiceID = "swf" // Swf.
- TaggingServiceID = "tagging" // Tagging.
- TranslateServiceID = "translate" // Translate.
- WafServiceID = "waf" // Waf.
- WafRegionalServiceID = "waf-regional" // WafRegional.
- WorkdocsServiceID = "workdocs" // Workdocs.
- WorkmailServiceID = "workmail" // Workmail.
- WorkspacesServiceID = "workspaces" // Workspaces.
- XrayServiceID = "xray" // Xray.
-)
-
// DefaultResolver returns an Endpoint resolver that will be able
// to resolve endpoints for: AWS Standard, AWS China, and AWS GovCloud (US).
//
@@ -242,6 +112,9 @@ var awsPartition = partition{
"eu-central-1": region{
Description: "EU (Frankfurt)",
},
+ "eu-north-1": region{
+ Description: "EU (Stockholm)",
+ },
"eu-west-1": region{
Description: "EU (Ireland)",
},
@@ -284,6 +157,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -311,6 +185,107 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "api.ecr": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{
+ Hostname: "api.ecr.ap-northeast-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-northeast-1",
+ },
+ },
+ "ap-northeast-2": endpoint{
+ Hostname: "api.ecr.ap-northeast-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-northeast-2",
+ },
+ },
+ "ap-south-1": endpoint{
+ Hostname: "api.ecr.ap-south-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-south-1",
+ },
+ },
+ "ap-southeast-1": endpoint{
+ Hostname: "api.ecr.ap-southeast-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-1",
+ },
+ },
+ "ap-southeast-2": endpoint{
+ Hostname: "api.ecr.ap-southeast-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-2",
+ },
+ },
+ "ca-central-1": endpoint{
+ Hostname: "api.ecr.ca-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
+ "eu-central-1": endpoint{
+ Hostname: "api.ecr.eu-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-central-1",
+ },
+ },
+ "eu-north-1": endpoint{
+ Hostname: "api.ecr.eu-north-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-north-1",
+ },
+ },
+ "eu-west-1": endpoint{
+ Hostname: "api.ecr.eu-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-west-1",
+ },
+ },
+ "eu-west-2": endpoint{
+ Hostname: "api.ecr.eu-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-west-2",
+ },
+ },
+ "eu-west-3": endpoint{
+ Hostname: "api.ecr.eu-west-3.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-west-3",
+ },
+ },
+ "sa-east-1": endpoint{
+ Hostname: "api.ecr.sa-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "sa-east-1",
+ },
+ },
+ "us-east-1": endpoint{
+ Hostname: "api.ecr.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-2": endpoint{
+ Hostname: "api.ecr.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-west-1": endpoint{
+ Hostname: "api.ecr.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "us-west-2": endpoint{
+ Hostname: "api.ecr.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ },
+ },
"api.mediatailor": service{
Endpoints: endpoints{
@@ -319,6 +294,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"api.pricing": service{
@@ -337,11 +313,16 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
+ "ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -355,6 +336,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -381,6 +363,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -400,11 +383,29 @@ var awsPartition = partition{
},
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-west-2": endpoint{},
},
},
+ "appsync": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"athena": service{
Endpoints: endpoints{
@@ -433,6 +434,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -452,10 +454,18 @@ var awsPartition = partition{
},
},
Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
+ "eu-central-1": endpoint{},
"eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -471,6 +481,7 @@ var awsPartition = partition{
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@@ -504,6 +515,23 @@ var awsPartition = partition{
},
},
},
+ "chime": service{
+ PartitionEndpoint: "aws-global",
+ IsRegionalized: boxedFalse,
+ Defaults: endpoint{
+ SSLCommonName: "service.chime.aws.amazon.com",
+ Protocols: []string{"https"},
+ },
+ Endpoints: endpoints{
+ "aws-global": endpoint{
+ Hostname: "service.chime.aws.amazon.com",
+ Protocols: []string{"https"},
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ },
+ },
"cloud9": service{
Endpoints: endpoints{
@@ -519,6 +547,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
@@ -537,6 +566,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -584,13 +614,16 @@ var awsPartition = partition{
},
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@@ -622,6 +655,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -689,11 +723,17 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
- "sa-east-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "fips": endpoint{
+ Hostname: "codecommit-fips.ca-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
+ "sa-east-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"codedeploy": service{
@@ -706,14 +746,39 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "us-east-1-fips": endpoint{
+ Hostname: "codedeploy-fips.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-2": endpoint{},
+ "us-east-2-fips": endpoint{
+ Hostname: "codedeploy-fips.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-west-1": endpoint{},
+ "us-west-1-fips": endpoint{
+ Hostname: "codedeploy-fips.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "us-west-2": endpoint{},
+ "us-west-2-fips": endpoint{
+ Hostname: "codedeploy-fips.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
},
},
"codepipeline": service{
@@ -761,6 +826,7 @@ var awsPartition = partition{
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
@@ -777,6 +843,7 @@ var awsPartition = partition{
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
@@ -807,6 +874,7 @@ var awsPartition = partition{
},
Endpoints: endpoints{
"ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@@ -823,6 +891,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -849,6 +918,21 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "datasync": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"dax": service{
Endpoints: endpoints{
@@ -880,6 +964,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -916,6 +1001,35 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "docdb": service{
+
+ Endpoints: endpoints{
+ "eu-west-1": endpoint{
+ Hostname: "rds.eu-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-west-1",
+ },
+ },
+ "us-east-1": endpoint{
+ Hostname: "rds.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-2": endpoint{
+ Hostname: "rds.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-west-2": endpoint{
+ Hostname: "rds.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ },
+ },
"ds": service{
Endpoints: endpoints{
@@ -947,6 +1061,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -976,6 +1091,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -997,26 +1113,6 @@ var awsPartition = partition{
},
},
},
- "ecr": service{
-
- Endpoints: endpoints{
- "ap-northeast-1": endpoint{},
- "ap-northeast-2": endpoint{},
- "ap-south-1": endpoint{},
- "ap-southeast-1": endpoint{},
- "ap-southeast-2": endpoint{},
- "ca-central-1": endpoint{},
- "eu-central-1": endpoint{},
- "eu-west-1": endpoint{},
- "eu-west-2": endpoint{},
- "eu-west-3": endpoint{},
- "sa-east-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
- },
- },
"ecs": service{
Endpoints: endpoints{
@@ -1027,6 +1123,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1047,6 +1144,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1073,6 +1171,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1110,6 +1209,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1135,10 +1235,11 @@ var awsPartition = partition{
"eu-central-1": endpoint{
SSLCommonName: "{service}.{region}.{dnsSuffix}",
},
- "eu-west-1": endpoint{},
- "eu-west-2": endpoint{},
- "eu-west-3": endpoint{},
- "sa-east-1": endpoint{},
+ "eu-north-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
+ "sa-east-1": endpoint{},
"us-east-1": endpoint{
SSLCommonName: "{service}.{region}.{dnsSuffix}",
},
@@ -1188,6 +1289,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1208,6 +1310,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1243,8 +1346,21 @@ var awsPartition = partition{
Protocols: []string{"https"},
},
Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
+ "fsx": service{
+
+ Endpoints: endpoints{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
+ "us-east-2": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -1279,6 +1395,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1301,8 +1418,10 @@ var awsPartition = partition{
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -1415,10 +1534,12 @@ var awsPartition = partition{
"iotanalytics": service{
Endpoints: endpoints{
- "eu-west-1": endpoint{},
- "us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-2": endpoint{},
+ "ap-northeast-1": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-2": endpoint{},
},
},
"kinesis": service{
@@ -1431,6 +1552,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1447,6 +1569,7 @@ var awsPartition = partition{
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
+ "us-east-2": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -1470,6 +1593,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1490,6 +1614,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1528,6 +1653,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1590,6 +1716,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
@@ -1597,6 +1724,7 @@ var awsPartition = partition{
"eu-west-3": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -1626,6 +1754,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1672,6 +1801,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1682,6 +1812,21 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "mq": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"mturk-requester": service{
IsRegionalized: boxedFalse,
@@ -1695,12 +1840,36 @@ var awsPartition = partition{
"neptune": service{
Endpoints: endpoints{
+ "ap-southeast-1": endpoint{
+ Hostname: "rds.ap-southeast-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-1",
+ },
+ },
+ "ap-southeast-2": endpoint{
+ Hostname: "rds.ap-southeast-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-2",
+ },
+ },
+ "eu-central-1": endpoint{
+ Hostname: "rds.eu-central-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-central-1",
+ },
+ },
"eu-west-1": endpoint{
Hostname: "rds.eu-west-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-west-1",
},
},
+ "eu-west-2": endpoint{
+ Hostname: "rds.eu-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "eu-west-2",
+ },
+ },
"us-east-1": endpoint{
Hostname: "rds.us-east-1.amazonaws.com",
CredentialScope: credentialScope{
@@ -1775,7 +1944,10 @@ var awsPartition = partition{
},
},
Endpoints: endpoints{
- "us-east-1": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-west-2": endpoint{},
},
},
"polly": service{
@@ -1808,6 +1980,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1830,6 +2003,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1861,6 +2035,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -1871,6 +2046,14 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "robomaker": service{
+
+ Endpoints: endpoints{
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"route53": service{
PartitionEndpoint: "aws-global",
IsRegionalized: boxedFalse,
@@ -1890,6 +2073,20 @@ var awsPartition = partition{
"us-east-1": endpoint{},
},
},
+ "route53resolver": service{
+ Defaults: endpoint{
+ Protocols: []string{"https"},
+ },
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "eu-west-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"runtime.lex": service{
Defaults: endpoint{
CredentialScope: credentialScope{
@@ -1907,11 +2104,16 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
+ "ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
+ "us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@@ -1942,6 +2144,7 @@ var awsPartition = partition{
},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{
Hostname: "s3.eu-west-1.amazonaws.com",
SignatureVersions: []string{"s3", "s3v4"},
@@ -1974,6 +2177,157 @@ var awsPartition = partition{
},
},
},
+ "s3-control": service{
+ Defaults: endpoint{
+ Protocols: []string{"https"},
+ SignatureVersions: []string{"s3v4"},
+
+ HasDualStack: boxedTrue,
+ DualStackHostname: "{service}.dualstack.{region}.{dnsSuffix}",
+ },
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{
+ Hostname: "s3-control.ap-northeast-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ap-northeast-1",
+ },
+ },
+ "ap-northeast-2": endpoint{
+ Hostname: "s3-control.ap-northeast-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ap-northeast-2",
+ },
+ },
+ "ap-south-1": endpoint{
+ Hostname: "s3-control.ap-south-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ap-south-1",
+ },
+ },
+ "ap-southeast-1": endpoint{
+ Hostname: "s3-control.ap-southeast-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-1",
+ },
+ },
+ "ap-southeast-2": endpoint{
+ Hostname: "s3-control.ap-southeast-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ap-southeast-2",
+ },
+ },
+ "ca-central-1": endpoint{
+ Hostname: "s3-control.ca-central-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "ca-central-1",
+ },
+ },
+ "eu-central-1": endpoint{
+ Hostname: "s3-control.eu-central-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "eu-central-1",
+ },
+ },
+ "eu-north-1": endpoint{
+ Hostname: "s3-control.eu-north-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "eu-north-1",
+ },
+ },
+ "eu-west-1": endpoint{
+ Hostname: "s3-control.eu-west-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "eu-west-1",
+ },
+ },
+ "eu-west-2": endpoint{
+ Hostname: "s3-control.eu-west-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "eu-west-2",
+ },
+ },
+ "eu-west-3": endpoint{
+ Hostname: "s3-control.eu-west-3.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "eu-west-3",
+ },
+ },
+ "sa-east-1": endpoint{
+ Hostname: "s3-control.sa-east-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "sa-east-1",
+ },
+ },
+ "us-east-1": endpoint{
+ Hostname: "s3-control.us-east-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-1-fips": endpoint{
+ Hostname: "s3-control-fips.us-east-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-2": endpoint{
+ Hostname: "s3-control.us-east-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-east-2-fips": endpoint{
+ Hostname: "s3-control-fips.us-east-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-west-1": endpoint{
+ Hostname: "s3-control.us-west-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "us-west-1-fips": endpoint{
+ Hostname: "s3-control-fips.us-west-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "us-west-2": endpoint{
+ Hostname: "s3-control.us-west-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ "us-west-2-fips": endpoint{
+ Hostname: "s3-control-fips.us-west-2.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
+ },
+ },
"sdb": service{
Defaults: endpoint{
Protocols: []string{"http", "https"},
@@ -2036,6 +2390,26 @@ var awsPartition = partition{
},
},
},
+ "securityhub": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
+ "sa-east-1": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"serverlessrepo": service{
Defaults: endpoint{
Protocols: []string{"https"},
@@ -2100,20 +2474,49 @@ var awsPartition = partition{
"eu-west-3": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
- "us-east-2": endpoint{},
- "us-west-1": endpoint{},
- "us-west-2": endpoint{},
+ "us-east-1-fips": endpoint{
+ Hostname: "servicecatalog-fips.us-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-1",
+ },
+ },
+ "us-east-2": endpoint{},
+ "us-east-2-fips": endpoint{
+ Hostname: "servicecatalog-fips.us-east-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-east-2",
+ },
+ },
+ "us-west-1": endpoint{},
+ "us-west-1-fips": endpoint{
+ Hostname: "servicecatalog-fips.us-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-1",
+ },
+ },
+ "us-west-2": endpoint{},
+ "us-west-2-fips": endpoint{
+ Hostname: "servicecatalog-fips.us-west-2.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-west-2",
+ },
+ },
},
},
"servicediscovery": service{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
+ "sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@@ -2123,7 +2526,7 @@ var awsPartition = partition{
"shield": service{
IsRegionalized: boxedFalse,
Defaults: endpoint{
- SSLCommonName: "Shield.us-east-1.amazonaws.com",
+ SSLCommonName: "shield.us-east-1.amazonaws.com",
Protocols: []string{"https"},
},
Endpoints: endpoints{
@@ -2181,6 +2584,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2204,6 +2608,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2250,6 +2655,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2270,8 +2676,11 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
+ "sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@@ -2288,6 +2697,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2313,6 +2723,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2352,6 +2763,7 @@ var awsPartition = partition{
"aws-global": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2402,6 +2814,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2422,6 +2835,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
@@ -2432,6 +2846,24 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
+ "transfer": service{
+
+ Endpoints: endpoints{
+ "ap-northeast-1": endpoint{},
+ "ap-northeast-2": endpoint{},
+ "ap-southeast-1": endpoint{},
+ "ap-southeast-2": endpoint{},
+ "ca-central-1": endpoint{},
+ "eu-central-1": endpoint{},
+ "eu-west-1": endpoint{},
+ "eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
+ "us-east-1": endpoint{},
+ "us-east-2": endpoint{},
+ "us-west-1": endpoint{},
+ "us-west-2": endpoint{},
+ },
+ },
"translate": service{
Defaults: endpoint{
Protocols: []string{"https"},
@@ -2534,8 +2966,10 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
+ "eu-north-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
+ "eu-west-3": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@@ -2575,6 +3009,23 @@ var awscnPartition = partition{
},
},
Services: services{
+ "api.ecr": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{
+ Hostname: "api.ecr.cn-north-1.amazonaws.com.cn",
+ CredentialScope: credentialScope{
+ Region: "cn-north-1",
+ },
+ },
+ "cn-northwest-1": endpoint{
+ Hostname: "api.ecr.cn-northwest-1.amazonaws.com.cn",
+ CredentialScope: credentialScope{
+ Region: "cn-northwest-1",
+ },
+ },
+ },
+ },
"apigateway": service{
Endpoints: endpoints{
@@ -2618,6 +3069,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "codebuild": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"codedeploy": service{
Endpoints: endpoints{
@@ -2645,6 +3103,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "dms": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"ds": service{
Endpoints: endpoints{
@@ -2681,13 +3146,6 @@ var awscnPartition = partition{
},
},
},
- "ecr": service{
-
- Endpoints: endpoints{
- "cn-north-1": endpoint{},
- "cn-northwest-1": endpoint{},
- },
- },
"ecs": service{
Endpoints: endpoints{
@@ -2730,6 +3188,7 @@ var awscnPartition = partition{
"es": service{
Endpoints: endpoints{
+ "cn-north-1": endpoint{},
"cn-northwest-1": endpoint{},
},
},
@@ -2740,6 +3199,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "firehose": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"glacier": service{
Defaults: endpoint{
Protocols: []string{"http", "https"},
@@ -2802,6 +3268,12 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "polly": service{
+
+ Endpoints: endpoints{
+ "cn-northwest-1": endpoint{},
+ },
+ },
"rds": service{
Endpoints: endpoints{
@@ -2826,6 +3298,28 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "s3-control": service{
+ Defaults: endpoint{
+ Protocols: []string{"https"},
+ SignatureVersions: []string{"s3v4"},
+ },
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{
+ Hostname: "s3-control.cn-north-1.amazonaws.com.cn",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "cn-north-1",
+ },
+ },
+ "cn-northwest-1": endpoint{
+ Hostname: "s3-control.cn-northwest-1.amazonaws.com.cn",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "cn-northwest-1",
+ },
+ },
+ },
+ },
"sms": service{
Endpoints: endpoints{
@@ -2865,6 +3359,13 @@ var awscnPartition = partition{
"cn-northwest-1": endpoint{},
},
},
+ "states": service{
+
+ Endpoints: endpoints{
+ "cn-north-1": endpoint{},
+ "cn-northwest-1": endpoint{},
+ },
+ },
"storagegateway": service{
Endpoints: endpoints{
@@ -2928,6 +3429,9 @@ var awsusgovPartition = partition{
SignatureVersions: []string{"v4"},
},
Regions: regions{
+ "us-gov-east-1": region{
+ Description: "AWS GovCloud (US-East)",
+ },
"us-gov-west-1": region{
Description: "AWS GovCloud (US)",
},
@@ -2936,32 +3440,71 @@ var awsusgovPartition = partition{
"acm": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-west-1": endpoint{},
+ },
+ },
+ "api.ecr": service{
+
+ Endpoints: endpoints{
+ "us-gov-east-1": endpoint{
+ Hostname: "api.ecr.us-gov-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-east-1",
+ },
+ },
+ "us-gov-west-1": endpoint{
+ Hostname: "api.ecr.us-gov-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
+ },
+ },
+ "api.sagemaker": service{
+
+ Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
"apigateway": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"application-autoscaling": service{
-
+ Defaults: endpoint{
+ Hostname: "autoscaling.{region}.amazonaws.com",
+ CredentialScope: credentialScope{
+ Service: "application-autoscaling",
+ },
+ },
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"autoscaling": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
Protocols: []string{"http", "https"},
},
},
},
+ "clouddirectory": service{
+
+ Endpoints: endpoints{
+ "us-gov-west-1": endpoint{},
+ },
+ },
"cloudformation": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -2978,42 +3521,67 @@ var awsusgovPartition = partition{
},
},
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"cloudtrail": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"codedeploy": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-east-1-fips": endpoint{
+ Hostname: "codedeploy-fips.us-gov-east-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-east-1",
+ },
+ },
"us-gov-west-1": endpoint{},
+ "us-gov-west-1-fips": endpoint{
+ Hostname: "codedeploy-fips.us-gov-west-1.amazonaws.com",
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
},
},
"config": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"directconnect": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"dms": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-west-1": endpoint{},
+ },
+ },
+ "ds": service{
+
+ Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
"dynamodb": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
"us-gov-west-1-fips": endpoint{
Hostname: "dynamodb.us-gov-west-1.amazonaws.com",
@@ -3026,6 +3594,7 @@ var awsusgovPartition = partition{
"ec2": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3040,15 +3609,10 @@ var awsusgovPartition = partition{
},
},
},
- "ecr": service{
-
- Endpoints: endpoints{
- "us-gov-west-1": endpoint{},
- },
- },
"ecs": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3061,18 +3625,27 @@ var awsusgovPartition = partition{
Region: "us-gov-west-1",
},
},
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"elasticbeanstalk": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-west-1": endpoint{},
+ },
+ },
+ "elasticfilesystem": service{
+
+ Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
"elasticloadbalancing": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
Protocols: []string{"http", "https"},
},
@@ -3081,6 +3654,7 @@ var awsusgovPartition = partition{
"elasticmapreduce": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
Protocols: []string{"https"},
},
@@ -3089,23 +3663,41 @@ var awsusgovPartition = partition{
"es": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"events": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-west-1": endpoint{},
+ },
+ },
+ "firehose": service{
+
+ Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
"glacier": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
Protocols: []string{"http", "https"},
},
},
},
+ "guardduty": service{
+ IsRegionalized: boxedTrue,
+ Defaults: endpoint{
+ Protocols: []string{"https"},
+ },
+ Endpoints: endpoints{
+ "us-gov-west-1": endpoint{},
+ },
+ },
"iam": service{
PartitionEndpoint: "aws-us-gov-global",
IsRegionalized: boxedFalse,
@@ -3122,6 +3714,7 @@ var awsusgovPartition = partition{
"inspector": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3138,24 +3731,34 @@ var awsusgovPartition = partition{
"kinesis": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"kms": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"lambda": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"logs": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
+ "us-gov-west-1": endpoint{},
+ },
+ },
+ "mediaconvert": service{
+
+ Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
@@ -3172,6 +3775,7 @@ var awsusgovPartition = partition{
"monitoring": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3184,12 +3788,14 @@ var awsusgovPartition = partition{
"rds": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"redshift": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3199,6 +3805,12 @@ var awsusgovPartition = partition{
"us-gov-west-1": endpoint{},
},
},
+ "runtime.sagemaker": service{
+
+ Endpoints: endpoints{
+ "us-gov-west-1": endpoint{},
+ },
+ },
"s3": service{
Defaults: endpoint{
SignatureVersions: []string{"s3", "s3v4"},
@@ -3210,27 +3822,70 @@ var awsusgovPartition = partition{
Region: "us-gov-west-1",
},
},
+ "us-gov-east-1": endpoint{
+ Hostname: "s3.us-gov-east-1.amazonaws.com",
+ Protocols: []string{"http", "https"},
+ },
"us-gov-west-1": endpoint{
Hostname: "s3.us-gov-west-1.amazonaws.com",
Protocols: []string{"http", "https"},
},
},
},
+ "s3-control": service{
+ Defaults: endpoint{
+ Protocols: []string{"https"},
+ SignatureVersions: []string{"s3v4"},
+ },
+ Endpoints: endpoints{
+ "us-gov-east-1": endpoint{
+ Hostname: "s3-control.us-gov-east-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-gov-east-1",
+ },
+ },
+ "us-gov-east-1-fips": endpoint{
+ Hostname: "s3-control-fips.us-gov-east-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-gov-east-1",
+ },
+ },
+ "us-gov-west-1": endpoint{
+ Hostname: "s3-control.us-gov-west-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
+ "us-gov-west-1-fips": endpoint{
+ Hostname: "s3-control-fips.us-gov-west-1.amazonaws.com",
+ SignatureVersions: []string{"s3v4"},
+ CredentialScope: credentialScope{
+ Region: "us-gov-west-1",
+ },
+ },
+ },
+ },
"sms": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"snowball": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"sns": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
Protocols: []string{"http", "https"},
},
@@ -3239,6 +3894,7 @@ var awsusgovPartition = partition{
"sqs": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{
SSLCommonName: "{region}.queue.{dnsSuffix}",
Protocols: []string{"http", "https"},
@@ -3248,12 +3904,14 @@ var awsusgovPartition = partition{
"ssm": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"states": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
@@ -3270,6 +3928,7 @@ var awsusgovPartition = partition{
},
},
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
"us-gov-west-1-fips": endpoint{
Hostname: "dynamodb.us-gov-west-1.amazonaws.com",
@@ -3282,18 +3941,21 @@ var awsusgovPartition = partition{
"sts": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"swf": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
"tagging": service{
Endpoints: endpoints{
+ "us-gov-east-1": endpoint{},
"us-gov-west-1": endpoint{},
},
},
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go
new file mode 100644
index 00000000..000dd79e
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go
@@ -0,0 +1,141 @@
+package endpoints
+
+// Service identifiers
+//
+// Deprecated: Use client package's EndpointID value instead of these
+// ServiceIDs. These IDs are not maintained, and are out of date.
+const (
+ A4bServiceID = "a4b" // A4b.
+ AcmServiceID = "acm" // Acm.
+ AcmPcaServiceID = "acm-pca" // AcmPca.
+ ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor.
+ ApiPricingServiceID = "api.pricing" // ApiPricing.
+ ApiSagemakerServiceID = "api.sagemaker" // ApiSagemaker.
+ ApigatewayServiceID = "apigateway" // Apigateway.
+ ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling.
+ Appstream2ServiceID = "appstream2" // Appstream2.
+ AppsyncServiceID = "appsync" // Appsync.
+ AthenaServiceID = "athena" // Athena.
+ AutoscalingServiceID = "autoscaling" // Autoscaling.
+ AutoscalingPlansServiceID = "autoscaling-plans" // AutoscalingPlans.
+ BatchServiceID = "batch" // Batch.
+ BudgetsServiceID = "budgets" // Budgets.
+ CeServiceID = "ce" // Ce.
+ ChimeServiceID = "chime" // Chime.
+ Cloud9ServiceID = "cloud9" // Cloud9.
+ ClouddirectoryServiceID = "clouddirectory" // Clouddirectory.
+ CloudformationServiceID = "cloudformation" // Cloudformation.
+ CloudfrontServiceID = "cloudfront" // Cloudfront.
+ CloudhsmServiceID = "cloudhsm" // Cloudhsm.
+ Cloudhsmv2ServiceID = "cloudhsmv2" // Cloudhsmv2.
+ CloudsearchServiceID = "cloudsearch" // Cloudsearch.
+ CloudtrailServiceID = "cloudtrail" // Cloudtrail.
+ CodebuildServiceID = "codebuild" // Codebuild.
+ CodecommitServiceID = "codecommit" // Codecommit.
+ CodedeployServiceID = "codedeploy" // Codedeploy.
+ CodepipelineServiceID = "codepipeline" // Codepipeline.
+ CodestarServiceID = "codestar" // Codestar.
+ CognitoIdentityServiceID = "cognito-identity" // CognitoIdentity.
+ CognitoIdpServiceID = "cognito-idp" // CognitoIdp.
+ CognitoSyncServiceID = "cognito-sync" // CognitoSync.
+ ComprehendServiceID = "comprehend" // Comprehend.
+ ConfigServiceID = "config" // Config.
+ CurServiceID = "cur" // Cur.
+ DatapipelineServiceID = "datapipeline" // Datapipeline.
+ DaxServiceID = "dax" // Dax.
+ DevicefarmServiceID = "devicefarm" // Devicefarm.
+ DirectconnectServiceID = "directconnect" // Directconnect.
+ DiscoveryServiceID = "discovery" // Discovery.
+ DmsServiceID = "dms" // Dms.
+ DsServiceID = "ds" // Ds.
+ DynamodbServiceID = "dynamodb" // Dynamodb.
+ Ec2ServiceID = "ec2" // Ec2.
+ Ec2metadataServiceID = "ec2metadata" // Ec2metadata.
+ EcrServiceID = "ecr" // Ecr.
+ EcsServiceID = "ecs" // Ecs.
+ ElasticacheServiceID = "elasticache" // Elasticache.
+ ElasticbeanstalkServiceID = "elasticbeanstalk" // Elasticbeanstalk.
+ ElasticfilesystemServiceID = "elasticfilesystem" // Elasticfilesystem.
+ ElasticloadbalancingServiceID = "elasticloadbalancing" // Elasticloadbalancing.
+ ElasticmapreduceServiceID = "elasticmapreduce" // Elasticmapreduce.
+ ElastictranscoderServiceID = "elastictranscoder" // Elastictranscoder.
+ EmailServiceID = "email" // Email.
+ EntitlementMarketplaceServiceID = "entitlement.marketplace" // EntitlementMarketplace.
+ EsServiceID = "es" // Es.
+ EventsServiceID = "events" // Events.
+ FirehoseServiceID = "firehose" // Firehose.
+ FmsServiceID = "fms" // Fms.
+ GameliftServiceID = "gamelift" // Gamelift.
+ GlacierServiceID = "glacier" // Glacier.
+ GlueServiceID = "glue" // Glue.
+ GreengrassServiceID = "greengrass" // Greengrass.
+ GuarddutyServiceID = "guardduty" // Guardduty.
+ HealthServiceID = "health" // Health.
+ IamServiceID = "iam" // Iam.
+ ImportexportServiceID = "importexport" // Importexport.
+ InspectorServiceID = "inspector" // Inspector.
+ IotServiceID = "iot" // Iot.
+ IotanalyticsServiceID = "iotanalytics" // Iotanalytics.
+ KinesisServiceID = "kinesis" // Kinesis.
+ KinesisanalyticsServiceID = "kinesisanalytics" // Kinesisanalytics.
+ KinesisvideoServiceID = "kinesisvideo" // Kinesisvideo.
+ KmsServiceID = "kms" // Kms.
+ LambdaServiceID = "lambda" // Lambda.
+ LightsailServiceID = "lightsail" // Lightsail.
+ LogsServiceID = "logs" // Logs.
+ MachinelearningServiceID = "machinelearning" // Machinelearning.
+ MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics" // Marketplacecommerceanalytics.
+ MediaconvertServiceID = "mediaconvert" // Mediaconvert.
+ MedialiveServiceID = "medialive" // Medialive.
+ MediapackageServiceID = "mediapackage" // Mediapackage.
+ MediastoreServiceID = "mediastore" // Mediastore.
+ MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace.
+ MghServiceID = "mgh" // Mgh.
+ MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics.
+ ModelsLexServiceID = "models.lex" // ModelsLex.
+ MonitoringServiceID = "monitoring" // Monitoring.
+ MturkRequesterServiceID = "mturk-requester" // MturkRequester.
+ NeptuneServiceID = "neptune" // Neptune.
+ OpsworksServiceID = "opsworks" // Opsworks.
+ OpsworksCmServiceID = "opsworks-cm" // OpsworksCm.
+ OrganizationsServiceID = "organizations" // Organizations.
+ PinpointServiceID = "pinpoint" // Pinpoint.
+ PollyServiceID = "polly" // Polly.
+ RdsServiceID = "rds" // Rds.
+ RedshiftServiceID = "redshift" // Redshift.
+ RekognitionServiceID = "rekognition" // Rekognition.
+ ResourceGroupsServiceID = "resource-groups" // ResourceGroups.
+ Route53ServiceID = "route53" // Route53.
+ Route53domainsServiceID = "route53domains" // Route53domains.
+ RuntimeLexServiceID = "runtime.lex" // RuntimeLex.
+ RuntimeSagemakerServiceID = "runtime.sagemaker" // RuntimeSagemaker.
+ S3ServiceID = "s3" // S3.
+ S3ControlServiceID = "s3-control" // S3Control.
+ SagemakerServiceID = "api.sagemaker" // Sagemaker.
+ SdbServiceID = "sdb" // Sdb.
+ SecretsmanagerServiceID = "secretsmanager" // Secretsmanager.
+ ServerlessrepoServiceID = "serverlessrepo" // Serverlessrepo.
+ ServicecatalogServiceID = "servicecatalog" // Servicecatalog.
+ ServicediscoveryServiceID = "servicediscovery" // Servicediscovery.
+ ShieldServiceID = "shield" // Shield.
+ SmsServiceID = "sms" // Sms.
+ SnowballServiceID = "snowball" // Snowball.
+ SnsServiceID = "sns" // Sns.
+ SqsServiceID = "sqs" // Sqs.
+ SsmServiceID = "ssm" // Ssm.
+ StatesServiceID = "states" // States.
+ StoragegatewayServiceID = "storagegateway" // Storagegateway.
+ StreamsDynamodbServiceID = "streams.dynamodb" // StreamsDynamodb.
+ StsServiceID = "sts" // Sts.
+ SupportServiceID = "support" // Support.
+ SwfServiceID = "swf" // Swf.
+ TaggingServiceID = "tagging" // Tagging.
+ TransferServiceID = "transfer" // Transfer.
+ TranslateServiceID = "translate" // Translate.
+ WafServiceID = "waf" // Waf.
+ WafRegionalServiceID = "waf-regional" // WafRegional.
+ WorkdocsServiceID = "workdocs" // Workdocs.
+ WorkmailServiceID = "workmail" // Workmail.
+ WorkspacesServiceID = "workspaces" // Workspaces.
+ XrayServiceID = "xray" // Xray.
+)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
index e29c0951..f82babf6 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
@@ -35,7 +35,7 @@ type Options struct {
//
// If resolving an endpoint on the partition list the provided region will
// be used to determine which partition's domain name pattern to the service
- // endpoint ID with. If both the service and region are unkonwn and resolving
+ // endpoint ID with. If both the service and region are unknown and resolving
// the endpoint on partition list an UnknownEndpointError error will be returned.
//
// If resolving and endpoint on a partition specific resolver that partition's
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
index 05e92df2..0fdfcc56 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
@@ -16,6 +16,10 @@ import (
type CodeGenOptions struct {
// Options for how the model will be decoded.
DecodeModelOptions DecodeModelOptions
+
+ // Disables code generation of the service endpoint prefix IDs defined in
+ // the model.
+ DisableGenerateServiceIDs bool
}
// Set combines all of the option functions together
@@ -39,8 +43,16 @@ func CodeGenModel(modelFile io.Reader, outFile io.Writer, optFns ...func(*CodeGe
return err
}
+ v := struct {
+ Resolver
+ CodeGenOptions
+ }{
+ Resolver: resolver,
+ CodeGenOptions: opts,
+ }
+
tmpl := template.Must(template.New("tmpl").Funcs(funcMap).Parse(v3Tmpl))
- if err := tmpl.ExecuteTemplate(outFile, "defaults", resolver); err != nil {
+ if err := tmpl.ExecuteTemplate(outFile, "defaults", v); err != nil {
return fmt.Errorf("failed to execute template, %v", err)
}
@@ -166,15 +178,17 @@ import (
"regexp"
)
- {{ template "partition consts" . }}
+ {{ template "partition consts" $.Resolver }}
- {{ range $_, $partition := . }}
+ {{ range $_, $partition := $.Resolver }}
{{ template "partition region consts" $partition }}
{{ end }}
- {{ template "service consts" . }}
+ {{ if not $.DisableGenerateServiceIDs -}}
+ {{ template "service consts" $.Resolver }}
+ {{- end }}
- {{ template "endpoint resolvers" . }}
+ {{ template "endpoint resolvers" $.Resolver }}
{{- end }}
{{ define "partition consts" }}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/errors.go b/vendor/github.com/aws/aws-sdk-go/aws/errors.go
index 57663616..fa06f7a8 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/errors.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/errors.go
@@ -5,13 +5,9 @@ import "github.com/aws/aws-sdk-go/aws/awserr"
var (
// ErrMissingRegion is an error that is returned if region configuration is
// not found.
- //
- // @readonly
ErrMissingRegion = awserr.New("MissingRegion", "could not find region configuration", nil)
// ErrMissingEndpoint is an error that is returned if an endpoint cannot be
// resolved for a service.
- //
- // @readonly
ErrMissingEndpoint = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil)
)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go b/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
index 605a72d3..8ef8548a 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
@@ -19,6 +19,7 @@ type Handlers struct {
UnmarshalError HandlerList
Retry HandlerList
AfterRetry HandlerList
+ CompleteAttempt HandlerList
Complete HandlerList
}
@@ -36,6 +37,7 @@ func (h *Handlers) Copy() Handlers {
UnmarshalMeta: h.UnmarshalMeta.copy(),
Retry: h.Retry.copy(),
AfterRetry: h.AfterRetry.copy(),
+ CompleteAttempt: h.CompleteAttempt.copy(),
Complete: h.Complete.copy(),
}
}
@@ -53,6 +55,7 @@ func (h *Handlers) Clear() {
h.ValidateResponse.Clear()
h.Retry.Clear()
h.AfterRetry.Clear()
+ h.CompleteAttempt.Clear()
h.Complete.Clear()
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/request.go b/vendor/github.com/aws/aws-sdk-go/aws/request/request.go
index 75f0fe07..8f2eb3e4 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/request/request.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/request/request.go
@@ -4,7 +4,6 @@ import (
"bytes"
"fmt"
"io"
- "net"
"net/http"
"net/url"
"reflect"
@@ -122,7 +121,6 @@ func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
Handlers: handlers.Copy(),
Retryer: retryer,
- AttemptTime: time.Now(),
Time: time.Now(),
ExpireTime: 0,
Operation: operation,
@@ -266,7 +264,9 @@ func (r *Request) SetReaderBody(reader io.ReadSeeker) {
}
// Presign returns the request's signed URL. Error will be returned
-// if the signing fails.
+// if the signing fails. The expire parameter is only used for presigned Amazon
+// S3 API requests. All other AWS services will use a fixed expiration
+// time of 15 minutes.
//
// It is invalid to create a presigned URL with a expire duration 0 or less. An
// error is returned if expire duration is 0 or less.
@@ -283,7 +283,9 @@ func (r *Request) Presign(expire time.Duration) (string, error) {
}
// PresignRequest behaves just like presign, with the addition of returning a
-// set of headers that were signed.
+// set of headers that were signed. The expire parameter is only used for
+// presigned Amazon S3 API requests. All other AWS services will use a fixed
+// expiration time of 15 minutes.
//
// It is invalid to create a presigned URL with a expire duration 0 or less. An
// error is returned if expire duration is 0 or less.
@@ -462,80 +464,78 @@ func (r *Request) Send() error {
r.Handlers.Complete.Run(r)
}()
+ if err := r.Error; err != nil {
+ return err
+ }
+
for {
+ r.Error = nil
r.AttemptTime = time.Now()
- if aws.BoolValue(r.Retryable) {
- if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
- r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
- r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
- }
-
- // The previous http.Request will have a reference to the r.Body
- // and the HTTP Client's Transport may still be reading from
- // the request's body even though the Client's Do returned.
- r.HTTPRequest = copyHTTPRequest(r.HTTPRequest, nil)
- r.ResetBody()
-
- // Closing response body to ensure that no response body is leaked
- // between retry attempts.
- if r.HTTPResponse != nil && r.HTTPResponse.Body != nil {
- r.HTTPResponse.Body.Close()
- }
- }
- r.Sign()
- if r.Error != nil {
- return r.Error
+ if err := r.Sign(); err != nil {
+ debugLogReqError(r, "Sign Request", false, err)
+ return err
}
- r.Retryable = nil
-
- r.Handlers.Send.Run(r)
- if r.Error != nil {
- if !shouldRetryCancel(r) {
- return r.Error
- }
-
- err := r.Error
+ if err := r.sendRequest(); err == nil {
+ return nil
+ } else if !shouldRetryCancel(r.Error) {
+ return err
+ } else {
r.Handlers.Retry.Run(r)
r.Handlers.AfterRetry.Run(r)
- if r.Error != nil {
- debugLogReqError(r, "Send Request", false, err)
- return r.Error
- }
- debugLogReqError(r, "Send Request", true, err)
- continue
- }
- r.Handlers.UnmarshalMeta.Run(r)
- r.Handlers.ValidateResponse.Run(r)
- if r.Error != nil {
- r.Handlers.UnmarshalError.Run(r)
- err := r.Error
- r.Handlers.Retry.Run(r)
- r.Handlers.AfterRetry.Run(r)
- if r.Error != nil {
- debugLogReqError(r, "Validate Response", false, err)
+ if r.Error != nil || !aws.BoolValue(r.Retryable) {
return r.Error
}
- debugLogReqError(r, "Validate Response", true, err)
- continue
- }
- r.Handlers.Unmarshal.Run(r)
- if r.Error != nil {
- err := r.Error
- r.Handlers.Retry.Run(r)
- r.Handlers.AfterRetry.Run(r)
- if r.Error != nil {
- debugLogReqError(r, "Unmarshal Response", false, err)
- return r.Error
- }
- debugLogReqError(r, "Unmarshal Response", true, err)
+ r.prepareRetry()
continue
}
+ }
+}
+
+func (r *Request) prepareRetry() {
+ if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
+ r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
+ r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
+ }
+
+ // The previous http.Request will have a reference to the r.Body
+ // and the HTTP Client's Transport may still be reading from
+ // the request's body even though the Client's Do returned.
+ r.HTTPRequest = copyHTTPRequest(r.HTTPRequest, nil)
+ r.ResetBody()
+
+ // Closing response body to ensure that no response body is leaked
+ // between retry attempts.
+ if r.HTTPResponse != nil && r.HTTPResponse.Body != nil {
+ r.HTTPResponse.Body.Close()
+ }
+}
+
+func (r *Request) sendRequest() (sendErr error) {
+ defer r.Handlers.CompleteAttempt.Run(r)
+
+ r.Retryable = nil
+ r.Handlers.Send.Run(r)
+ if r.Error != nil {
+ debugLogReqError(r, "Send Request", r.WillRetry(), r.Error)
+ return r.Error
+ }
- break
+ r.Handlers.UnmarshalMeta.Run(r)
+ r.Handlers.ValidateResponse.Run(r)
+ if r.Error != nil {
+ r.Handlers.UnmarshalError.Run(r)
+ debugLogReqError(r, "Validate Response", r.WillRetry(), r.Error)
+ return r.Error
+ }
+
+ r.Handlers.Unmarshal.Run(r)
+ if r.Error != nil {
+ debugLogReqError(r, "Unmarshal Response", r.WillRetry(), r.Error)
+ return r.Error
}
return nil
@@ -561,30 +561,46 @@ func AddToUserAgent(r *Request, s string) {
r.HTTPRequest.Header.Set("User-Agent", s)
}
-func shouldRetryCancel(r *Request) bool {
- awsErr, ok := r.Error.(awserr.Error)
- timeoutErr := false
- errStr := r.Error.Error()
- if ok {
- if awsErr.Code() == CanceledErrorCode {
+type temporary interface {
+ Temporary() bool
+}
+
+func shouldRetryCancel(err error) bool {
+ switch err := err.(type) {
+ case awserr.Error:
+ if err.Code() == CanceledErrorCode {
return false
}
- err := awsErr.OrigErr()
- netErr, netOK := err.(net.Error)
- timeoutErr = netOK && netErr.Temporary()
- if urlErr, ok := err.(*url.Error); !timeoutErr && ok {
- errStr = urlErr.Err.Error()
+ return shouldRetryCancel(err.OrigErr())
+ case *url.Error:
+ if strings.Contains(err.Error(), "connection refused") {
+ // Refused connections should be retried as the service may not yet
+ // be running on the port. Go TCP dial considers refused
+ // connections as not temporary.
+ return true
+ }
+ // *url.Error only implements Temporary after golang 1.6 but since
+ // url.Error only wraps the error:
+ return shouldRetryCancel(err.Err)
+ case temporary:
+ // If the error is temporary, we want to allow continuation of the
+ // retry process
+ return err.Temporary()
+ case nil:
+ // `awserr.Error.OrigErr()` can be nil, meaning there was an error but
+ // because we don't know the cause, it is marked as retriable. See
+ // TestRequest4xxUnretryable for an example.
+ return true
+ default:
+ switch err.Error() {
+ case "net/http: request canceled",
+ "net/http: request canceled while waiting for connection":
+ // known 1.5 error case when an http request is cancelled
+ return false
}
+ // here we don't know the error; so we allow a retry.
+ return true
}
-
- // There can be two types of canceled errors here.
- // The first being a net.Error and the other being an error.
- // If the request was timed out, we want to continue the retry
- // process. Otherwise, return the canceled error.
- return timeoutErr ||
- (errStr != "net/http: request canceled" &&
- errStr != "net/http: request canceled while waiting for connection")
-
}
// SanitizeHostForHeader removes default port from host and updates request.Host
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
index 7d527029..7bc5da78 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
@@ -40,6 +40,7 @@ var throttleCodes = map[string]struct{}{
"RequestThrottled": {},
"TooManyRequestsException": {}, // Lambda functions
"PriorRequestNotComplete": {}, // Route53
+ "TransactionInProgressException": {},
}
// credsExpiredCodes is a collection of error codes which signify the credentials
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go b/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
index 40124622..8630683f 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
@@ -17,6 +17,12 @@ const (
ParamMinValueErrCode = "ParamMinValueError"
// ParamMinLenErrCode is the error code for fields without enough elements.
ParamMinLenErrCode = "ParamMinLenError"
+ // ParamMaxLenErrCode is the error code for value being too long.
+ ParamMaxLenErrCode = "ParamMaxLenError"
+
+ // ParamFormatErrCode is the error code for a field with invalid
+ // format or characters.
+ ParamFormatErrCode = "ParamFormatInvalidError"
)
// Validator provides a way for types to perform validation logic on their
@@ -232,3 +238,49 @@ func NewErrParamMinLen(field string, min int) *ErrParamMinLen {
func (e *ErrParamMinLen) MinLen() int {
return e.min
}
+
+// An ErrParamMaxLen represents a maximum length parameter error.
+type ErrParamMaxLen struct {
+ errInvalidParam
+ max int
+}
+
+// NewErrParamMaxLen creates a new maximum length parameter error.
+func NewErrParamMaxLen(field string, max int, value string) *ErrParamMaxLen {
+ return &ErrParamMaxLen{
+ errInvalidParam: errInvalidParam{
+ code: ParamMaxLenErrCode,
+ field: field,
+ msg: fmt.Sprintf("maximum size of %v, %v", max, value),
+ },
+ max: max,
+ }
+}
+
+// MaxLen returns the field's required minimum length.
+func (e *ErrParamMaxLen) MaxLen() int {
+ return e.max
+}
+
+// An ErrParamFormat represents a invalid format parameter error.
+type ErrParamFormat struct {
+ errInvalidParam
+ format string
+}
+
+// NewErrParamFormat creates a new invalid format parameter error.
+func NewErrParamFormat(field string, format, value string) *ErrParamFormat {
+ return &ErrParamFormat{
+ errInvalidParam: errInvalidParam{
+ code: ParamFormatErrCode,
+ field: field,
+ msg: fmt.Sprintf("format %v, %v", format, value),
+ },
+ format: format,
+ }
+}
+
+// Format returns the field's required format.
+func (e *ErrParamFormat) Format() string {
+ return e.format
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go
index 98d420fd..38a7b05a 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go
@@ -99,7 +99,7 @@ handler logs every request and its payload made by a service client:
sess.Handlers.Send.PushFront(func(r *request.Request) {
// Log every request made and its payload
- logger.Println("Request: %s/%s, Payload: %s",
+ logger.Printf("Request: %s/%s, Payload: %s",
r.ClientInfo.ServiceName, r.Operation, r.Params)
})
@@ -183,7 +183,7 @@ be returned when creating the session.
// from assumed role.
svc := s3.New(sess)
-To setup assume role outside of a session see the stscrds.AssumeRoleProvider
+To setup assume role outside of a session see the stscreds.AssumeRoleProvider
documentation.
Environment Variables
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
index 82e04d76..e3959b95 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
@@ -4,6 +4,7 @@ import (
"os"
"strconv"
+ "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/defaults"
)
@@ -79,7 +80,7 @@ type envConfig struct {
// AWS_CONFIG_FILE=$HOME/my_shared_config
SharedConfigFile string
- // Sets the path to a custom Credentials Authroity (CA) Bundle PEM file
+ // Sets the path to a custom Credentials Authority (CA) Bundle PEM file
// that the SDK will use instead of the system's root CA bundle.
// Only use this if you want to configure the SDK to use a custom set
// of CAs.
@@ -101,6 +102,12 @@ type envConfig struct {
CSMEnabled bool
CSMPort string
CSMClientID string
+
+ enableEndpointDiscovery string
+ // Enables endpoint discovery via environment variables.
+ //
+ // AWS_ENABLE_ENDPOINT_DISCOVERY=true
+ EnableEndpointDiscovery *bool
}
var (
@@ -125,6 +132,10 @@ var (
"AWS_SESSION_TOKEN",
}
+ enableEndpointDiscoveryEnvKey = []string{
+ "AWS_ENABLE_ENDPOINT_DISCOVERY",
+ }
+
regionEnvKeys = []string{
"AWS_REGION",
"AWS_DEFAULT_REGION", // Only read if AWS_SDK_LOAD_CONFIG is also set
@@ -194,6 +205,12 @@ func envConfigLoad(enableSharedConfig bool) envConfig {
setFromEnvVal(&cfg.Region, regionKeys)
setFromEnvVal(&cfg.Profile, profileKeys)
+ // endpoint discovery is in reference to it being enabled.
+ setFromEnvVal(&cfg.enableEndpointDiscovery, enableEndpointDiscoveryEnvKey)
+ if len(cfg.enableEndpointDiscovery) > 0 {
+ cfg.EnableEndpointDiscovery = aws.Bool(cfg.enableEndpointDiscovery != "false")
+ }
+
setFromEnvVal(&cfg.SharedCredentialsFile, sharedCredsFileEnvKey)
setFromEnvVal(&cfg.SharedConfigFile, sharedConfigFileEnvKey)
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go
index 51f30556..9bdbafd6 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go
@@ -14,13 +14,32 @@ import (
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/credentials"
+ "github.com/aws/aws-sdk-go/aws/credentials/processcreds"
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
"github.com/aws/aws-sdk-go/aws/csm"
"github.com/aws/aws-sdk-go/aws/defaults"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/request"
+ "github.com/aws/aws-sdk-go/internal/shareddefaults"
)
+const (
+ // ErrCodeSharedConfig represents an error that occurs in the shared
+ // configuration logic
+ ErrCodeSharedConfig = "SharedConfigErr"
+)
+
+// ErrSharedConfigSourceCollision will be returned if a section contains both
+// source_profile and credential_source
+var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only source profile or credential source can be specified, not both", nil)
+
+// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment
+// variables are empty and Environment was set as the credential source
+var ErrSharedConfigECSContainerEnvVarEmpty = awserr.New(ErrCodeSharedConfig, "EcsContainer was specified as the credential_source, but 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI' was not set", nil)
+
+// ErrSharedConfigInvalidCredSource will be returned if an invalid credential source was provided
+var ErrSharedConfigInvalidCredSource = awserr.New(ErrCodeSharedConfig, "credential source values must be EcsContainer, Ec2InstanceMetadata, or Environment", nil)
+
// A Session provides a central location to create service clients from and
// store configurations and request handlers for those services.
//
@@ -434,8 +453,67 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedCfg share
}
}
+ if cfg.EnableEndpointDiscovery == nil {
+ if envCfg.EnableEndpointDiscovery != nil {
+ cfg.WithEndpointDiscovery(*envCfg.EnableEndpointDiscovery)
+ } else if envCfg.EnableSharedConfig && sharedCfg.EnableEndpointDiscovery != nil {
+ cfg.WithEndpointDiscovery(*sharedCfg.EnableEndpointDiscovery)
+ }
+ }
+
// Configure credentials if not already set
if cfg.Credentials == credentials.AnonymousCredentials && userCfg.Credentials == nil {
+
+ // inspect the profile to see if a credential source has been specified.
+ if envCfg.EnableSharedConfig && len(sharedCfg.AssumeRole.CredentialSource) > 0 {
+
+ // if both credential_source and source_profile have been set, return an error
+ // as this is undefined behavior.
+ if len(sharedCfg.AssumeRole.SourceProfile) > 0 {
+ return ErrSharedConfigSourceCollision
+ }
+
+ // valid credential source values
+ const (
+ credSourceEc2Metadata = "Ec2InstanceMetadata"
+ credSourceEnvironment = "Environment"
+ credSourceECSContainer = "EcsContainer"
+ )
+
+ switch sharedCfg.AssumeRole.CredentialSource {
+ case credSourceEc2Metadata:
+ cfgCp := *cfg
+ p := defaults.RemoteCredProvider(cfgCp, handlers)
+ cfgCp.Credentials = credentials.NewCredentials(p)
+
+ if len(sharedCfg.AssumeRole.MFASerial) > 0 && sessOpts.AssumeRoleTokenProvider == nil {
+ // AssumeRole Token provider is required if doing Assume Role
+ // with MFA.
+ return AssumeRoleTokenProviderNotSetError{}
+ }
+
+ cfg.Credentials = assumeRoleCredentials(cfgCp, handlers, sharedCfg, sessOpts)
+ case credSourceEnvironment:
+ cfg.Credentials = credentials.NewStaticCredentialsFromCreds(
+ envCfg.Creds,
+ )
+ case credSourceECSContainer:
+ if len(os.Getenv(shareddefaults.ECSCredsProviderEnvVar)) == 0 {
+ return ErrSharedConfigECSContainerEnvVarEmpty
+ }
+
+ cfgCp := *cfg
+ p := defaults.RemoteCredProvider(cfgCp, handlers)
+ creds := credentials.NewCredentials(p)
+
+ cfg.Credentials = creds
+ default:
+ return ErrSharedConfigInvalidCredSource
+ }
+
+ return nil
+ }
+
if len(envCfg.Creds.AccessKeyID) > 0 {
cfg.Credentials = credentials.NewStaticCredentialsFromCreds(
envCfg.Creds,
@@ -445,36 +523,22 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedCfg share
cfgCp.Credentials = credentials.NewStaticCredentialsFromCreds(
sharedCfg.AssumeRoleSource.Creds,
)
+
if len(sharedCfg.AssumeRole.MFASerial) > 0 && sessOpts.AssumeRoleTokenProvider == nil {
// AssumeRole Token provider is required if doing Assume Role
// with MFA.
return AssumeRoleTokenProviderNotSetError{}
}
- cfg.Credentials = stscreds.NewCredentials(
- &Session{
- Config: &cfgCp,
- Handlers: handlers.Copy(),
- },
- sharedCfg.AssumeRole.RoleARN,
- func(opt *stscreds.AssumeRoleProvider) {
- opt.RoleSessionName = sharedCfg.AssumeRole.RoleSessionName
-
- // Assume role with external ID
- if len(sharedCfg.AssumeRole.ExternalID) > 0 {
- opt.ExternalID = aws.String(sharedCfg.AssumeRole.ExternalID)
- }
-
- // Assume role with MFA
- if len(sharedCfg.AssumeRole.MFASerial) > 0 {
- opt.SerialNumber = aws.String(sharedCfg.AssumeRole.MFASerial)
- opt.TokenProvider = sessOpts.AssumeRoleTokenProvider
- }
- },
- )
+
+ cfg.Credentials = assumeRoleCredentials(cfgCp, handlers, sharedCfg, sessOpts)
} else if len(sharedCfg.Creds.AccessKeyID) > 0 {
cfg.Credentials = credentials.NewStaticCredentialsFromCreds(
sharedCfg.Creds,
)
+ } else if len(sharedCfg.CredentialProcess) > 0 {
+ cfg.Credentials = processcreds.NewCredentials(
+ sharedCfg.CredentialProcess,
+ )
} else {
// Fallback to default credentials provider, include mock errors
// for the credential chain so user can identify why credentials
@@ -493,6 +557,30 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedCfg share
return nil
}
+func assumeRoleCredentials(cfg aws.Config, handlers request.Handlers, sharedCfg sharedConfig, sessOpts Options) *credentials.Credentials {
+ return stscreds.NewCredentials(
+ &Session{
+ Config: &cfg,
+ Handlers: handlers.Copy(),
+ },
+ sharedCfg.AssumeRole.RoleARN,
+ func(opt *stscreds.AssumeRoleProvider) {
+ opt.RoleSessionName = sharedCfg.AssumeRole.RoleSessionName
+
+ // Assume role with external ID
+ if len(sharedCfg.AssumeRole.ExternalID) > 0 {
+ opt.ExternalID = aws.String(sharedCfg.AssumeRole.ExternalID)
+ }
+
+ // Assume role with MFA
+ if len(sharedCfg.AssumeRole.MFASerial) > 0 {
+ opt.SerialNumber = aws.String(sharedCfg.AssumeRole.MFASerial)
+ opt.TokenProvider = sessOpts.AssumeRoleTokenProvider
+ }
+ },
+ )
+}
+
// AssumeRoleTokenProviderNotSetError is an error returned when creating a session when the
// MFAToken option is not set when shared config is configured load assume a
// role with an MFA token.
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
index 09c8e5bc..7cb44021 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
@@ -2,11 +2,11 @@ package session
import (
"fmt"
- "io/ioutil"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/credentials"
- "github.com/go-ini/ini"
+
+ "github.com/aws/aws-sdk-go/internal/ini"
)
const (
@@ -16,15 +16,21 @@ const (
sessionTokenKey = `aws_session_token` // optional
// Assume Role Credentials group
- roleArnKey = `role_arn` // group required
- sourceProfileKey = `source_profile` // group required
- externalIDKey = `external_id` // optional
- mfaSerialKey = `mfa_serial` // optional
- roleSessionNameKey = `role_session_name` // optional
+ roleArnKey = `role_arn` // group required
+ sourceProfileKey = `source_profile` // group required (or credential_source)
+ credentialSourceKey = `credential_source` // group required (or source_profile)
+ externalIDKey = `external_id` // optional
+ mfaSerialKey = `mfa_serial` // optional
+ roleSessionNameKey = `role_session_name` // optional
// Additional Config fields
regionKey = `region`
+ // endpoint discovery group
+ enableEndpointDiscoveryKey = `endpoint_discovery_enabled` // optional
+ // External Credential Process
+ credentialProcessKey = `credential_process`
+
// DefaultSharedConfigProfile is the default profile to be used when
// loading configuration from the config files if another profile name
// is not provided.
@@ -32,11 +38,12 @@ const (
)
type assumeRoleConfig struct {
- RoleARN string
- SourceProfile string
- ExternalID string
- MFASerial string
- RoleSessionName string
+ RoleARN string
+ SourceProfile string
+ CredentialSource string
+ ExternalID string
+ MFASerial string
+ RoleSessionName string
}
// sharedConfig represents the configuration fields of the SDK config files.
@@ -55,16 +62,25 @@ type sharedConfig struct {
AssumeRole assumeRoleConfig
AssumeRoleSource *sharedConfig
+ // An external process to request credentials
+ CredentialProcess string
+
// Region is the region the SDK should use for looking up AWS service endpoints
// and signing requests.
//
// region
Region string
+
+ // EnableEndpointDiscovery can be enabled in the shared config by setting
+ // endpoint_discovery_enabled to true
+ //
+ // endpoint_discovery_enabled = true
+ EnableEndpointDiscovery *bool
}
type sharedConfigFile struct {
Filename string
- IniData *ini.File
+ IniData ini.Sections
}
// loadSharedConfig retrieves the configuration from the list of files
@@ -105,19 +121,16 @@ func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) {
files := make([]sharedConfigFile, 0, len(filenames))
for _, filename := range filenames {
- b, err := ioutil.ReadFile(filename)
- if err != nil {
+ sections, err := ini.OpenFile(filename)
+ if aerr, ok := err.(awserr.Error); ok && aerr.Code() == ini.ErrCodeUnableToReadFile {
// Skip files which can't be opened and read for whatever reason
continue
- }
-
- f, err := ini.Load(b)
- if err != nil {
+ } else if err != nil {
return nil, SharedConfigLoadError{Filename: filename, Err: err}
}
files = append(files, sharedConfigFile{
- Filename: filename, IniData: f,
+ Filename: filename, IniData: sections,
})
}
@@ -127,6 +140,13 @@ func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) {
func (cfg *sharedConfig) setAssumeRoleSource(origProfile string, files []sharedConfigFile) error {
var assumeRoleSrc sharedConfig
+ if len(cfg.AssumeRole.CredentialSource) > 0 {
+ // setAssumeRoleSource is only called when source_profile is found.
+ // If both source_profile and credential_source are set, then
+ // ErrSharedConfigSourceCollision will be returned
+ return ErrSharedConfigSourceCollision
+ }
+
// Multiple level assume role chains are not support
if cfg.AssumeRole.SourceProfile == origProfile {
assumeRoleSrc = *cfg
@@ -171,45 +191,59 @@ func (cfg *sharedConfig) setFromIniFiles(profile string, files []sharedConfigFil
// if a config file only includes aws_access_key_id but no aws_secret_access_key
// the aws_access_key_id will be ignored.
func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile) error {
- section, err := file.IniData.GetSection(profile)
- if err != nil {
+ section, ok := file.IniData.GetSection(profile)
+ if !ok {
// Fallback to to alternate profile name: profile <name>
- section, err = file.IniData.GetSection(fmt.Sprintf("profile %s", profile))
- if err != nil {
- return SharedConfigProfileNotExistsError{Profile: profile, Err: err}
+ section, ok = file.IniData.GetSection(fmt.Sprintf("profile %s", profile))
+ if !ok {
+ return SharedConfigProfileNotExistsError{Profile: profile, Err: nil}
}
}
// Shared Credentials
- akid := section.Key(accessKeyIDKey).String()
- secret := section.Key(secretAccessKey).String()
+ akid := section.String(accessKeyIDKey)
+ secret := section.String(secretAccessKey)
if len(akid) > 0 && len(secret) > 0 {
cfg.Creds = credentials.Value{
AccessKeyID: akid,
SecretAccessKey: secret,
- SessionToken: section.Key(sessionTokenKey).String(),
+ SessionToken: section.String(sessionTokenKey),
ProviderName: fmt.Sprintf("SharedConfigCredentials: %s", file.Filename),
}
}
// Assume Role
- roleArn := section.Key(roleArnKey).String()
- srcProfile := section.Key(sourceProfileKey).String()
- if len(roleArn) > 0 && len(srcProfile) > 0 {
+ roleArn := section.String(roleArnKey)
+ srcProfile := section.String(sourceProfileKey)
+ credentialSource := section.String(credentialSourceKey)
+ hasSource := len(srcProfile) > 0 || len(credentialSource) > 0
+ if len(roleArn) > 0 && hasSource {
cfg.AssumeRole = assumeRoleConfig{
- RoleARN: roleArn,
- SourceProfile: srcProfile,
- ExternalID: section.Key(externalIDKey).String(),
- MFASerial: section.Key(mfaSerialKey).String(),
- RoleSessionName: section.Key(roleSessionNameKey).String(),
+ RoleARN: roleArn,
+ SourceProfile: srcProfile,
+ CredentialSource: credentialSource,
+ ExternalID: section.String(externalIDKey),
+ MFASerial: section.String(mfaSerialKey),
+ RoleSessionName: section.String(roleSessionNameKey),
}
}
+ // `credential_process`
+ if credProc := section.String(credentialProcessKey); len(credProc) > 0 {
+ cfg.CredentialProcess = credProc
+ }
+
// Region
- if v := section.Key(regionKey).String(); len(v) > 0 {
+ if v := section.String(regionKey); len(v) > 0 {
cfg.Region = v
}
+ // Endpoint discovery
+ if section.Has(enableEndpointDiscoveryKey) {
+ v := section.Bool(enableEndpointDiscoveryKey)
+ cfg.EnableEndpointDiscovery = &v
+ }
+
return nil
}
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
index 5b52ab22..523db79f 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
@@ -98,25 +98,25 @@ var ignoredHeaders = rules{
var requiredSignedHeaders = rules{
whitelist{
mapRule{
- "Cache-Control": struct{}{},
- "Content-Disposition": struct{}{},
- "Content-Encoding": struct{}{},
- "Content-Language": struct{}{},
- "Content-Md5": struct{}{},
- "Content-Type": struct{}{},
- "Expires": struct{}{},
- "If-Match": struct{}{},
- "If-Modified-Since": struct{}{},
- "If-None-Match": struct{}{},
- "If-Unmodified-Since": struct{}{},
- "Range": struct{}{},
- "X-Amz-Acl": struct{}{},
- "X-Amz-Copy-Source": struct{}{},
- "X-Amz-Copy-Source-If-Match": struct{}{},
- "X-Amz-Copy-Source-If-Modified-Since": struct{}{},
- "X-Amz-Copy-Source-If-None-Match": struct{}{},
- "X-Amz-Copy-Source-If-Unmodified-Since": struct{}{},
- "X-Amz-Copy-Source-Range": struct{}{},
+ "Cache-Control": struct{}{},
+ "Content-Disposition": struct{}{},
+ "Content-Encoding": struct{}{},
+ "Content-Language": struct{}{},
+ "Content-Md5": struct{}{},
+ "Content-Type": struct{}{},
+ "Expires": struct{}{},
+ "If-Match": struct{}{},
+ "If-Modified-Since": struct{}{},
+ "If-None-Match": struct{}{},
+ "If-Unmodified-Since": struct{}{},
+ "Range": struct{}{},
+ "X-Amz-Acl": struct{}{},
+ "X-Amz-Copy-Source": struct{}{},
+ "X-Amz-Copy-Source-If-Match": struct{}{},
+ "X-Amz-Copy-Source-If-Modified-Since": struct{}{},
+ "X-Amz-Copy-Source-If-None-Match": struct{}{},
+ "X-Amz-Copy-Source-If-Unmodified-Since": struct{}{},
+ "X-Amz-Copy-Source-Range": struct{}{},
"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Algorithm": struct{}{},
"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key": struct{}{},
"X-Amz-Copy-Source-Server-Side-Encryption-Customer-Key-Md5": struct{}{},
@@ -134,6 +134,7 @@ var requiredSignedHeaders = rules{
"X-Amz-Server-Side-Encryption-Customer-Key": struct{}{},
"X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{},
"X-Amz-Storage-Class": struct{}{},
+ "X-Amz-Tagging": struct{}{},
"X-Amz-Website-Redirect-Location": struct{}{},
"X-Amz-Content-Sha256": struct{}{},
},
@@ -181,7 +182,7 @@ type Signer struct {
// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
DisableURIPathEscaping bool
- // Disales the automatical setting of the HTTP request's Body field with the
+ // Disables the automatical setting of the HTTP request's Body field with the
// io.ReadSeeker passed in to the signer. This is useful if you're using a
// custom wrapper around the body for the io.ReadSeeker and want to preserve
// the Body value on the Request.Body.
@@ -421,7 +422,7 @@ var SignRequestHandler = request.NamedHandler{
// If the credentials of the request's config are set to
// credentials.AnonymousCredentials the request will not be signed.
func SignSDKRequest(req *request.Request) {
- signSDKRequestWithCurrTime(req, time.Now)
+ SignSDKRequestWithCurrentTime(req, time.Now)
}
// BuildNamedHandler will build a generic handler for signing.
@@ -429,12 +430,15 @@ func BuildNamedHandler(name string, opts ...func(*Signer)) request.NamedHandler
return request.NamedHandler{
Name: name,
Fn: func(req *request.Request) {
- signSDKRequestWithCurrTime(req, time.Now, opts...)
+ SignSDKRequestWithCurrentTime(req, time.Now, opts...)
},
}
}
-func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) {
+// SignSDKRequestWithCurrentTime will sign the SDK's request using the time
+// function passed in. Behaves the same as SignSDKRequest with the exception
+// the request is signed with the value returned by the current time function.
+func SignSDKRequestWithCurrentTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) {
// If the request does not need to be signed ignore the signing of the
// request if the AnonymousCredentials object is used.
if req.Config.Credentials == credentials.AnonymousCredentials {
@@ -470,13 +474,9 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time
opt(v4)
}
- signingTime := req.Time
- if !req.LastSignedAt.IsZero() {
- signingTime = req.LastSignedAt
- }
-
+ curTime := curTimeFn()
signedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(),
- name, region, req.ExpireTime, req.ExpireTime > 0, signingTime,
+ name, region, req.ExpireTime, req.ExpireTime > 0, curTime,
)
if err != nil {
req.Error = err
@@ -485,7 +485,7 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time
}
req.SignedHeaderVals = signedHeaders
- req.LastSignedAt = curTimeFn()
+ req.LastSignedAt = curTime
}
const logSignInfoMsg = `DEBUG: Request Signature:
@@ -754,7 +754,7 @@ func makeSha256Reader(reader io.ReadSeeker) []byte {
const doubleSpace = " "
// stripExcessSpaces will rewrite the passed in slice's string values to not
-// contain muliple side-by-side spaces.
+// contain multiple side-by-side spaces.
func stripExcessSpaces(vals []string) {
var j, k, l, m, spaces int
for i, str := range vals {
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go
index 13eb1060..dceb53d6 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/version.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go
@@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
-const SDKVersion = "1.15.41"
+const SDKVersion = "1.16.30"
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go
new file mode 100644
index 00000000..e83a9988
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go
@@ -0,0 +1,120 @@
+package ini
+
+// ASTKind represents different states in the parse table
+// and the type of AST that is being constructed
+type ASTKind int
+
+// ASTKind* is used in the parse table to transition between
+// the different states
+const (
+ ASTKindNone = ASTKind(iota)
+ ASTKindStart
+ ASTKindExpr
+ ASTKindEqualExpr
+ ASTKindStatement
+ ASTKindSkipStatement
+ ASTKindExprStatement
+ ASTKindSectionStatement
+ ASTKindNestedSectionStatement
+ ASTKindCompletedNestedSectionStatement
+ ASTKindCommentStatement
+ ASTKindCompletedSectionStatement
+)
+
+func (k ASTKind) String() string {
+ switch k {
+ case ASTKindNone:
+ return "none"
+ case ASTKindStart:
+ return "start"
+ case ASTKindExpr:
+ return "expr"
+ case ASTKindStatement:
+ return "stmt"
+ case ASTKindSectionStatement:
+ return "section_stmt"
+ case ASTKindExprStatement:
+ return "expr_stmt"
+ case ASTKindCommentStatement:
+ return "comment"
+ case ASTKindNestedSectionStatement:
+ return "nested_section_stmt"
+ case ASTKindCompletedSectionStatement:
+ return "completed_stmt"
+ case ASTKindSkipStatement:
+ return "skip"
+ default:
+ return ""
+ }
+}
+
+// AST interface allows us to determine what kind of node we
+// are on and casting may not need to be necessary.
+//
+// The root is always the first node in Children
+type AST struct {
+ Kind ASTKind
+ Root Token
+ RootToken bool
+ Children []AST
+}
+
+func newAST(kind ASTKind, root AST, children ...AST) AST {
+ return AST{
+ Kind: kind,
+ Children: append([]AST{root}, children...),
+ }
+}
+
+func newASTWithRootToken(kind ASTKind, root Token, children ...AST) AST {
+ return AST{
+ Kind: kind,
+ Root: root,
+ RootToken: true,
+ Children: children,
+ }
+}
+
+// AppendChild will append to the list of children an AST has.
+func (a *AST) AppendChild(child AST) {
+ a.Children = append(a.Children, child)
+}
+
+// GetRoot will return the root AST which can be the first entry
+// in the children list or a token.
+func (a *AST) GetRoot() AST {
+ if a.RootToken {
+ return *a
+ }
+
+ if len(a.Children) == 0 {
+ return AST{}
+ }
+
+ return a.Children[0]
+}
+
+// GetChildren will return the current AST's list of children
+func (a *AST) GetChildren() []AST {
+ if len(a.Children) == 0 {
+ return []AST{}
+ }
+
+ if a.RootToken {
+ return a.Children
+ }
+
+ return a.Children[1:]
+}
+
+// SetChildren will set and override all children of the AST.
+func (a *AST) SetChildren(children []AST) {
+ if a.RootToken {
+ a.Children = children
+ } else {
+ a.Children = append(a.Children[:1], children...)
+ }
+}
+
+// Start is used to indicate the starting state of the parse table.
+var Start = newAST(ASTKindStart, AST{})
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go
new file mode 100644
index 00000000..0895d53c
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go
@@ -0,0 +1,11 @@
+package ini
+
+var commaRunes = []rune(",")
+
+func isComma(b rune) bool {
+ return b == ','
+}
+
+func newCommaToken() Token {
+ return newToken(TokenComma, commaRunes, NoneType)
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go
new file mode 100644
index 00000000..0b76999b
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go
@@ -0,0 +1,35 @@
+package ini
+
+// isComment will return whether or not the next byte(s) is a
+// comment.
+func isComment(b []rune) bool {
+ if len(b) == 0 {
+ return false
+ }
+
+ switch b[0] {
+ case ';':
+ return true
+ case '#':
+ return true
+ }
+
+ return false
+}
+
+// newCommentToken will create a comment token and
+// return how many bytes were read.
+func newCommentToken(b []rune) (Token, int, error) {
+ i := 0
+ for ; i < len(b); i++ {
+ if b[i] == '\n' {
+ break
+ }
+
+ if len(b)-i > 2 && b[i] == '\r' && b[i+1] == '\n' {
+ break
+ }
+ }
+
+ return newToken(TokenComment, b[:i], NoneType), i, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go
new file mode 100644
index 00000000..25ce0fe1
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go
@@ -0,0 +1,29 @@
+// Package ini is an LL(1) parser for configuration files.
+//
+// Example:
+// sections, err := ini.OpenFile("/path/to/file")
+// if err != nil {
+// panic(err)
+// }
+//
+// profile := "foo"
+// section, ok := sections.GetSection(profile)
+// if !ok {
+// fmt.Printf("section %q could not be found", profile)
+// }
+//
+// Below is the BNF that describes this parser
+// Grammar:
+// stmt -> value stmt'
+// stmt' -> epsilon | op stmt
+// value -> number | string | boolean | quoted_string
+//
+// section -> [ section'
+// section' -> value section_close
+// section_close -> ]
+//
+// SkipState will skip (NL WS)+
+//
+// comment -> # comment' | ; comment'
+// comment' -> epsilon | value
+package ini
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go
new file mode 100644
index 00000000..04345a54
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go
@@ -0,0 +1,4 @@
+package ini
+
+// emptyToken is used to satisfy the Token interface
+var emptyToken = newToken(TokenNone, []rune{}, NoneType)
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go
new file mode 100644
index 00000000..91ba2a59
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go
@@ -0,0 +1,24 @@
+package ini
+
+// newExpression will return an expression AST.
+// Expr represents an expression
+//
+// grammar:
+// expr -> string | number
+func newExpression(tok Token) AST {
+ return newASTWithRootToken(ASTKindExpr, tok)
+}
+
+func newEqualExpr(left AST, tok Token) AST {
+ return newASTWithRootToken(ASTKindEqualExpr, tok, left)
+}
+
+// EqualExprKey will return a LHS value in the equal expr
+func EqualExprKey(ast AST) string {
+ children := ast.GetChildren()
+ if len(children) == 0 || ast.Kind != ASTKindEqualExpr {
+ return ""
+ }
+
+ return string(children[0].Root.Raw())
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go
new file mode 100644
index 00000000..8d462f77
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go
@@ -0,0 +1,17 @@
+// +build gofuzz
+
+package ini
+
+import (
+ "bytes"
+)
+
+func Fuzz(data []byte) int {
+ b := bytes.NewReader(data)
+
+ if _, err := Parse(b); err != nil {
+ return 0
+ }
+
+ return 1
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go
new file mode 100644
index 00000000..3b0ca7af
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go
@@ -0,0 +1,51 @@
+package ini
+
+import (
+ "io"
+ "os"
+
+ "github.com/aws/aws-sdk-go/aws/awserr"
+)
+
+// OpenFile takes a path to a given file, and will open and parse
+// that file.
+func OpenFile(path string) (Sections, error) {
+ f, err := os.Open(path)
+ if err != nil {
+ return Sections{}, awserr.New(ErrCodeUnableToReadFile, "unable to open file", err)
+ }
+ defer f.Close()
+
+ return Parse(f)
+}
+
+// Parse will parse the given file using the shared config
+// visitor.
+func Parse(f io.Reader) (Sections, error) {
+ tree, err := ParseAST(f)
+ if err != nil {
+ return Sections{}, err
+ }
+
+ v := NewDefaultVisitor()
+ if err = Walk(tree, v); err != nil {
+ return Sections{}, err
+ }
+
+ return v.Sections, nil
+}
+
+// ParseBytes will parse the given bytes and return the parsed sections.
+func ParseBytes(b []byte) (Sections, error) {
+ tree, err := ParseASTBytes(b)
+ if err != nil {
+ return Sections{}, err
+ }
+
+ v := NewDefaultVisitor()
+ if err = Walk(tree, v); err != nil {
+ return Sections{}, err
+ }
+
+ return v.Sections, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go
new file mode 100644
index 00000000..582c024a
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go
@@ -0,0 +1,165 @@
+package ini
+
+import (
+ "bytes"
+ "io"
+ "io/ioutil"
+
+ "github.com/aws/aws-sdk-go/aws/awserr"
+)
+
+const (
+ // ErrCodeUnableToReadFile is used when a file is failed to be
+ // opened or read from.
+ ErrCodeUnableToReadFile = "FailedRead"
+)
+
+// TokenType represents the various different tokens types
+type TokenType int
+
+func (t TokenType) String() string {
+ switch t {
+ case TokenNone:
+ return "none"
+ case TokenLit:
+ return "literal"
+ case TokenSep:
+ return "sep"
+ case TokenOp:
+ return "op"
+ case TokenWS:
+ return "ws"
+ case TokenNL:
+ return "newline"
+ case TokenComment:
+ return "comment"
+ case TokenComma:
+ return "comma"
+ default:
+ return ""
+ }
+}
+
+// TokenType enums
+const (
+ TokenNone = TokenType(iota)
+ TokenLit
+ TokenSep
+ TokenComma
+ TokenOp
+ TokenWS
+ TokenNL
+ TokenComment
+)
+
+type iniLexer struct{}
+
+// Tokenize will return a list of tokens during lexical analysis of the
+// io.Reader.
+func (l *iniLexer) Tokenize(r io.Reader) ([]Token, error) {
+ b, err := ioutil.ReadAll(r)
+ if err != nil {
+ return nil, awserr.New(ErrCodeUnableToReadFile, "unable to read file", err)
+ }
+
+ return l.tokenize(b)
+}
+
+func (l *iniLexer) tokenize(b []byte) ([]Token, error) {
+ runes := bytes.Runes(b)
+ var err error
+ n := 0
+ tokenAmount := countTokens(runes)
+ tokens := make([]Token, tokenAmount)
+ count := 0
+
+ for len(runes) > 0 && count < tokenAmount {
+ switch {
+ case isWhitespace(runes[0]):
+ tokens[count], n, err = newWSToken(runes)
+ case isComma(runes[0]):
+ tokens[count], n = newCommaToken(), 1
+ case isComment(runes):
+ tokens[count], n, err = newCommentToken(runes)
+ case isNewline(runes):
+ tokens[count], n, err = newNewlineToken(runes)
+ case isSep(runes):
+ tokens[count], n, err = newSepToken(runes)
+ case isOp(runes):
+ tokens[count], n, err = newOpToken(runes)
+ default:
+ tokens[count], n, err = newLitToken(runes)
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ count++
+
+ runes = runes[n:]
+ }
+
+ return tokens[:count], nil
+}
+
+func countTokens(runes []rune) int {
+ count, n := 0, 0
+ var err error
+
+ for len(runes) > 0 {
+ switch {
+ case isWhitespace(runes[0]):
+ _, n, err = newWSToken(runes)
+ case isComma(runes[0]):
+ _, n = newCommaToken(), 1
+ case isComment(runes):
+ _, n, err = newCommentToken(runes)
+ case isNewline(runes):
+ _, n, err = newNewlineToken(runes)
+ case isSep(runes):
+ _, n, err = newSepToken(runes)
+ case isOp(runes):
+ _, n, err = newOpToken(runes)
+ default:
+ _, n, err = newLitToken(runes)
+ }
+
+ if err != nil {
+ return 0
+ }
+
+ count++
+ runes = runes[n:]
+ }
+
+ return count + 1
+}
+
+// Token indicates a metadata about a given value.
+type Token struct {
+ t TokenType
+ ValueType ValueType
+ base int
+ raw []rune
+}
+
+var emptyValue = Value{}
+
+func newToken(t TokenType, raw []rune, v ValueType) Token {
+ return Token{
+ t: t,
+ raw: raw,
+ ValueType: v,
+ }
+}
+
+// Raw return the raw runes that were consumed
+func (tok Token) Raw() []rune {
+ return tok.raw
+}
+
+// Type returns the token type
+func (tok Token) Type() TokenType {
+ return tok.t
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
new file mode 100644
index 00000000..f9970337
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
@@ -0,0 +1,347 @@
+package ini
+
+import (
+ "fmt"
+ "io"
+)
+
+// State enums for the parse table
+const (
+ InvalidState = iota
+ // stmt -> value stmt'
+ StatementState
+ // stmt' -> MarkComplete | op stmt
+ StatementPrimeState
+ // value -> number | string | boolean | quoted_string
+ ValueState
+ // section -> [ section'
+ OpenScopeState
+ // section' -> value section_close
+ SectionState
+ // section_close -> ]
+ CloseScopeState
+ // SkipState will skip (NL WS)+
+ SkipState
+ // SkipTokenState will skip any token and push the previous
+ // state onto the stack.
+ SkipTokenState
+ // comment -> # comment' | ; comment'
+ // comment' -> MarkComplete | value
+ CommentState
+ // MarkComplete state will complete statements and move that
+ // to the completed AST list
+ MarkCompleteState
+ // TerminalState signifies that the tokens have been fully parsed
+ TerminalState
+)
+
+// parseTable is a state machine to dictate the grammar above.
+var parseTable = map[ASTKind]map[TokenType]int{
+ ASTKindStart: map[TokenType]int{
+ TokenLit: StatementState,
+ TokenSep: OpenScopeState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipTokenState,
+ TokenComment: CommentState,
+ TokenNone: TerminalState,
+ },
+ ASTKindCommentStatement: map[TokenType]int{
+ TokenLit: StatementState,
+ TokenSep: OpenScopeState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipTokenState,
+ TokenComment: CommentState,
+ TokenNone: MarkCompleteState,
+ },
+ ASTKindExpr: map[TokenType]int{
+ TokenOp: StatementPrimeState,
+ TokenLit: ValueState,
+ TokenSep: OpenScopeState,
+ TokenWS: ValueState,
+ TokenNL: SkipState,
+ TokenComment: CommentState,
+ TokenNone: MarkCompleteState,
+ },
+ ASTKindEqualExpr: map[TokenType]int{
+ TokenLit: ValueState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipState,
+ },
+ ASTKindStatement: map[TokenType]int{
+ TokenLit: SectionState,
+ TokenSep: CloseScopeState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipTokenState,
+ TokenComment: CommentState,
+ TokenNone: MarkCompleteState,
+ },
+ ASTKindExprStatement: map[TokenType]int{
+ TokenLit: ValueState,
+ TokenSep: OpenScopeState,
+ TokenOp: ValueState,
+ TokenWS: ValueState,
+ TokenNL: MarkCompleteState,
+ TokenComment: CommentState,
+ TokenNone: TerminalState,
+ TokenComma: SkipState,
+ },
+ ASTKindSectionStatement: map[TokenType]int{
+ TokenLit: SectionState,
+ TokenOp: SectionState,
+ TokenSep: CloseScopeState,
+ TokenWS: SectionState,
+ TokenNL: SkipTokenState,
+ },
+ ASTKindCompletedSectionStatement: map[TokenType]int{
+ TokenWS: SkipTokenState,
+ TokenNL: SkipTokenState,
+ TokenLit: StatementState,
+ TokenSep: OpenScopeState,
+ TokenComment: CommentState,
+ TokenNone: MarkCompleteState,
+ },
+ ASTKindSkipStatement: map[TokenType]int{
+ TokenLit: StatementState,
+ TokenSep: OpenScopeState,
+ TokenWS: SkipTokenState,
+ TokenNL: SkipTokenState,
+ TokenComment: CommentState,
+ TokenNone: TerminalState,
+ },
+}
+
+// ParseAST will parse input from an io.Reader using
+// an LL(1) parser.
+func ParseAST(r io.Reader) ([]AST, error) {
+ lexer := iniLexer{}
+ tokens, err := lexer.Tokenize(r)
+ if err != nil {
+ return []AST{}, err
+ }
+
+ return parse(tokens)
+}
+
+// ParseASTBytes will parse input from a byte slice using
+// an LL(1) parser.
+func ParseASTBytes(b []byte) ([]AST, error) {
+ lexer := iniLexer{}
+ tokens, err := lexer.tokenize(b)
+ if err != nil {
+ return []AST{}, err
+ }
+
+ return parse(tokens)
+}
+
+func parse(tokens []Token) ([]AST, error) {
+ start := Start
+ stack := newParseStack(3, len(tokens))
+
+ stack.Push(start)
+ s := newSkipper()
+
+loop:
+ for stack.Len() > 0 {
+ k := stack.Pop()
+
+ var tok Token
+ if len(tokens) == 0 {
+ // this occurs when all the tokens have been processed
+ // but reduction of what's left on the stack needs to
+ // occur.
+ tok = emptyToken
+ } else {
+ tok = tokens[0]
+ }
+
+ step := parseTable[k.Kind][tok.Type()]
+ if s.ShouldSkip(tok) {
+ // being in a skip state with no tokens will break out of
+ // the parse loop since there is nothing left to process.
+ if len(tokens) == 0 {
+ break loop
+ }
+
+ step = SkipTokenState
+ }
+
+ switch step {
+ case TerminalState:
+ // Finished parsing. Push what should be the last
+ // statement to the stack. If there is anything left
+ // on the stack, an error in parsing has occurred.
+ if k.Kind != ASTKindStart {
+ stack.MarkComplete(k)
+ }
+ break loop
+ case SkipTokenState:
+ // When skipping a token, the previous state was popped off the stack.
+ // To maintain the correct state, the previous state will be pushed
+ // onto the stack.
+ stack.Push(k)
+ case StatementState:
+ if k.Kind != ASTKindStart {
+ stack.MarkComplete(k)
+ }
+ expr := newExpression(tok)
+ stack.Push(expr)
+ case StatementPrimeState:
+ if tok.Type() != TokenOp {
+ stack.MarkComplete(k)
+ continue
+ }
+
+ if k.Kind != ASTKindExpr {
+ return nil, NewParseError(
+ fmt.Sprintf("invalid expression: expected Expr type, but found %T type", k),
+ )
+ }
+
+ k = trimSpaces(k)
+ expr := newEqualExpr(k, tok)
+ stack.Push(expr)
+ case ValueState:
+ // ValueState requires the previous state to either be an equal expression
+ // or an expression statement.
+ //
+ // This grammar occurs when the RHS is a number, word, or quoted string.
+ // equal_expr -> lit op equal_expr'
+ // equal_expr' -> number | string | quoted_string
+ // quoted_string -> " quoted_string'
+ // quoted_string' -> string quoted_string_end
+ // quoted_string_end -> "
+ //
+ // otherwise
+ // expr_stmt -> equal_expr (expr_stmt')*
+ // expr_stmt' -> ws S | op S | MarkComplete
+ // S -> equal_expr' expr_stmt'
+ switch k.Kind {
+ case ASTKindEqualExpr:
+ // assiging a value to some key
+ k.AppendChild(newExpression(tok))
+ stack.Push(newExprStatement(k))
+ case ASTKindExpr:
+ k.Root.raw = append(k.Root.raw, tok.Raw()...)
+ stack.Push(k)
+ case ASTKindExprStatement:
+ root := k.GetRoot()
+ children := root.GetChildren()
+ if len(children) == 0 {
+ return nil, NewParseError(
+ fmt.Sprintf("invalid expression: AST contains no children %s", k.Kind),
+ )
+ }
+
+ rhs := children[len(children)-1]
+
+ if rhs.Root.ValueType != QuotedStringType {
+ rhs.Root.ValueType = StringType
+ rhs.Root.raw = append(rhs.Root.raw, tok.Raw()...)
+
+ }
+
+ children[len(children)-1] = rhs
+ k.SetChildren(children)
+
+ stack.Push(k)
+ }
+ case OpenScopeState:
+ if !runeCompare(tok.Raw(), openBrace) {
+ return nil, NewParseError("expected '['")
+ }
+
+ stmt := newStatement()
+ stack.Push(stmt)
+ case CloseScopeState:
+ if !runeCompare(tok.Raw(), closeBrace) {
+ return nil, NewParseError("expected ']'")
+ }
+
+ k = trimSpaces(k)
+ stack.Push(newCompletedSectionStatement(k))
+ case SectionState:
+ var stmt AST
+
+ switch k.Kind {
+ case ASTKindStatement:
+ // If there are multiple literals inside of a scope declaration,
+ // then the current token's raw value will be appended to the Name.
+ //
+ // This handles cases like [ profile default ]
+ //
+ // k will represent a SectionStatement with the children representing
+ // the label of the section
+ stmt = newSectionStatement(tok)
+ case ASTKindSectionStatement:
+ k.Root.raw = append(k.Root.raw, tok.Raw()...)
+ stmt = k
+ default:
+ return nil, NewParseError(
+ fmt.Sprintf("invalid statement: expected statement: %v", k.Kind),
+ )
+ }
+
+ stack.Push(stmt)
+ case MarkCompleteState:
+ if k.Kind != ASTKindStart {
+ stack.MarkComplete(k)
+ }
+
+ if stack.Len() == 0 {
+ stack.Push(start)
+ }
+ case SkipState:
+ stack.Push(newSkipStatement(k))
+ s.Skip()
+ case CommentState:
+ if k.Kind == ASTKindStart {
+ stack.Push(k)
+ } else {
+ stack.MarkComplete(k)
+ }
+
+ stmt := newCommentStatement(tok)
+ stack.Push(stmt)
+ default:
+ return nil, NewParseError(fmt.Sprintf("invalid state with ASTKind %v and TokenType %v", k, tok))
+ }
+
+ if len(tokens) > 0 {
+ tokens = tokens[1:]
+ }
+ }
+
+ // this occurs when a statement has not been completed
+ if stack.top > 1 {
+ return nil, NewParseError(fmt.Sprintf("incomplete expression: %v", stack.container))
+ }
+
+ // returns a sublist which excludes the start symbol
+ return stack.List(), nil
+}
+
+// trimSpaces will trim spaces on the left and right hand side of
+// the literal.
+func trimSpaces(k AST) AST {
+ // trim left hand side of spaces
+ for i := 0; i < len(k.Root.raw); i++ {
+ if !isWhitespace(k.Root.raw[i]) {
+ break
+ }
+
+ k.Root.raw = k.Root.raw[1:]
+ i--
+ }
+
+ // trim right hand side of spaces
+ for i := len(k.Root.raw) - 1; i >= 0; i-- {
+ if !isWhitespace(k.Root.raw[i]) {
+ break
+ }
+
+ k.Root.raw = k.Root.raw[:len(k.Root.raw)-1]
+ }
+
+ return k
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go
new file mode 100644
index 00000000..24df543d
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go
@@ -0,0 +1,324 @@
+package ini
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+)
+
+var (
+ runesTrue = []rune("true")
+ runesFalse = []rune("false")
+)
+
+var literalValues = [][]rune{
+ runesTrue,
+ runesFalse,
+}
+
+func isBoolValue(b []rune) bool {
+ for _, lv := range literalValues {
+ if isLitValue(lv, b) {
+ return true
+ }
+ }
+ return false
+}
+
+func isLitValue(want, have []rune) bool {
+ if len(have) < len(want) {
+ return false
+ }
+
+ for i := 0; i < len(want); i++ {
+ if want[i] != have[i] {
+ return false
+ }
+ }
+
+ return true
+}
+
+// isNumberValue will return whether not the leading characters in
+// a byte slice is a number. A number is delimited by whitespace or
+// the newline token.
+//
+// A number is defined to be in a binary, octal, decimal (int | float), hex format,
+// or in scientific notation.
+func isNumberValue(b []rune) bool {
+ negativeIndex := 0
+ helper := numberHelper{}
+ needDigit := false
+
+ for i := 0; i < len(b); i++ {
+ negativeIndex++
+
+ switch b[i] {
+ case '-':
+ if helper.IsNegative() || negativeIndex != 1 {
+ return false
+ }
+ helper.Determine(b[i])
+ needDigit = true
+ continue
+ case 'e', 'E':
+ if err := helper.Determine(b[i]); err != nil {
+ return false
+ }
+ negativeIndex = 0
+ needDigit = true
+ continue
+ case 'b':
+ if helper.numberFormat == hex {
+ break
+ }
+ fallthrough
+ case 'o', 'x':
+ needDigit = true
+ if i == 0 {
+ return false
+ }
+
+ fallthrough
+ case '.':
+ if err := helper.Determine(b[i]); err != nil {
+ return false
+ }
+ needDigit = true
+ continue
+ }
+
+ if i > 0 && (isNewline(b[i:]) || isWhitespace(b[i])) {
+ return !needDigit
+ }
+
+ if !helper.CorrectByte(b[i]) {
+ return false
+ }
+ needDigit = false
+ }
+
+ return !needDigit
+}
+
+func isValid(b []rune) (bool, int, error) {
+ if len(b) == 0 {
+ // TODO: should probably return an error
+ return false, 0, nil
+ }
+
+ return isValidRune(b[0]), 1, nil
+}
+
+func isValidRune(r rune) bool {
+ return r != ':' && r != '=' && r != '[' && r != ']' && r != ' ' && r != '\n'
+}
+
+// ValueType is an enum that will signify what type
+// the Value is
+type ValueType int
+
+func (v ValueType) String() string {
+ switch v {
+ case NoneType:
+ return "NONE"
+ case DecimalType:
+ return "FLOAT"
+ case IntegerType:
+ return "INT"
+ case StringType:
+ return "STRING"
+ case BoolType:
+ return "BOOL"
+ }
+
+ return ""
+}
+
+// ValueType enums
+const (
+ NoneType = ValueType(iota)
+ DecimalType
+ IntegerType
+ StringType
+ QuotedStringType
+ BoolType
+)
+
+// Value is a union container
+type Value struct {
+ Type ValueType
+ raw []rune
+
+ integer int64
+ decimal float64
+ boolean bool
+ str string
+}
+
+func newValue(t ValueType, base int, raw []rune) (Value, error) {
+ v := Value{
+ Type: t,
+ raw: raw,
+ }
+ var err error
+
+ switch t {
+ case DecimalType:
+ v.decimal, err = strconv.ParseFloat(string(raw), 64)
+ case IntegerType:
+ if base != 10 {
+ raw = raw[2:]
+ }
+
+ v.integer, err = strconv.ParseInt(string(raw), base, 64)
+ case StringType:
+ v.str = string(raw)
+ case QuotedStringType:
+ v.str = string(raw[1 : len(raw)-1])
+ case BoolType:
+ v.boolean = runeCompare(v.raw, runesTrue)
+ }
+
+ // issue 2253
+ //
+ // if the value trying to be parsed is too large, then we will use
+ // the 'StringType' and raw value instead.
+ if nerr, ok := err.(*strconv.NumError); ok && nerr.Err == strconv.ErrRange {
+ v.Type = StringType
+ v.str = string(raw)
+ err = nil
+ }
+
+ return v, err
+}
+
+// Append will append values and change the type to a string
+// type.
+func (v *Value) Append(tok Token) {
+ r := tok.Raw()
+ if v.Type != QuotedStringType {
+ v.Type = StringType
+ r = tok.raw[1 : len(tok.raw)-1]
+ }
+ if tok.Type() != TokenLit {
+ v.raw = append(v.raw, tok.Raw()...)
+ } else {
+ v.raw = append(v.raw, r...)
+ }
+}
+
+func (v Value) String() string {
+ switch v.Type {
+ case DecimalType:
+ return fmt.Sprintf("decimal: %f", v.decimal)
+ case IntegerType:
+ return fmt.Sprintf("integer: %d", v.integer)
+ case StringType:
+ return fmt.Sprintf("string: %s", string(v.raw))
+ case QuotedStringType:
+ return fmt.Sprintf("quoted string: %s", string(v.raw))
+ case BoolType:
+ return fmt.Sprintf("bool: %t", v.boolean)
+ default:
+ return "union not set"
+ }
+}
+
+func newLitToken(b []rune) (Token, int, error) {
+ n := 0
+ var err error
+
+ token := Token{}
+ if b[0] == '"' {
+ n, err = getStringValue(b)
+ if err != nil {
+ return token, n, err
+ }
+
+ token = newToken(TokenLit, b[:n], QuotedStringType)
+ } else if isNumberValue(b) {
+ var base int
+ base, n, err = getNumericalValue(b)
+ if err != nil {
+ return token, 0, err
+ }
+
+ value := b[:n]
+ vType := IntegerType
+ if contains(value, '.') || hasExponent(value) {
+ vType = DecimalType
+ }
+ token = newToken(TokenLit, value, vType)
+ token.base = base
+ } else if isBoolValue(b) {
+ n, err = getBoolValue(b)
+
+ token = newToken(TokenLit, b[:n], BoolType)
+ } else {
+ n, err = getValue(b)
+ token = newToken(TokenLit, b[:n], StringType)
+ }
+
+ return token, n, err
+}
+
+// IntValue returns an integer value
+func (v Value) IntValue() int64 {
+ return v.integer
+}
+
+// FloatValue returns a float value
+func (v Value) FloatValue() float64 {
+ return v.decimal
+}
+
+// BoolValue returns a bool value
+func (v Value) BoolValue() bool {
+ return v.boolean
+}
+
+func isTrimmable(r rune) bool {
+ switch r {
+ case '\n', ' ':
+ return true
+ }
+ return false
+}
+
+// StringValue returns the string value
+func (v Value) StringValue() string {
+ switch v.Type {
+ case StringType:
+ return strings.TrimFunc(string(v.raw), isTrimmable)
+ case QuotedStringType:
+ // preserve all characters in the quotes
+ return string(removeEscapedCharacters(v.raw[1 : len(v.raw)-1]))
+ default:
+ return strings.TrimFunc(string(v.raw), isTrimmable)
+ }
+}
+
+func contains(runes []rune, c rune) bool {
+ for i := 0; i < len(runes); i++ {
+ if runes[i] == c {
+ return true
+ }
+ }
+
+ return false
+}
+
+func runeCompare(v1 []rune, v2 []rune) bool {
+ if len(v1) != len(v2) {
+ return false
+ }
+
+ for i := 0; i < len(v1); i++ {
+ if v1[i] != v2[i] {
+ return false
+ }
+ }
+
+ return true
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go
new file mode 100644
index 00000000..e52ac399
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go
@@ -0,0 +1,30 @@
+package ini
+
+func isNewline(b []rune) bool {
+ if len(b) == 0 {
+ return false
+ }
+
+ if b[0] == '\n' {
+ return true
+ }
+
+ if len(b) < 2 {
+ return false
+ }
+
+ return b[0] == '\r' && b[1] == '\n'
+}
+
+func newNewlineToken(b []rune) (Token, int, error) {
+ i := 1
+ if b[0] == '\r' && isNewline(b[1:]) {
+ i++
+ }
+
+ if !isNewline([]rune(b[:i])) {
+ return emptyToken, 0, NewParseError("invalid new line token")
+ }
+
+ return newToken(TokenNL, b[:i], NoneType), i, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go
new file mode 100644
index 00000000..a45c0bc5
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go
@@ -0,0 +1,152 @@
+package ini
+
+import (
+ "bytes"
+ "fmt"
+ "strconv"
+)
+
+const (
+ none = numberFormat(iota)
+ binary
+ octal
+ decimal
+ hex
+ exponent
+)
+
+type numberFormat int
+
+// numberHelper is used to dictate what format a number is in
+// and what to do for negative values. Since -1e-4 is a valid
+// number, we cannot just simply check for duplicate negatives.
+type numberHelper struct {
+ numberFormat numberFormat
+
+ negative bool
+ negativeExponent bool
+}
+
+func (b numberHelper) Exists() bool {
+ return b.numberFormat != none
+}
+
+func (b numberHelper) IsNegative() bool {
+ return b.negative || b.negativeExponent
+}
+
+func (b *numberHelper) Determine(c rune) error {
+ if b.Exists() {
+ return NewParseError(fmt.Sprintf("multiple number formats: 0%v", string(c)))
+ }
+
+ switch c {
+ case 'b':
+ b.numberFormat = binary
+ case 'o':
+ b.numberFormat = octal
+ case 'x':
+ b.numberFormat = hex
+ case 'e', 'E':
+ b.numberFormat = exponent
+ case '-':
+ if b.numberFormat != exponent {
+ b.negative = true
+ } else {
+ b.negativeExponent = true
+ }
+ case '.':
+ b.numberFormat = decimal
+ default:
+ return NewParseError(fmt.Sprintf("invalid number character: %v", string(c)))
+ }
+
+ return nil
+}
+
+func (b numberHelper) CorrectByte(c rune) bool {
+ switch {
+ case b.numberFormat == binary:
+ if !isBinaryByte(c) {
+ return false
+ }
+ case b.numberFormat == octal:
+ if !isOctalByte(c) {
+ return false
+ }
+ case b.numberFormat == hex:
+ if !isHexByte(c) {
+ return false
+ }
+ case b.numberFormat == decimal:
+ if !isDigit(c) {
+ return false
+ }
+ case b.numberFormat == exponent:
+ if !isDigit(c) {
+ return false
+ }
+ case b.negativeExponent:
+ if !isDigit(c) {
+ return false
+ }
+ case b.negative:
+ if !isDigit(c) {
+ return false
+ }
+ default:
+ if !isDigit(c) {
+ return false
+ }
+ }
+
+ return true
+}
+
+func (b numberHelper) Base() int {
+ switch b.numberFormat {
+ case binary:
+ return 2
+ case octal:
+ return 8
+ case hex:
+ return 16
+ default:
+ return 10
+ }
+}
+
+func (b numberHelper) String() string {
+ buf := bytes.Buffer{}
+ i := 0
+
+ switch b.numberFormat {
+ case binary:
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": binary format\n")
+ case octal:
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": octal format\n")
+ case hex:
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": hex format\n")
+ case exponent:
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": exponent format\n")
+ default:
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": integer format\n")
+ }
+
+ if b.negative {
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": negative format\n")
+ }
+
+ if b.negativeExponent {
+ i++
+ buf.WriteString(strconv.Itoa(i) + ": negative exponent format\n")
+ }
+
+ return buf.String()
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go
new file mode 100644
index 00000000..8a84c7cb
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go
@@ -0,0 +1,39 @@
+package ini
+
+import (
+ "fmt"
+)
+
+var (
+ equalOp = []rune("=")
+ equalColonOp = []rune(":")
+)
+
+func isOp(b []rune) bool {
+ if len(b) == 0 {
+ return false
+ }
+
+ switch b[0] {
+ case '=':
+ return true
+ case ':':
+ return true
+ default:
+ return false
+ }
+}
+
+func newOpToken(b []rune) (Token, int, error) {
+ tok := Token{}
+
+ switch b[0] {
+ case '=':
+ tok = newToken(TokenOp, equalOp, NoneType)
+ case ':':
+ tok = newToken(TokenOp, equalColonOp, NoneType)
+ default:
+ return tok, 0, NewParseError(fmt.Sprintf("unexpected op type, %v", b[0]))
+ }
+ return tok, 1, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go
new file mode 100644
index 00000000..45728701
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go
@@ -0,0 +1,43 @@
+package ini
+
+import "fmt"
+
+const (
+ // ErrCodeParseError is returned when a parsing error
+ // has occurred.
+ ErrCodeParseError = "INIParseError"
+)
+
+// ParseError is an error which is returned during any part of
+// the parsing process.
+type ParseError struct {
+ msg string
+}
+
+// NewParseError will return a new ParseError where message
+// is the description of the error.
+func NewParseError(message string) *ParseError {
+ return &ParseError{
+ msg: message,
+ }
+}
+
+// Code will return the ErrCodeParseError
+func (err *ParseError) Code() string {
+ return ErrCodeParseError
+}
+
+// Message returns the error's message
+func (err *ParseError) Message() string {
+ return err.msg
+}
+
+// OrigError return nothing since there will never be any
+// original error.
+func (err *ParseError) OrigError() error {
+ return nil
+}
+
+func (err *ParseError) Error() string {
+ return fmt.Sprintf("%s: %s", err.Code(), err.Message())
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go
new file mode 100644
index 00000000..7f01cf7c
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go
@@ -0,0 +1,60 @@
+package ini
+
+import (
+ "bytes"
+ "fmt"
+)
+
+// ParseStack is a stack that contains a container, the stack portion,
+// and the list which is the list of ASTs that have been successfully
+// parsed.
+type ParseStack struct {
+ top int
+ container []AST
+ list []AST
+ index int
+}
+
+func newParseStack(sizeContainer, sizeList int) ParseStack {
+ return ParseStack{
+ container: make([]AST, sizeContainer),
+ list: make([]AST, sizeList),
+ }
+}
+
+// Pop will return and truncate the last container element.
+func (s *ParseStack) Pop() AST {
+ s.top--
+ return s.container[s.top]
+}
+
+// Push will add the new AST to the container
+func (s *ParseStack) Push(ast AST) {
+ s.container[s.top] = ast
+ s.top++
+}
+
+// MarkComplete will append the AST to the list of completed statements
+func (s *ParseStack) MarkComplete(ast AST) {
+ s.list[s.index] = ast
+ s.index++
+}
+
+// List will return the completed statements
+func (s ParseStack) List() []AST {
+ return s.list[:s.index]
+}
+
+// Len will return the length of the container
+func (s *ParseStack) Len() int {
+ return s.top
+}
+
+func (s ParseStack) String() string {
+ buf := bytes.Buffer{}
+ for i, node := range s.list {
+ buf.WriteString(fmt.Sprintf("%d: %v\n", i+1, node))
+ }
+
+ return buf.String()
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go
new file mode 100644
index 00000000..f82095ba
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go
@@ -0,0 +1,41 @@
+package ini
+
+import (
+ "fmt"
+)
+
+var (
+ emptyRunes = []rune{}
+)
+
+func isSep(b []rune) bool {
+ if len(b) == 0 {
+ return false
+ }
+
+ switch b[0] {
+ case '[', ']':
+ return true
+ default:
+ return false
+ }
+}
+
+var (
+ openBrace = []rune("[")
+ closeBrace = []rune("]")
+)
+
+func newSepToken(b []rune) (Token, int, error) {
+ tok := Token{}
+
+ switch b[0] {
+ case '[':
+ tok = newToken(TokenSep, openBrace, NoneType)
+ case ']':
+ tok = newToken(TokenSep, closeBrace, NoneType)
+ default:
+ return tok, 0, NewParseError(fmt.Sprintf("unexpected sep type, %v", b[0]))
+ }
+ return tok, 1, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go
new file mode 100644
index 00000000..6bb69644
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go
@@ -0,0 +1,45 @@
+package ini
+
+// skipper is used to skip certain blocks of an ini file.
+// Currently skipper is used to skip nested blocks of ini
+// files. See example below
+//
+// [ foo ]
+// nested = ; this section will be skipped
+// a=b
+// c=d
+// bar=baz ; this will be included
+type skipper struct {
+ shouldSkip bool
+ TokenSet bool
+ prevTok Token
+}
+
+func newSkipper() skipper {
+ return skipper{
+ prevTok: emptyToken,
+ }
+}
+
+func (s *skipper) ShouldSkip(tok Token) bool {
+ if s.shouldSkip &&
+ s.prevTok.Type() == TokenNL &&
+ tok.Type() != TokenWS {
+
+ s.Continue()
+ return false
+ }
+ s.prevTok = tok
+
+ return s.shouldSkip
+}
+
+func (s *skipper) Skip() {
+ s.shouldSkip = true
+ s.prevTok = emptyToken
+}
+
+func (s *skipper) Continue() {
+ s.shouldSkip = false
+ s.prevTok = emptyToken
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go
new file mode 100644
index 00000000..18f3fe89
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go
@@ -0,0 +1,35 @@
+package ini
+
+// Statement is an empty AST mostly used for transitioning states.
+func newStatement() AST {
+ return newAST(ASTKindStatement, AST{})
+}
+
+// SectionStatement represents a section AST
+func newSectionStatement(tok Token) AST {
+ return newASTWithRootToken(ASTKindSectionStatement, tok)
+}
+
+// ExprStatement represents a completed expression AST
+func newExprStatement(ast AST) AST {
+ return newAST(ASTKindExprStatement, ast)
+}
+
+// CommentStatement represents a comment in the ini definition.
+//
+// grammar:
+// comment -> #comment' | ;comment'
+// comment' -> epsilon | value
+func newCommentStatement(tok Token) AST {
+ return newAST(ASTKindCommentStatement, newExpression(tok))
+}
+
+// CompletedSectionStatement represents a completed section
+func newCompletedSectionStatement(ast AST) AST {
+ return newAST(ASTKindCompletedSectionStatement, ast)
+}
+
+// SkipStatement is used to skip whole statements
+func newSkipStatement(ast AST) AST {
+ return newAST(ASTKindSkipStatement, ast)
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go
new file mode 100644
index 00000000..305999d2
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go
@@ -0,0 +1,284 @@
+package ini
+
+import (
+ "fmt"
+)
+
+// getStringValue will return a quoted string and the amount
+// of bytes read
+//
+// an error will be returned if the string is not properly formatted
+func getStringValue(b []rune) (int, error) {
+ if b[0] != '"' {
+ return 0, NewParseError("strings must start with '\"'")
+ }
+
+ endQuote := false
+ i := 1
+
+ for ; i < len(b) && !endQuote; i++ {
+ if escaped := isEscaped(b[:i], b[i]); b[i] == '"' && !escaped {
+ endQuote = true
+ break
+ } else if escaped {
+ /*c, err := getEscapedByte(b[i])
+ if err != nil {
+ return 0, err
+ }
+
+ b[i-1] = c
+ b = append(b[:i], b[i+1:]...)
+ i--*/
+
+ continue
+ }
+ }
+
+ if !endQuote {
+ return 0, NewParseError("missing '\"' in string value")
+ }
+
+ return i + 1, nil
+}
+
+// getBoolValue will return a boolean and the amount
+// of bytes read
+//
+// an error will be returned if the boolean is not of a correct
+// value
+func getBoolValue(b []rune) (int, error) {
+ if len(b) < 4 {
+ return 0, NewParseError("invalid boolean value")
+ }
+
+ n := 0
+ for _, lv := range literalValues {
+ if len(lv) > len(b) {
+ continue
+ }
+
+ if isLitValue(lv, b) {
+ n = len(lv)
+ }
+ }
+
+ if n == 0 {
+ return 0, NewParseError("invalid boolean value")
+ }
+
+ return n, nil
+}
+
+// getNumericalValue will return a numerical string, the amount
+// of bytes read, and the base of the number
+//
+// an error will be returned if the number is not of a correct
+// value
+func getNumericalValue(b []rune) (int, int, error) {
+ if !isDigit(b[0]) {
+ return 0, 0, NewParseError("invalid digit value")
+ }
+
+ i := 0
+ helper := numberHelper{}
+
+loop:
+ for negativeIndex := 0; i < len(b); i++ {
+ negativeIndex++
+
+ if !isDigit(b[i]) {
+ switch b[i] {
+ case '-':
+ if helper.IsNegative() || negativeIndex != 1 {
+ return 0, 0, NewParseError("parse error '-'")
+ }
+
+ n := getNegativeNumber(b[i:])
+ i += (n - 1)
+ helper.Determine(b[i])
+ continue
+ case '.':
+ if err := helper.Determine(b[i]); err != nil {
+ return 0, 0, err
+ }
+ case 'e', 'E':
+ if err := helper.Determine(b[i]); err != nil {
+ return 0, 0, err
+ }
+
+ negativeIndex = 0
+ case 'b':
+ if helper.numberFormat == hex {
+ break
+ }
+ fallthrough
+ case 'o', 'x':
+ if i == 0 && b[i] != '0' {
+ return 0, 0, NewParseError("incorrect base format, expected leading '0'")
+ }
+
+ if i != 1 {
+ return 0, 0, NewParseError(fmt.Sprintf("incorrect base format found %s at %d index", string(b[i]), i))
+ }
+
+ if err := helper.Determine(b[i]); err != nil {
+ return 0, 0, err
+ }
+ default:
+ if isWhitespace(b[i]) {
+ break loop
+ }
+
+ if isNewline(b[i:]) {
+ break loop
+ }
+
+ if !(helper.numberFormat == hex && isHexByte(b[i])) {
+ if i+2 < len(b) && !isNewline(b[i:i+2]) {
+ return 0, 0, NewParseError("invalid numerical character")
+ } else if !isNewline([]rune{b[i]}) {
+ return 0, 0, NewParseError("invalid numerical character")
+ }
+
+ break loop
+ }
+ }
+ }
+ }
+
+ return helper.Base(), i, nil
+}
+
+// isDigit will return whether or not something is an integer
+func isDigit(b rune) bool {
+ return b >= '0' && b <= '9'
+}
+
+func hasExponent(v []rune) bool {
+ return contains(v, 'e') || contains(v, 'E')
+}
+
+func isBinaryByte(b rune) bool {
+ switch b {
+ case '0', '1':
+ return true
+ default:
+ return false
+ }
+}
+
+func isOctalByte(b rune) bool {
+ switch b {
+ case '0', '1', '2', '3', '4', '5', '6', '7':
+ return true
+ default:
+ return false
+ }
+}
+
+func isHexByte(b rune) bool {
+ if isDigit(b) {
+ return true
+ }
+ return (b >= 'A' && b <= 'F') ||
+ (b >= 'a' && b <= 'f')
+}
+
+func getValue(b []rune) (int, error) {
+ i := 0
+
+ for i < len(b) {
+ if isNewline(b[i:]) {
+ break
+ }
+
+ if isOp(b[i:]) {
+ break
+ }
+
+ valid, n, err := isValid(b[i:])
+ if err != nil {
+ return 0, err
+ }
+
+ if !valid {
+ break
+ }
+
+ i += n
+ }
+
+ return i, nil
+}
+
+// getNegativeNumber will return a negative number from a
+// byte slice. This will iterate through all characters until
+// a non-digit has been found.
+func getNegativeNumber(b []rune) int {
+ if b[0] != '-' {
+ return 0
+ }
+
+ i := 1
+ for ; i < len(b); i++ {
+ if !isDigit(b[i]) {
+ return i
+ }
+ }
+
+ return i
+}
+
+// isEscaped will return whether or not the character is an escaped
+// character.
+func isEscaped(value []rune, b rune) bool {
+ if len(value) == 0 {
+ return false
+ }
+
+ switch b {
+ case '\'': // single quote
+ case '"': // quote
+ case 'n': // newline
+ case 't': // tab
+ case '\\': // backslash
+ default:
+ return false
+ }
+
+ return value[len(value)-1] == '\\'
+}
+
+func getEscapedByte(b rune) (rune, error) {
+ switch b {
+ case '\'': // single quote
+ return '\'', nil
+ case '"': // quote
+ return '"', nil
+ case 'n': // newline
+ return '\n', nil
+ case 't': // table
+ return '\t', nil
+ case '\\': // backslash
+ return '\\', nil
+ default:
+ return b, NewParseError(fmt.Sprintf("invalid escaped character %c", b))
+ }
+}
+
+func removeEscapedCharacters(b []rune) []rune {
+ for i := 0; i < len(b); i++ {
+ if isEscaped(b[:i], b[i]) {
+ c, err := getEscapedByte(b[i])
+ if err != nil {
+ return b
+ }
+
+ b[i-1] = c
+ b = append(b[:i], b[i+1:]...)
+ i--
+ }
+ }
+
+ return b
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go
new file mode 100644
index 00000000..94841c32
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go
@@ -0,0 +1,166 @@
+package ini
+
+import (
+ "fmt"
+ "sort"
+)
+
+// Visitor is an interface used by walkers that will
+// traverse an array of ASTs.
+type Visitor interface {
+ VisitExpr(AST) error
+ VisitStatement(AST) error
+}
+
+// DefaultVisitor is used to visit statements and expressions
+// and ensure that they are both of the correct format.
+// In addition, upon visiting this will build sections and populate
+// the Sections field which can be used to retrieve profile
+// configuration.
+type DefaultVisitor struct {
+ scope string
+ Sections Sections
+}
+
+// NewDefaultVisitor return a DefaultVisitor
+func NewDefaultVisitor() *DefaultVisitor {
+ return &DefaultVisitor{
+ Sections: Sections{
+ container: map[string]Section{},
+ },
+ }
+}
+
+// VisitExpr visits expressions...
+func (v *DefaultVisitor) VisitExpr(expr AST) error {
+ t := v.Sections.container[v.scope]
+ if t.values == nil {
+ t.values = values{}
+ }
+
+ switch expr.Kind {
+ case ASTKindExprStatement:
+ opExpr := expr.GetRoot()
+ switch opExpr.Kind {
+ case ASTKindEqualExpr:
+ children := opExpr.GetChildren()
+ if len(children) <= 1 {
+ return NewParseError("unexpected token type")
+ }
+
+ rhs := children[1]
+
+ if rhs.Root.Type() != TokenLit {
+ return NewParseError("unexpected token type")
+ }
+
+ key := EqualExprKey(opExpr)
+ v, err := newValue(rhs.Root.ValueType, rhs.Root.base, rhs.Root.Raw())
+ if err != nil {
+ return err
+ }
+
+ t.values[key] = v
+ default:
+ return NewParseError(fmt.Sprintf("unsupported expression %v", expr))
+ }
+ default:
+ return NewParseError(fmt.Sprintf("unsupported expression %v", expr))
+ }
+
+ v.Sections.container[v.scope] = t
+ return nil
+}
+
+// VisitStatement visits statements...
+func (v *DefaultVisitor) VisitStatement(stmt AST) error {
+ switch stmt.Kind {
+ case ASTKindCompletedSectionStatement:
+ child := stmt.GetRoot()
+ if child.Kind != ASTKindSectionStatement {
+ return NewParseError(fmt.Sprintf("unsupported child statement: %T", child))
+ }
+
+ name := string(child.Root.Raw())
+ v.Sections.container[name] = Section{}
+ v.scope = name
+ default:
+ return NewParseError(fmt.Sprintf("unsupported statement: %s", stmt.Kind))
+ }
+
+ return nil
+}
+
+// Sections is a map of Section structures that represent
+// a configuration.
+type Sections struct {
+ container map[string]Section
+}
+
+// GetSection will return section p. If section p does not exist,
+// false will be returned in the second parameter.
+func (t Sections) GetSection(p string) (Section, bool) {
+ v, ok := t.container[p]
+ return v, ok
+}
+
+// values represents a map of union values.
+type values map[string]Value
+
+// List will return a list of all sections that were successfully
+// parsed.
+func (t Sections) List() []string {
+ keys := make([]string, len(t.container))
+ i := 0
+ for k := range t.container {
+ keys[i] = k
+ i++
+ }
+
+ sort.Strings(keys)
+ return keys
+}
+
+// Section contains a name and values. This represent
+// a sectioned entry in a configuration file.
+type Section struct {
+ Name string
+ values values
+}
+
+// Has will return whether or not an entry exists in a given section
+func (t Section) Has(k string) bool {
+ _, ok := t.values[k]
+ return ok
+}
+
+// ValueType will returned what type the union is set to. If
+// k was not found, the NoneType will be returned.
+func (t Section) ValueType(k string) (ValueType, bool) {
+ v, ok := t.values[k]
+ return v.Type, ok
+}
+
+// Bool returns a bool value at k
+func (t Section) Bool(k string) bool {
+ return t.values[k].BoolValue()
+}
+
+// Int returns an integer value at k
+func (t Section) Int(k string) int64 {
+ return t.values[k].IntValue()
+}
+
+// Float64 returns a float value at k
+func (t Section) Float64(k string) float64 {
+ return t.values[k].FloatValue()
+}
+
+// String returns the string value at k
+func (t Section) String(k string) string {
+ _, ok := t.values[k]
+ if !ok {
+ return ""
+ }
+ return t.values[k].StringValue()
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go
new file mode 100644
index 00000000..99915f7f
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go
@@ -0,0 +1,25 @@
+package ini
+
+// Walk will traverse the AST using the v, the Visitor.
+func Walk(tree []AST, v Visitor) error {
+ for _, node := range tree {
+ switch node.Kind {
+ case ASTKindExpr,
+ ASTKindExprStatement:
+
+ if err := v.VisitExpr(node); err != nil {
+ return err
+ }
+ case ASTKindStatement,
+ ASTKindCompletedSectionStatement,
+ ASTKindNestedSectionStatement,
+ ASTKindCompletedNestedSectionStatement:
+
+ if err := v.VisitStatement(node); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go b/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go
new file mode 100644
index 00000000..7ffb4ae0
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go
@@ -0,0 +1,24 @@
+package ini
+
+import (
+ "unicode"
+)
+
+// isWhitespace will return whether or not the character is
+// a whitespace character.
+//
+// Whitespace is defined as a space or tab.
+func isWhitespace(c rune) bool {
+ return unicode.IsSpace(c) && c != '\n' && c != '\r'
+}
+
+func newWSToken(b []rune) (Token, int, error) {
+ i := 0
+ for ; i < len(b); i++ {
+ if !isWhitespace(b[i]) {
+ break
+ }
+ }
+
+ return newToken(TokenWS, b[:i], NoneType), i, nil
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go
new file mode 100644
index 00000000..7da8a49c
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go
@@ -0,0 +1,12 @@
+package shareddefaults
+
+const (
+ // ECSCredsProviderEnvVar is an environmental variable key used to
+ // determine which path needs to be hit.
+ ECSCredsProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+)
+
+// ECSContainerCredentialsURI is the endpoint to retrieve container
+// credentials. This can be overridden to test to ensure the credential process
+// is behaving correctly.
+var ECSContainerCredentialsURI = "http://169.254.170.2"
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
new file mode 100644
index 00000000..d7d42db0
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
@@ -0,0 +1,68 @@
+package protocol
+
+import (
+ "strings"
+
+ "github.com/aws/aws-sdk-go/aws/request"
+)
+
+// ValidateEndpointHostHandler is a request handler that will validate the
+// request endpoint's hosts is a valid RFC 3986 host.
+var ValidateEndpointHostHandler = request.NamedHandler{
+ Name: "awssdk.protocol.ValidateEndpointHostHandler",
+ Fn: func(r *request.Request) {
+ err := ValidateEndpointHost(r.Operation.Name, r.HTTPRequest.URL.Host)
+ if err != nil {
+ r.Error = err
+ }
+ },
+}
+
+// ValidateEndpointHost validates that the host string passed in is a valid RFC
+// 3986 host. Returns error if the host is not valid.
+func ValidateEndpointHost(opName, host string) error {
+ paramErrs := request.ErrInvalidParams{Context: opName}
+ labels := strings.Split(host, ".")
+
+ for i, label := range labels {
+ if i == len(labels)-1 && len(label) == 0 {
+ // Allow trailing dot for FQDN hosts.
+ continue
+ }
+
+ if !ValidHostLabel(label) {
+ paramErrs.Add(request.NewErrParamFormat(
+ "endpoint host label", "[a-zA-Z0-9-]{1,63}", label))
+ }
+ }
+
+ if len(host) > 255 {
+ paramErrs.Add(request.NewErrParamMaxLen(
+ "endpoint host", 255, host,
+ ))
+ }
+
+ if paramErrs.Len() > 0 {
+ return paramErrs
+ }
+ return nil
+}
+
+// ValidHostLabel returns if the label is a valid RFC 3986 host label.
+func ValidHostLabel(label string) bool {
+ if l := len(label); l == 0 || l > 63 {
+ return false
+ }
+ for _, r := range label {
+ switch {
+ case r >= '0' && r <= '9':
+ case r >= 'A' && r <= 'Z':
+ case r >= 'a' && r <= 'z':
+ case r == '-':
+ default:
+ return false
+ }
+ }
+
+ return true
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
new file mode 100644
index 00000000..915b0fca
--- /dev/null
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
@@ -0,0 +1,54 @@
+package protocol
+
+import (
+ "strings"
+
+ "github.com/aws/aws-sdk-go/aws"
+ "github.com/aws/aws-sdk-go/aws/request"
+)
+
+// HostPrefixHandlerName is the handler name for the host prefix request
+// handler.
+const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
+
+// NewHostPrefixHandler constructs a build handler
+func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {
+ builder := HostPrefixBuilder{
+ Prefix: prefix,
+ LabelsFn: labelsFn,
+ }
+
+ return request.NamedHandler{
+ Name: HostPrefixHandlerName,
+ Fn: builder.Build,
+ }
+}
+
+// HostPrefixBuilder provides the request handler to expand and prepend
+// the host prefix into the operation's request endpoint host.
+type HostPrefixBuilder struct {
+ Prefix string
+ LabelsFn func() map[string]string
+}
+
+// Build updates the passed in Request with the HostPrefix template expanded.
+func (h HostPrefixBuilder) Build(r *request.Request) {
+ if aws.BoolValue(r.Config.DisableEndpointHostPrefix) {
+ return
+ }
+
+ var labels map[string]string
+ if h.LabelsFn != nil {
+ labels = h.LabelsFn()
+ }
+
+ prefix := h.Prefix
+ for name, value := range labels {
+ prefix = strings.Replace(prefix, "{"+name+"}", value, -1)
+ }
+
+ r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host
+ if len(r.HTTPRequest.Host) > 0 {
+ r.HTTPRequest.Host = prefix + r.HTTPRequest.Host
+ }
+}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go
index 95155f6c..9a7ba27a 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go
@@ -7,7 +7,7 @@ package jsonrpc
import (
"encoding/json"
- "io/ioutil"
+ "io"
"strings"
"github.com/aws/aws-sdk-go/aws/awserr"
@@ -82,25 +82,17 @@ func UnmarshalMeta(req *request.Request) {
// UnmarshalError unmarshals an error response for a JSON RPC service.
func UnmarshalError(req *request.Request) {
defer req.HTTPResponse.Body.Close()
- bodyBytes, err := ioutil.ReadAll(req.HTTPResponse.Body)
- if err != nil {
- req.Error = awserr.NewRequestFailure(
- awserr.New("SerializationError", "failed reading JSON RPC error response", err),
- req.HTTPResponse.StatusCode,
- req.RequestID,
- )
- return
- }
- if len(bodyBytes) == 0 {
+
+ var jsonErr jsonErrorResponse
+ err := json.NewDecoder(req.HTTPResponse.Body).Decode(&jsonErr)
+ if err == io.EOF {
req.Error = awserr.NewRequestFailure(
awserr.New("SerializationError", req.HTTPResponse.Status, nil),
req.HTTPResponse.StatusCode,
req.RequestID,
)
return
- }
- var jsonErr jsonErrorResponse
- if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil {
+ } else if err != nil {
req.Error = awserr.NewRequestFailure(
awserr.New("SerializationError", "failed decoding JSON RPC error response", err),
req.HTTPResponse.StatusCode,
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
index 1bfe45f6..cf981fe9 100644
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
+++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
@@ -87,7 +87,7 @@ func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag refle
}
}
-// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested
+// buildStruct adds a struct and its fields to the current XMLNode. All fields and any nested
// types are converted to XMLNodes also.
func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
if !value.IsValid() {
diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
index 495f5321..62c1a7cc 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
@@ -18,7 +18,7 @@ const opAcceptReservedInstancesExchangeQuote = "AcceptReservedInstancesExchangeQ
// AcceptReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the
// client's request for the AcceptReservedInstancesExchangeQuote operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -88,12 +88,90 @@ func (c *EC2) AcceptReservedInstancesExchangeQuoteWithContext(ctx aws.Context, i
return out, req.Send()
}
+const opAcceptTransitGatewayVpcAttachment = "AcceptTransitGatewayVpcAttachment"
+
+// AcceptTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the
+// client's request for the AcceptTransitGatewayVpcAttachment operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AcceptTransitGatewayVpcAttachment for more information on using the AcceptTransitGatewayVpcAttachment
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AcceptTransitGatewayVpcAttachmentRequest method.
+// req, resp := client.AcceptTransitGatewayVpcAttachmentRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayVpcAttachment
+func (c *EC2) AcceptTransitGatewayVpcAttachmentRequest(input *AcceptTransitGatewayVpcAttachmentInput) (req *request.Request, output *AcceptTransitGatewayVpcAttachmentOutput) {
+ op := &request.Operation{
+ Name: opAcceptTransitGatewayVpcAttachment,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AcceptTransitGatewayVpcAttachmentInput{}
+ }
+
+ output = &AcceptTransitGatewayVpcAttachmentOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AcceptTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud.
+//
+// Accepts a request to attach a VPC to a transit gateway.
+//
+// The VPC attachment must be in the pendingAcceptance state. Use DescribeTransitGatewayVpcAttachments
+// to view your pending VPC attachment requests. Use RejectTransitGatewayVpcAttachment
+// to reject a VPC attachment request.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AcceptTransitGatewayVpcAttachment for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayVpcAttachment
+func (c *EC2) AcceptTransitGatewayVpcAttachment(input *AcceptTransitGatewayVpcAttachmentInput) (*AcceptTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.AcceptTransitGatewayVpcAttachmentRequest(input)
+ return out, req.Send()
+}
+
+// AcceptTransitGatewayVpcAttachmentWithContext is the same as AcceptTransitGatewayVpcAttachment with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AcceptTransitGatewayVpcAttachment for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AcceptTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *AcceptTransitGatewayVpcAttachmentInput, opts ...request.Option) (*AcceptTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.AcceptTransitGatewayVpcAttachmentRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAcceptVpcEndpointConnections = "AcceptVpcEndpointConnections"
// AcceptVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the AcceptVpcEndpointConnections operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -168,7 +246,7 @@ const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection"
// AcceptVpcPeeringConnectionRequest generates a "aws/request.Request" representing the
// client's request for the AcceptVpcPeeringConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -243,12 +321,101 @@ func (c *EC2) AcceptVpcPeeringConnectionWithContext(ctx aws.Context, input *Acce
return out, req.Send()
}
+const opAdvertiseByoipCidr = "AdvertiseByoipCidr"
+
+// AdvertiseByoipCidrRequest generates a "aws/request.Request" representing the
+// client's request for the AdvertiseByoipCidr operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AdvertiseByoipCidr for more information on using the AdvertiseByoipCidr
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AdvertiseByoipCidrRequest method.
+// req, resp := client.AdvertiseByoipCidrRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AdvertiseByoipCidr
+func (c *EC2) AdvertiseByoipCidrRequest(input *AdvertiseByoipCidrInput) (req *request.Request, output *AdvertiseByoipCidrOutput) {
+ op := &request.Operation{
+ Name: opAdvertiseByoipCidr,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AdvertiseByoipCidrInput{}
+ }
+
+ output = &AdvertiseByoipCidrOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AdvertiseByoipCidr API operation for Amazon Elastic Compute Cloud.
+//
+// Advertises an IPv4 address range that is provisioned for use with your AWS
+// resources through bring your own IP addresses (BYOIP).
+//
+// You can perform this operation at most once every 10 seconds, even if you
+// specify different address ranges each time.
+//
+// We recommend that you stop advertising the BYOIP CIDR from other locations
+// when you advertise it from AWS. To minimize down time, you can configure
+// your AWS resources to use an address from a BYOIP CIDR before it is advertised,
+// and then simultaneously stop advertising it from the current location and
+// start advertising it through AWS.
+//
+// It can take a few minutes before traffic to the specified addresses starts
+// routing to AWS because of BGP propagation delays.
+//
+// To stop advertising the BYOIP CIDR, use WithdrawByoipCidr.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AdvertiseByoipCidr for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AdvertiseByoipCidr
+func (c *EC2) AdvertiseByoipCidr(input *AdvertiseByoipCidrInput) (*AdvertiseByoipCidrOutput, error) {
+ req, out := c.AdvertiseByoipCidrRequest(input)
+ return out, req.Send()
+}
+
+// AdvertiseByoipCidrWithContext is the same as AdvertiseByoipCidr with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AdvertiseByoipCidr for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AdvertiseByoipCidrWithContext(ctx aws.Context, input *AdvertiseByoipCidrInput, opts ...request.Option) (*AdvertiseByoipCidrOutput, error) {
+ req, out := c.AdvertiseByoipCidrRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAllocateAddress = "AllocateAddress"
// AllocateAddressRequest generates a "aws/request.Request" representing the
// client's request for the AllocateAddress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -292,6 +459,13 @@ func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.
// After you release an Elastic IP address, it is released to the IP address
// pool and can be allocated to a different AWS account.
//
+// You can allocate an Elastic IP address from an address pool owned by AWS
+// or from an address pool created from a public IPv4 address range that you
+// have brought to AWS for use with your AWS resources using bring your own
+// IP addresses (BYOIP). For more information, see Bring Your Own IP Addresses
+// (BYOIP) (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+//
// [EC2-VPC] If you release an Elastic IP address, you might be able to recover
// it. You cannot recover an Elastic IP address that you released after it is
// allocated to another AWS account. You cannot recover an Elastic IP address
@@ -302,7 +476,7 @@ func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.
// a VPC. By default, you can allocate 5 Elastic IP addresses for EC2-Classic
// per region and 5 Elastic IP addresses for EC2-VPC per region.
//
-// For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
+// For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -338,7 +512,7 @@ const opAllocateHosts = "AllocateHosts"
// AllocateHostsRequest generates a "aws/request.Request" representing the
// client's request for the AllocateHosts operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -408,12 +582,88 @@ func (c *EC2) AllocateHostsWithContext(ctx aws.Context, input *AllocateHostsInpu
return out, req.Send()
}
+const opApplySecurityGroupsToClientVpnTargetNetwork = "ApplySecurityGroupsToClientVpnTargetNetwork"
+
+// ApplySecurityGroupsToClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the
+// client's request for the ApplySecurityGroupsToClientVpnTargetNetwork operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ApplySecurityGroupsToClientVpnTargetNetwork for more information on using the ApplySecurityGroupsToClientVpnTargetNetwork
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ApplySecurityGroupsToClientVpnTargetNetworkRequest method.
+// req, resp := client.ApplySecurityGroupsToClientVpnTargetNetworkRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ApplySecurityGroupsToClientVpnTargetNetwork
+func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetworkRequest(input *ApplySecurityGroupsToClientVpnTargetNetworkInput) (req *request.Request, output *ApplySecurityGroupsToClientVpnTargetNetworkOutput) {
+ op := &request.Operation{
+ Name: opApplySecurityGroupsToClientVpnTargetNetwork,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ApplySecurityGroupsToClientVpnTargetNetworkInput{}
+ }
+
+ output = &ApplySecurityGroupsToClientVpnTargetNetworkOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ApplySecurityGroupsToClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud.
+//
+// Applies a security group to the association between the target network and
+// the Client VPN endpoint. This action replaces the existing security groups
+// with the specified security groups.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ApplySecurityGroupsToClientVpnTargetNetwork for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ApplySecurityGroupsToClientVpnTargetNetwork
+func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetwork(input *ApplySecurityGroupsToClientVpnTargetNetworkInput) (*ApplySecurityGroupsToClientVpnTargetNetworkOutput, error) {
+ req, out := c.ApplySecurityGroupsToClientVpnTargetNetworkRequest(input)
+ return out, req.Send()
+}
+
+// ApplySecurityGroupsToClientVpnTargetNetworkWithContext is the same as ApplySecurityGroupsToClientVpnTargetNetwork with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ApplySecurityGroupsToClientVpnTargetNetwork for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ApplySecurityGroupsToClientVpnTargetNetworkWithContext(ctx aws.Context, input *ApplySecurityGroupsToClientVpnTargetNetworkInput, opts ...request.Option) (*ApplySecurityGroupsToClientVpnTargetNetworkOutput, error) {
+ req, out := c.ApplySecurityGroupsToClientVpnTargetNetworkRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAssignIpv6Addresses = "AssignIpv6Addresses"
// AssignIpv6AddressesRequest generates a "aws/request.Request" representing the
// client's request for the AssignIpv6Addresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -458,7 +708,7 @@ func (c *EC2) AssignIpv6AddressesRequest(input *AssignIpv6AddressesInput) (req *
// CIDR block range. You can assign as many IPv6 addresses to a network interface
// as you can assign private IPv4 addresses, and the limit varies per instance
// type. For information, see IP Addresses Per Network Interface Per Instance
-// Type (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)
+// Type (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -494,7 +744,7 @@ const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses"
// AssignPrivateIpAddressesRequest generates a "aws/request.Request" representing the
// client's request for the AssignPrivateIpAddresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -528,24 +778,30 @@ func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInp
output = &AssignPrivateIpAddressesOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
// AssignPrivateIpAddresses API operation for Amazon Elastic Compute Cloud.
//
// Assigns one or more secondary private IP addresses to the specified network
-// interface. You can specify one or more specific secondary IP addresses, or
-// you can specify the number of secondary IP addresses to be automatically
-// assigned within the subnet's CIDR block range. The number of secondary IP
-// addresses that you can assign to an instance varies by instance type. For
-// information about instance types, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
+// interface.
+//
+// You can specify one or more specific secondary IP addresses, or you can specify
+// the number of secondary IP addresses to be automatically assigned within
+// the subnet's CIDR block range. The number of secondary IP addresses that
+// you can assign to an instance varies by instance type. For information about
+// instance types, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
// in the Amazon Elastic Compute Cloud User Guide. For more information about
-// Elastic IP addresses, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
+// Elastic IP addresses, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
-// AssignPrivateIpAddresses is available only in EC2-VPC.
+// When you move a secondary private IP address to another network interface,
+// any Elastic IP address that is associated with the IP address is also moved.
+//
+// Remapping an IP address is an asynchronous operation. When you move an IP
+// address from one network interface to another, check network/interfaces/macs/mac/local-ipv4s
+// in the instance metadata to confirm that the remapping is complete.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -580,7 +836,7 @@ const opAssociateAddress = "AssociateAddress"
// AssociateAddressRequest generates a "aws/request.Request" representing the
// client's request for the AssociateAddress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -623,7 +879,7 @@ func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *reques
// Before you can use an Elastic IP address, you must allocate it to your account.
//
// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
+// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is
@@ -673,12 +929,90 @@ func (c *EC2) AssociateAddressWithContext(ctx aws.Context, input *AssociateAddre
return out, req.Send()
}
+const opAssociateClientVpnTargetNetwork = "AssociateClientVpnTargetNetwork"
+
+// AssociateClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the
+// client's request for the AssociateClientVpnTargetNetwork operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AssociateClientVpnTargetNetwork for more information on using the AssociateClientVpnTargetNetwork
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AssociateClientVpnTargetNetworkRequest method.
+// req, resp := client.AssociateClientVpnTargetNetworkRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateClientVpnTargetNetwork
+func (c *EC2) AssociateClientVpnTargetNetworkRequest(input *AssociateClientVpnTargetNetworkInput) (req *request.Request, output *AssociateClientVpnTargetNetworkOutput) {
+ op := &request.Operation{
+ Name: opAssociateClientVpnTargetNetwork,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AssociateClientVpnTargetNetworkInput{}
+ }
+
+ output = &AssociateClientVpnTargetNetworkOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AssociateClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud.
+//
+// Associates a target network with a Client VPN endpoint. A target network
+// is a subnet in a VPC. You can associate multiple subnets from the same VPC
+// with a Client VPN endpoint. You can associate only one subnet in each Availability
+// Zone. We recommend that you associate at least two subnets to provide Availability
+// Zone redundancy.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AssociateClientVpnTargetNetwork for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateClientVpnTargetNetwork
+func (c *EC2) AssociateClientVpnTargetNetwork(input *AssociateClientVpnTargetNetworkInput) (*AssociateClientVpnTargetNetworkOutput, error) {
+ req, out := c.AssociateClientVpnTargetNetworkRequest(input)
+ return out, req.Send()
+}
+
+// AssociateClientVpnTargetNetworkWithContext is the same as AssociateClientVpnTargetNetwork with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AssociateClientVpnTargetNetwork for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AssociateClientVpnTargetNetworkWithContext(ctx aws.Context, input *AssociateClientVpnTargetNetworkInput, opts ...request.Option) (*AssociateClientVpnTargetNetworkOutput, error) {
+ req, out := c.AssociateClientVpnTargetNetworkRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAssociateDhcpOptions = "AssociateDhcpOptions"
// AssociateDhcpOptionsRequest generates a "aws/request.Request" representing the
// client's request for the AssociateDhcpOptions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -712,8 +1046,7 @@ func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req
output = &AssociateDhcpOptionsOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -729,7 +1062,7 @@ func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req
// its DHCP lease. You can explicitly renew the lease using the operating system
// on the instance.
//
-// For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
+// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -765,7 +1098,7 @@ const opAssociateIamInstanceProfile = "AssociateIamInstanceProfile"
// AssociateIamInstanceProfileRequest generates a "aws/request.Request" representing the
// client's request for the AssociateIamInstanceProfile operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -840,7 +1173,7 @@ const opAssociateRouteTable = "AssociateRouteTable"
// AssociateRouteTableRequest generates a "aws/request.Request" representing the
// client's request for the AssociateRouteTable operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -885,7 +1218,7 @@ func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req *
// an association ID, which you need in order to disassociate the route table
// from the subnet later. A route table can be associated with multiple subnets.
//
-// For more information, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// For more information, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -921,7 +1254,7 @@ const opAssociateSubnetCidrBlock = "AssociateSubnetCidrBlock"
// AssociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the
// client's request for the AssociateSubnetCidrBlock operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -992,12 +1325,87 @@ func (c *EC2) AssociateSubnetCidrBlockWithContext(ctx aws.Context, input *Associ
return out, req.Send()
}
+const opAssociateTransitGatewayRouteTable = "AssociateTransitGatewayRouteTable"
+
+// AssociateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the
+// client's request for the AssociateTransitGatewayRouteTable operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AssociateTransitGatewayRouteTable for more information on using the AssociateTransitGatewayRouteTable
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AssociateTransitGatewayRouteTableRequest method.
+// req, resp := client.AssociateTransitGatewayRouteTableRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateTransitGatewayRouteTable
+func (c *EC2) AssociateTransitGatewayRouteTableRequest(input *AssociateTransitGatewayRouteTableInput) (req *request.Request, output *AssociateTransitGatewayRouteTableOutput) {
+ op := &request.Operation{
+ Name: opAssociateTransitGatewayRouteTable,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AssociateTransitGatewayRouteTableInput{}
+ }
+
+ output = &AssociateTransitGatewayRouteTableOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AssociateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud.
+//
+// Associates the specified attachment with the specified transit gateway route
+// table. You can associate only one route table with an attachment.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AssociateTransitGatewayRouteTable for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AssociateTransitGatewayRouteTable
+func (c *EC2) AssociateTransitGatewayRouteTable(input *AssociateTransitGatewayRouteTableInput) (*AssociateTransitGatewayRouteTableOutput, error) {
+ req, out := c.AssociateTransitGatewayRouteTableRequest(input)
+ return out, req.Send()
+}
+
+// AssociateTransitGatewayRouteTableWithContext is the same as AssociateTransitGatewayRouteTable with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AssociateTransitGatewayRouteTable for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AssociateTransitGatewayRouteTableWithContext(ctx aws.Context, input *AssociateTransitGatewayRouteTableInput, opts ...request.Option) (*AssociateTransitGatewayRouteTableOutput, error) {
+ req, out := c.AssociateTransitGatewayRouteTableRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAssociateVpcCidrBlock = "AssociateVpcCidrBlock"
// AssociateVpcCidrBlockRequest generates a "aws/request.Request" representing the
// client's request for the AssociateVpcCidrBlock operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1041,7 +1449,7 @@ func (c *EC2) AssociateVpcCidrBlockRequest(input *AssociateVpcCidrBlockInput) (r
// IPv6 CIDR block size is fixed at /56.
//
// For more information about associating CIDR blocks with your VPC and applicable
-// restrictions, see VPC and Subnet Sizing (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html#VPC_Sizing)
+// restrictions, see VPC and Subnet Sizing (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html#VPC_Sizing)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -1077,7 +1485,7 @@ const opAttachClassicLinkVpc = "AttachClassicLinkVpc"
// AttachClassicLinkVpcRequest generates a "aws/request.Request" representing the
// client's request for the AttachClassicLinkVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1162,7 +1570,7 @@ const opAttachInternetGateway = "AttachInternetGateway"
// AttachInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the AttachInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1196,8 +1604,7 @@ func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (r
output = &AttachInternetGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1205,7 +1612,7 @@ func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (r
//
// Attaches an internet gateway to a VPC, enabling connectivity between the
// internet and the VPC. For more information about your VPC and internet gateway,
-// see the Amazon Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
+// see the Amazon Virtual Private Cloud User Guide (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -1240,7 +1647,7 @@ const opAttachNetworkInterface = "AttachNetworkInterface"
// AttachNetworkInterfaceRequest generates a "aws/request.Request" representing the
// client's request for the AttachNetworkInterface operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1314,7 +1721,7 @@ const opAttachVolume = "AttachVolume"
// AttachVolumeRequest generates a "aws/request.Request" representing the
// client's request for the AttachVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1357,13 +1764,13 @@ func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Reques
// the instance with the specified device name.
//
// Encrypted EBS volumes may only be attached to instances that support Amazon
-// EBS encryption. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+// EBS encryption. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// For a list of supported device names, see Attaching an EBS Volume to an Instance
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html).
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html).
// Any device names that aren't reserved for instance store volumes can be used
-// for EBS volumes. For more information, see Amazon EC2 Instance Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)
+// for EBS volumes. For more information, see Amazon EC2 Instance Store (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// If a volume has an AWS Marketplace product code:
@@ -1379,7 +1786,7 @@ func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Reques
// and attach it to a Linux instance.
//
// For more information about EBS volumes, see Attaching Amazon EBS Volumes
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -1415,7 +1822,7 @@ const opAttachVpnGateway = "AttachVpnGateway"
// AttachVpnGatewayRequest generates a "aws/request.Request" representing the
// client's request for the AttachVpnGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1457,8 +1864,8 @@ func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *reques
// Attaches a virtual private gateway to a VPC. You can attach one virtual private
// gateway to one VPC at a time.
//
-// For more information, see AWS Managed VPN Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -1488,12 +1895,89 @@ func (c *EC2) AttachVpnGatewayWithContext(ctx aws.Context, input *AttachVpnGatew
return out, req.Send()
}
+const opAuthorizeClientVpnIngress = "AuthorizeClientVpnIngress"
+
+// AuthorizeClientVpnIngressRequest generates a "aws/request.Request" representing the
+// client's request for the AuthorizeClientVpnIngress operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AuthorizeClientVpnIngress for more information on using the AuthorizeClientVpnIngress
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the AuthorizeClientVpnIngressRequest method.
+// req, resp := client.AuthorizeClientVpnIngressRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeClientVpnIngress
+func (c *EC2) AuthorizeClientVpnIngressRequest(input *AuthorizeClientVpnIngressInput) (req *request.Request, output *AuthorizeClientVpnIngressOutput) {
+ op := &request.Operation{
+ Name: opAuthorizeClientVpnIngress,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &AuthorizeClientVpnIngressInput{}
+ }
+
+ output = &AuthorizeClientVpnIngressOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// AuthorizeClientVpnIngress API operation for Amazon Elastic Compute Cloud.
+//
+// Adds an ingress authorization rule to a Client VPN endpoint. Ingress authorization
+// rules act as firewall rules that grant access to networks. You must configure
+// ingress authorization rules to enable clients to access resources in AWS
+// or on-premises networks.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation AuthorizeClientVpnIngress for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AuthorizeClientVpnIngress
+func (c *EC2) AuthorizeClientVpnIngress(input *AuthorizeClientVpnIngressInput) (*AuthorizeClientVpnIngressOutput, error) {
+ req, out := c.AuthorizeClientVpnIngressRequest(input)
+ return out, req.Send()
+}
+
+// AuthorizeClientVpnIngressWithContext is the same as AuthorizeClientVpnIngress with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AuthorizeClientVpnIngress for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) AuthorizeClientVpnIngressWithContext(ctx aws.Context, input *AuthorizeClientVpnIngressInput, opts ...request.Option) (*AuthorizeClientVpnIngressOutput, error) {
+ req, out := c.AuthorizeClientVpnIngressRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress"
// AuthorizeSecurityGroupEgressRequest generates a "aws/request.Request" representing the
// client's request for the AuthorizeSecurityGroupEgress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1527,8 +2011,7 @@ func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupE
output = &AuthorizeSecurityGroupEgressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1539,9 +2022,9 @@ func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupE
// one or more destination IPv4 or IPv6 CIDR address ranges, or to one or more
// destination security groups for the same VPC. This action doesn't apply to
// security groups for use in EC2-Classic. For more information, see Security
-// Groups for Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
+// Groups for Your VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
// in the Amazon Virtual Private Cloud User Guide. For more information about
-// security group limits, see Amazon VPC Limits (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html).
+// security group limits, see Amazon VPC Limits (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html).
//
// Each rule consists of the protocol (for example, TCP), plus either a CIDR
// range or a source group. For the TCP and UDP protocols, you must also specify
@@ -1586,7 +2069,7 @@ const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress"
// AuthorizeSecurityGroupIngressRequest generates a "aws/request.Request" representing the
// client's request for the AuthorizeSecurityGroupIngress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1620,8 +2103,7 @@ func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroup
output = &AuthorizeSecurityGroupIngressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1643,7 +2125,7 @@ func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroup
// security groups (called the source groups) permission to access a security
// group for your VPC. The security groups must all be for the same VPC or a
// peer VPC in a VPC peering connection. For more information about VPC security
-// group limits, see Amazon VPC Limits (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html).
+// group limits, see Amazon VPC Limits (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html).
//
// You can optionally specify a description for the security group rule.
//
@@ -1680,7 +2162,7 @@ const opBundleInstance = "BundleInstance"
// BundleInstanceRequest generates a "aws/request.Request" representing the
// client's request for the BundleInstance operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1760,7 +2242,7 @@ const opCancelBundleTask = "CancelBundleTask"
// CancelBundleTaskRequest generates a "aws/request.Request" representing the
// client's request for the CancelBundleTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1829,12 +2311,93 @@ func (c *EC2) CancelBundleTaskWithContext(ctx aws.Context, input *CancelBundleTa
return out, req.Send()
}
+const opCancelCapacityReservation = "CancelCapacityReservation"
+
+// CancelCapacityReservationRequest generates a "aws/request.Request" representing the
+// client's request for the CancelCapacityReservation operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CancelCapacityReservation for more information on using the CancelCapacityReservation
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CancelCapacityReservationRequest method.
+// req, resp := client.CancelCapacityReservationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelCapacityReservation
+func (c *EC2) CancelCapacityReservationRequest(input *CancelCapacityReservationInput) (req *request.Request, output *CancelCapacityReservationOutput) {
+ op := &request.Operation{
+ Name: opCancelCapacityReservation,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CancelCapacityReservationInput{}
+ }
+
+ output = &CancelCapacityReservationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CancelCapacityReservation API operation for Amazon Elastic Compute Cloud.
+//
+// Cancels the specified Capacity Reservation, releases the reserved capacity,
+// and changes the Capacity Reservation's state to cancelled.
+//
+// Instances running in the reserved capacity continue running until you stop
+// them. Stopped instances that target the Capacity Reservation can no longer
+// launch. Modify these instances to either target a different Capacity Reservation,
+// launch On-Demand Instance capacity, or run in any open Capacity Reservation
+// that has matching attributes and sufficient capacity.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CancelCapacityReservation for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CancelCapacityReservation
+func (c *EC2) CancelCapacityReservation(input *CancelCapacityReservationInput) (*CancelCapacityReservationOutput, error) {
+ req, out := c.CancelCapacityReservationRequest(input)
+ return out, req.Send()
+}
+
+// CancelCapacityReservationWithContext is the same as CancelCapacityReservation with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CancelCapacityReservation for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CancelCapacityReservationWithContext(ctx aws.Context, input *CancelCapacityReservationInput, opts ...request.Option) (*CancelCapacityReservationOutput, error) {
+ req, out := c.CancelCapacityReservationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opCancelConversionTask = "CancelConversionTask"
// CancelConversionTaskRequest generates a "aws/request.Request" representing the
// client's request for the CancelConversionTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1868,8 +2431,7 @@ func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req
output = &CancelConversionTaskOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1882,7 +2444,7 @@ func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req
// and returns an exception.
//
// For more information, see Importing a Virtual Machine Using the Amazon EC2
-// CLI (http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html).
+// CLI (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -1917,7 +2479,7 @@ const opCancelExportTask = "CancelExportTask"
// CancelExportTaskRequest generates a "aws/request.Request" representing the
// client's request for the CancelExportTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1951,8 +2513,7 @@ func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *reques
output = &CancelExportTaskOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1996,7 +2557,7 @@ const opCancelImportTask = "CancelImportTask"
// CancelImportTaskRequest generates a "aws/request.Request" representing the
// client's request for the CancelImportTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2070,7 +2631,7 @@ const opCancelReservedInstancesListing = "CancelReservedInstancesListing"
// CancelReservedInstancesListingRequest generates a "aws/request.Request" representing the
// client's request for the CancelReservedInstancesListing operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2112,7 +2673,7 @@ func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstanc
// Cancels the specified Reserved Instance listing in the Reserved Instance
// Marketplace.
//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
+// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -2148,7 +2709,7 @@ const opCancelSpotFleetRequests = "CancelSpotFleetRequests"
// CancelSpotFleetRequestsRequest generates a "aws/request.Request" representing the
// client's request for the CancelSpotFleetRequests operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2229,7 +2790,7 @@ const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests"
// CancelSpotInstanceRequestsRequest generates a "aws/request.Request" representing the
// client's request for the CancelSpotInstanceRequests operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2306,7 +2867,7 @@ const opConfirmProductInstance = "ConfirmProductInstance"
// ConfirmProductInstanceRequest generates a "aws/request.Request" representing the
// client's request for the ConfirmProductInstance operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2382,7 +2943,7 @@ const opCopyFpgaImage = "CopyFpgaImage"
// CopyFpgaImageRequest generates a "aws/request.Request" representing the
// client's request for the CopyFpgaImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2456,7 +3017,7 @@ const opCopyImage = "CopyImage"
// CopyImageRequest generates a "aws/request.Request" representing the
// client's request for the CopyImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2505,7 +3066,7 @@ func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, out
// backing snapshot.
//
// For more information about the prerequisites and limits when copying an AMI,
-// see Copying an AMI (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html)
+// see Copying an AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -2541,7 +3102,7 @@ const opCopySnapshot = "CopySnapshot"
// CopySnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CopySnapshot operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2598,7 +3159,7 @@ func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Reques
// Snapshots created by copying another snapshot have an arbitrary volume ID
// that should not be used for any purpose.
//
-// For more information, see Copying an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)
+// For more information, see Copying an Amazon EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -2629,12 +3190,262 @@ func (c *EC2) CopySnapshotWithContext(ctx aws.Context, input *CopySnapshotInput,
return out, req.Send()
}
+const opCreateCapacityReservation = "CreateCapacityReservation"
+
+// CreateCapacityReservationRequest generates a "aws/request.Request" representing the
+// client's request for the CreateCapacityReservation operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateCapacityReservation for more information on using the CreateCapacityReservation
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateCapacityReservationRequest method.
+// req, resp := client.CreateCapacityReservationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCapacityReservation
+func (c *EC2) CreateCapacityReservationRequest(input *CreateCapacityReservationInput) (req *request.Request, output *CreateCapacityReservationOutput) {
+ op := &request.Operation{
+ Name: opCreateCapacityReservation,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateCapacityReservationInput{}
+ }
+
+ output = &CreateCapacityReservationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateCapacityReservation API operation for Amazon Elastic Compute Cloud.
+//
+// Creates a new Capacity Reservation with the specified attributes.
+//
+// Capacity Reservations enable you to reserve capacity for your Amazon EC2
+// instances in a specific Availability Zone for any duration. This gives you
+// the flexibility to selectively add capacity reservations and still get the
+// Regional RI discounts for that usage. By creating Capacity Reservations,
+// you ensure that you always have access to Amazon EC2 capacity when you need
+// it, for as long as you need it. For more information, see Capacity Reservations
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+//
+// Your request to create a Capacity Reservation could fail if Amazon EC2 does
+// not have sufficient capacity to fulfill the request. If your request fails
+// due to Amazon EC2 capacity constraints, either try again at a later time,
+// try in a different Availability Zone, or request a smaller capacity reservation.
+// If your application is flexible across instance types and sizes, try to create
+// a Capacity Reservation with different instance attributes.
+//
+// Your request could also fail if the requested quantity exceeds your On-Demand
+// Instance limit for the selected instance type. If your request fails due
+// to limit constraints, increase your On-Demand Instance limit for the required
+// instance type and try again. For more information about increasing your instance
+// limits, see Amazon EC2 Service Limits (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateCapacityReservation for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCapacityReservation
+func (c *EC2) CreateCapacityReservation(input *CreateCapacityReservationInput) (*CreateCapacityReservationOutput, error) {
+ req, out := c.CreateCapacityReservationRequest(input)
+ return out, req.Send()
+}
+
+// CreateCapacityReservationWithContext is the same as CreateCapacityReservation with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateCapacityReservation for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateCapacityReservationWithContext(ctx aws.Context, input *CreateCapacityReservationInput, opts ...request.Option) (*CreateCapacityReservationOutput, error) {
+ req, out := c.CreateCapacityReservationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opCreateClientVpnEndpoint = "CreateClientVpnEndpoint"
+
+// CreateClientVpnEndpointRequest generates a "aws/request.Request" representing the
+// client's request for the CreateClientVpnEndpoint operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateClientVpnEndpoint for more information on using the CreateClientVpnEndpoint
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateClientVpnEndpointRequest method.
+// req, resp := client.CreateClientVpnEndpointRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnEndpoint
+func (c *EC2) CreateClientVpnEndpointRequest(input *CreateClientVpnEndpointInput) (req *request.Request, output *CreateClientVpnEndpointOutput) {
+ op := &request.Operation{
+ Name: opCreateClientVpnEndpoint,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateClientVpnEndpointInput{}
+ }
+
+ output = &CreateClientVpnEndpointOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateClientVpnEndpoint API operation for Amazon Elastic Compute Cloud.
+//
+// Creates a Client VPN endpoint. A Client VPN endpoint is the resource you
+// create and configure to enable and manage client VPN sessions. It is the
+// destination endpoint at which all client VPN sessions are terminated.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateClientVpnEndpoint for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnEndpoint
+func (c *EC2) CreateClientVpnEndpoint(input *CreateClientVpnEndpointInput) (*CreateClientVpnEndpointOutput, error) {
+ req, out := c.CreateClientVpnEndpointRequest(input)
+ return out, req.Send()
+}
+
+// CreateClientVpnEndpointWithContext is the same as CreateClientVpnEndpoint with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateClientVpnEndpoint for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateClientVpnEndpointWithContext(ctx aws.Context, input *CreateClientVpnEndpointInput, opts ...request.Option) (*CreateClientVpnEndpointOutput, error) {
+ req, out := c.CreateClientVpnEndpointRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opCreateClientVpnRoute = "CreateClientVpnRoute"
+
+// CreateClientVpnRouteRequest generates a "aws/request.Request" representing the
+// client's request for the CreateClientVpnRoute operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateClientVpnRoute for more information on using the CreateClientVpnRoute
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateClientVpnRouteRequest method.
+// req, resp := client.CreateClientVpnRouteRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnRoute
+func (c *EC2) CreateClientVpnRouteRequest(input *CreateClientVpnRouteInput) (req *request.Request, output *CreateClientVpnRouteOutput) {
+ op := &request.Operation{
+ Name: opCreateClientVpnRoute,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateClientVpnRouteInput{}
+ }
+
+ output = &CreateClientVpnRouteOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateClientVpnRoute API operation for Amazon Elastic Compute Cloud.
+//
+// Adds a route to a network to a Client VPN endpoint. Each Client VPN endpoint
+// has a route table that describes the available destination network routes.
+// Each route in the route table specifies the path for traffic to specific resources
+// or networks.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateClientVpnRoute for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateClientVpnRoute
+func (c *EC2) CreateClientVpnRoute(input *CreateClientVpnRouteInput) (*CreateClientVpnRouteOutput, error) {
+ req, out := c.CreateClientVpnRouteRequest(input)
+ return out, req.Send()
+}
+
+// CreateClientVpnRouteWithContext is the same as CreateClientVpnRoute with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateClientVpnRoute for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateClientVpnRouteWithContext(ctx aws.Context, input *CreateClientVpnRouteInput, opts ...request.Option) (*CreateClientVpnRouteOutput, error) {
+ req, out := c.CreateClientVpnRouteRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opCreateCustomerGateway = "CreateCustomerGateway"
// CreateCustomerGatewayRequest generates a "aws/request.Request" representing the
// client's request for the CreateCustomerGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2689,9 +3500,8 @@ func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (r
// the exception of 7224, which is reserved in the us-east-1 region, and 9059,
// which is reserved in the eu-west-1 region.
//
-// For more information about VPN customer gateways, see AWS Managed VPN Connections
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the
-// Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// You cannot create more than one customer gateway with the same VPN type,
// IP address, and BGP ASN parameter values. If you run an identical request
@@ -2732,7 +3542,7 @@ const opCreateDefaultSubnet = "CreateDefaultSubnet"
// CreateDefaultSubnetRequest generates a "aws/request.Request" representing the
// client's request for the CreateDefaultSubnet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2774,7 +3584,7 @@ func (c *EC2) CreateDefaultSubnetRequest(input *CreateDefaultSubnetInput) (req *
// Creates a default subnet with a size /20 IPv4 CIDR block in the specified
// Availability Zone in your default VPC. You can have only one default subnet
// per Availability Zone. For more information, see Creating a Default Subnet
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html#create-default-subnet)
+// (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html#create-default-subnet)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -2810,7 +3620,7 @@ const opCreateDefaultVpc = "CreateDefaultVpc"
// CreateDefaultVpcRequest generates a "aws/request.Request" representing the
// client's request for the CreateDefaultVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2851,7 +3661,7 @@ func (c *EC2) CreateDefaultVpcRequest(input *CreateDefaultVpcInput) (req *reques
//
// Creates a default VPC with a size /16 IPv4 CIDR block and a default subnet
// in each Availability Zone. For more information about the components of a
-// default VPC, see Default VPC and Default Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html)
+// default VPC, see Default VPC and Default Subnets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html)
// in the Amazon Virtual Private Cloud User Guide. You cannot specify the components
// of the default VPC yourself.
//
@@ -2896,7 +3706,7 @@ const opCreateDhcpOptions = "CreateDhcpOptions"
// CreateDhcpOptionsRequest generates a "aws/request.Request" representing the
// client's request for the CreateDhcpOptions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2972,7 +3782,7 @@ func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *requ
// only a DNS server that we provide (AmazonProvidedDNS). If you create a set
// of options, and if your VPC has an internet gateway, make sure to set the
// domain-name-servers option either to AmazonProvidedDNS or to a domain name
-// server of your choice. For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
+// server of your choice. For more information, see DHCP Options Sets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3008,7 +3818,7 @@ const opCreateEgressOnlyInternetGateway = "CreateEgressOnlyInternetGateway"
// CreateEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the CreateEgressOnlyInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3085,7 +3895,7 @@ const opCreateFleet = "CreateFleet"
// CreateFleetRequest generates a "aws/request.Request" representing the
// client's request for the CreateFleet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3129,7 +3939,7 @@ func (c *EC2) CreateFleetRequest(input *CreateFleetInput) (req *request.Request,
// You can create a single EC2 Fleet that includes multiple launch specifications
// that vary by instance type, AMI, Availability Zone, or subnet.
//
-// For more information, see Launching an EC2 Fleet (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html)
+// For more information, see Launching an EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3165,7 +3975,7 @@ const opCreateFlowLogs = "CreateFlowLogs"
// CreateFlowLogsRequest generates a "aws/request.Request" representing the
// client's request for the CreateFlowLogs operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3209,7 +4019,7 @@ func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Re
//
// Flow log data for a monitored network interface is recorded as flow log records,
// which are log events consisting of fields that describe the traffic flow.
-// For more information, see Flow Log Records (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html#flow-log-records)
+// For more information, see Flow Log Records (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html#flow-log-records)
// in the Amazon Virtual Private Cloud User Guide.
//
// When publishing to CloudWatch Logs, flow log records are published to a log
@@ -3218,7 +4028,7 @@ func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Re
// interfaces are published to a single log file object that is stored in the
// specified bucket.
//
-// For more information, see VPC Flow Logs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html)
+// For more information, see VPC Flow Logs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3254,7 +4064,7 @@ const opCreateFpgaImage = "CreateFpgaImage"
// CreateFpgaImageRequest generates a "aws/request.Request" representing the
// client's request for the CreateFpgaImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3335,7 +4145,7 @@ const opCreateImage = "CreateImage"
// CreateImageRequest generates a "aws/request.Request" representing the
// client's request for the CreateImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3382,7 +4192,7 @@ func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request,
// mapping information for those volumes. When you launch an instance from this
// new AMI, the instance automatically launches with those additional volumes.
//
-// For more information, see Creating Amazon EBS-Backed Linux AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
+// For more information, see Creating Amazon EBS-Backed Linux AMIs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3418,7 +4228,7 @@ const opCreateInstanceExportTask = "CreateInstanceExportTask"
// CreateInstanceExportTaskRequest generates a "aws/request.Request" representing the
// client's request for the CreateInstanceExportTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3461,7 +4271,7 @@ func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInp
//
// For information about the supported operating systems, image formats, and
// known limitations for the types of instances you can export, see Exporting
-// an Instance as a VM Using VM Import/Export (http://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html)
+// an Instance as a VM Using VM Import/Export (https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html)
// in the VM Import/Export User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3497,7 +4307,7 @@ const opCreateInternetGateway = "CreateInternetGateway"
// CreateInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the CreateInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3540,7 +4350,7 @@ func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (r
// gateway, you attach it to a VPC using AttachInternetGateway.
//
// For more information about your VPC and internet gateway, see the Amazon
-// Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
+// Virtual Private Cloud User Guide (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -3575,7 +4385,7 @@ const opCreateKeyPair = "CreateKeyPair"
// CreateKeyPairRequest generates a "aws/request.Request" representing the
// client's request for the CreateKeyPair operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3625,7 +4435,7 @@ func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Requ
// create it. If you prefer, you can create your own key pair using a third-party
// tool and upload it to any region using ImportKeyPair.
//
-// For more information, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+// For more information, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3661,7 +4471,7 @@ const opCreateLaunchTemplate = "CreateLaunchTemplate"
// CreateLaunchTemplateRequest generates a "aws/request.Request" representing the
// client's request for the CreateLaunchTemplate operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3737,7 +4547,7 @@ const opCreateLaunchTemplateVersion = "CreateLaunchTemplateVersion"
// CreateLaunchTemplateVersionRequest generates a "aws/request.Request" representing the
// client's request for the CreateLaunchTemplateVersion operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3815,7 +4625,7 @@ const opCreateNatGateway = "CreateNatGateway"
// CreateNatGatewayRequest generates a "aws/request.Request" representing the
// client's request for the CreateNatGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3859,7 +4669,7 @@ func (c *EC2) CreateNatGatewayRequest(input *CreateNatGatewayInput) (req *reques
// the IP address range of the subnet. Internet-bound traffic from a private
// subnet can be routed to the NAT gateway, therefore enabling instances in
// the private subnet to connect to the internet. For more information, see
-// NAT Gateways (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html)
+// NAT Gateways (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3895,7 +4705,7 @@ const opCreateNetworkAcl = "CreateNetworkAcl"
// CreateNetworkAclRequest generates a "aws/request.Request" representing the
// client's request for the CreateNetworkAcl operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3937,7 +4747,7 @@ func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *reques
// Creates a network ACL in a VPC. Network ACLs provide an optional layer of
// security (in addition to security groups) for the instances in your VPC.
//
-// For more information, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
+// For more information, see Network ACLs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -3973,7 +4783,7 @@ const opCreateNetworkAclEntry = "CreateNetworkAclEntry"
// CreateNetworkAclEntryRequest generates a "aws/request.Request" representing the
// client's request for the CreateNetworkAclEntry operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4007,8 +4817,7 @@ func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (r
output = &CreateNetworkAclEntryOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -4029,7 +4838,7 @@ func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (r
// After you add an entry, you can't modify it; you must either replace it,
// or create an entry and delete the old one.
//
-// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
+// For more information about network ACLs, see Network ACLs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4065,7 +4874,7 @@ const opCreateNetworkInterface = "CreateNetworkInterface"
// CreateNetworkInterfaceRequest generates a "aws/request.Request" representing the
// client's request for the CreateNetworkInterface operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4107,7 +4916,7 @@ func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput)
// Creates a network interface in the specified subnet.
//
// For more information about network interfaces, see Elastic Network Interfaces
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) in the
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) in the
// Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4143,7 +4952,7 @@ const opCreateNetworkInterfacePermission = "CreateNetworkInterfacePermission"
// CreateNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the
// client's request for the CreateNetworkInterfacePermission operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4221,7 +5030,7 @@ const opCreatePlacementGroup = "CreatePlacementGroup"
// CreatePlacementGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreatePlacementGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4255,8 +5064,7 @@ func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req
output = &CreatePlacementGroupOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -4267,9 +5075,12 @@ func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req
//
// A cluster placement group is a logical grouping of instances within a single
// Availability Zone that benefit from low network latency, high network throughput.
-// A spread placement group places instances on distinct hardware.
+// A spread placement group places instances on distinct hardware. A partition
+// placement group places groups of instances in different partitions, where
+// instances in one partition do not share the same hardware with instances
+// in another partition.
//
-// For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
+// For more information, see Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4305,7 +5116,7 @@ const opCreateReservedInstancesListing = "CreateReservedInstancesListing"
// CreateReservedInstancesListingRequest generates a "aws/request.Request" representing the
// client's request for the CreateReservedInstancesListing operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4366,7 +5177,7 @@ func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstanc
// for purchase. To view the details of your Standard Reserved Instance listing,
// you can use the DescribeReservedInstancesListings operation.
//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
+// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4402,7 +5213,7 @@ const opCreateRoute = "CreateRoute"
// CreateRouteRequest generates a "aws/request.Request" representing the
// client's request for the CreateRoute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4459,7 +5270,7 @@ func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request,
// route in the list covers a smaller number of IP addresses and is therefore
// more specific, so we use that route to determine where to target the traffic.
//
-// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// For more information about route tables, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4495,7 +5306,7 @@ const opCreateRouteTable = "CreateRouteTable"
// CreateRouteTableRequest generates a "aws/request.Request" representing the
// client's request for the CreateRouteTable operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4537,7 +5348,7 @@ func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *reques
// Creates a route table for the specified VPC. After you create a route table,
// you can add routes and associate the table with a subnet.
//
-// For more information, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// For more information, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4573,7 +5384,7 @@ const opCreateSecurityGroup = "CreateSecurityGroup"
// CreateSecurityGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateSecurityGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4616,9 +5427,9 @@ func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req *
//
// A security group is for use with instances either in the EC2-Classic platform
// or in a specific VPC. For more information, see Amazon EC2 Security Groups
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your
-// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
+// VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// EC2-Classic: You can have up to 500 security groups.
@@ -4673,7 +5484,7 @@ const opCreateSnapshot = "CreateSnapshot"
// CreateSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CreateSnapshot operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4738,11 +5549,11 @@ func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Re
// protected.
//
// You can tag your snapshots during creation. For more information, see Tagging
-// Your Amazon EC2 Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
+// Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
-// For more information, see Amazon Elastic Block Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)
-// and Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+// For more information, see Amazon Elastic Block Store (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)
+// and Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4778,7 +5589,7 @@ const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription"
// CreateSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the CreateSpotDatafeedSubscription operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4819,7 +5630,7 @@ func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSub
//
// Creates a data feed for Spot Instances, enabling you to view Spot Instance
// usage logs. You can create one data feed per AWS account. For more information,
-// see Spot Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
+// see Spot Instance Data Feed (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4855,7 +5666,7 @@ const opCreateSubnet = "CreateSubnet"
// CreateSubnetRequest generates a "aws/request.Request" representing the
// client's request for the CreateSubnet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4919,7 +5730,7 @@ func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Reques
// It's therefore possible to have a subnet with no running instances (they're
// all stopped), but no remaining IP addresses available.
//
-// For more information about subnets, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
+// For more information about subnets, see Your VPC and Subnets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -4955,7 +5766,7 @@ const opCreateTags = "CreateTags"
// CreateTagsRequest generates a "aws/request.Request" representing the
// client's request for the CreateTags operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4989,8 +5800,7 @@ func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, o
output = &CreateTagsOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -5000,10 +5810,10 @@ func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, o
// or resources. Each resource can have a maximum of 50 tags. Each tag consists
// of a key and optional value. Tag keys must be unique per resource.
//
-// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
+// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon Elastic Compute Cloud User Guide. For more information about
// creating IAM policies that control users' access to resources based on tags,
-// see Supported Resource-Level Permissions for Amazon EC2 API Actions (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html)
+// see Supported Resource-Level Permissions for Amazon EC2 API Actions (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -5034,12 +5844,334 @@ func (c *EC2) CreateTagsWithContext(ctx aws.Context, input *CreateTagsInput, opt
return out, req.Send()
}
+const opCreateTransitGateway = "CreateTransitGateway"
+
+// CreateTransitGatewayRequest generates a "aws/request.Request" representing the
+// client's request for the CreateTransitGateway operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateTransitGateway for more information on using the CreateTransitGateway
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateTransitGatewayRequest method.
+// req, resp := client.CreateTransitGatewayRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGateway
+func (c *EC2) CreateTransitGatewayRequest(input *CreateTransitGatewayInput) (req *request.Request, output *CreateTransitGatewayOutput) {
+ op := &request.Operation{
+ Name: opCreateTransitGateway,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateTransitGatewayInput{}
+ }
+
+ output = &CreateTransitGatewayOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateTransitGateway API operation for Amazon Elastic Compute Cloud.
+//
+// Creates a transit gateway.
+//
+// You can use a transit gateway to interconnect your virtual private clouds
+// (VPC) and on-premises networks. After the transit gateway enters the available
+// state, you can attach your VPCs and VPN connections to the transit gateway.
+//
+// To attach your VPCs, use CreateTransitGatewayVpcAttachment.
+//
+// To attach a VPN connection, use CreateCustomerGateway to create a customer
+// gateway and specify the ID of the customer gateway and the ID of the transit
+// gateway in a call to CreateVpnConnection.
+//
+// When you create a transit gateway, we create a default transit gateway route
+// table and use it as the default association route table and the default propagation
+// route table. You can use CreateTransitGatewayRouteTable to create additional
+// transit gateway route tables. If you disable automatic route propagation,
+// we do not create a default transit gateway route table. You can use EnableTransitGatewayRouteTablePropagation
+// to propagate routes from a resource attachment to a transit gateway route
+// table. If you disable automatic associations, you can use AssociateTransitGatewayRouteTable
+// to associate a resource attachment with a transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateTransitGateway for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGateway
+func (c *EC2) CreateTransitGateway(input *CreateTransitGatewayInput) (*CreateTransitGatewayOutput, error) {
+ req, out := c.CreateTransitGatewayRequest(input)
+ return out, req.Send()
+}
+
+// CreateTransitGatewayWithContext is the same as CreateTransitGateway with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateTransitGateway for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateTransitGatewayWithContext(ctx aws.Context, input *CreateTransitGatewayInput, opts ...request.Option) (*CreateTransitGatewayOutput, error) {
+ req, out := c.CreateTransitGatewayRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opCreateTransitGatewayRoute = "CreateTransitGatewayRoute"
+
+// CreateTransitGatewayRouteRequest generates a "aws/request.Request" representing the
+// client's request for the CreateTransitGatewayRoute operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateTransitGatewayRoute for more information on using the CreateTransitGatewayRoute
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateTransitGatewayRouteRequest method.
+// req, resp := client.CreateTransitGatewayRouteRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRoute
+func (c *EC2) CreateTransitGatewayRouteRequest(input *CreateTransitGatewayRouteInput) (req *request.Request, output *CreateTransitGatewayRouteOutput) {
+ op := &request.Operation{
+ Name: opCreateTransitGatewayRoute,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateTransitGatewayRouteInput{}
+ }
+
+ output = &CreateTransitGatewayRouteOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateTransitGatewayRoute API operation for Amazon Elastic Compute Cloud.
+//
+// Creates a static route for the specified transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateTransitGatewayRoute for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRoute
+func (c *EC2) CreateTransitGatewayRoute(input *CreateTransitGatewayRouteInput) (*CreateTransitGatewayRouteOutput, error) {
+ req, out := c.CreateTransitGatewayRouteRequest(input)
+ return out, req.Send()
+}
+
+// CreateTransitGatewayRouteWithContext is the same as CreateTransitGatewayRoute with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateTransitGatewayRoute for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateTransitGatewayRouteWithContext(ctx aws.Context, input *CreateTransitGatewayRouteInput, opts ...request.Option) (*CreateTransitGatewayRouteOutput, error) {
+ req, out := c.CreateTransitGatewayRouteRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opCreateTransitGatewayRouteTable = "CreateTransitGatewayRouteTable"
+
+// CreateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the
+// client's request for the CreateTransitGatewayRouteTable operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateTransitGatewayRouteTable for more information on using the CreateTransitGatewayRouteTable
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateTransitGatewayRouteTableRequest method.
+// req, resp := client.CreateTransitGatewayRouteTableRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRouteTable
+func (c *EC2) CreateTransitGatewayRouteTableRequest(input *CreateTransitGatewayRouteTableInput) (req *request.Request, output *CreateTransitGatewayRouteTableOutput) {
+ op := &request.Operation{
+ Name: opCreateTransitGatewayRouteTable,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateTransitGatewayRouteTableInput{}
+ }
+
+ output = &CreateTransitGatewayRouteTableOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud.
+//
+// Creates a route table for the specified transit gateway.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateTransitGatewayRouteTable for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayRouteTable
+func (c *EC2) CreateTransitGatewayRouteTable(input *CreateTransitGatewayRouteTableInput) (*CreateTransitGatewayRouteTableOutput, error) {
+ req, out := c.CreateTransitGatewayRouteTableRequest(input)
+ return out, req.Send()
+}
+
+// CreateTransitGatewayRouteTableWithContext is the same as CreateTransitGatewayRouteTable with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateTransitGatewayRouteTable for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateTransitGatewayRouteTableWithContext(ctx aws.Context, input *CreateTransitGatewayRouteTableInput, opts ...request.Option) (*CreateTransitGatewayRouteTableOutput, error) {
+ req, out := c.CreateTransitGatewayRouteTableRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opCreateTransitGatewayVpcAttachment = "CreateTransitGatewayVpcAttachment"
+
+// CreateTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the
+// client's request for the CreateTransitGatewayVpcAttachment operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateTransitGatewayVpcAttachment for more information on using the CreateTransitGatewayVpcAttachment
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CreateTransitGatewayVpcAttachmentRequest method.
+// req, resp := client.CreateTransitGatewayVpcAttachmentRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayVpcAttachment
+func (c *EC2) CreateTransitGatewayVpcAttachmentRequest(input *CreateTransitGatewayVpcAttachmentInput) (req *request.Request, output *CreateTransitGatewayVpcAttachmentOutput) {
+ op := &request.Operation{
+ Name: opCreateTransitGatewayVpcAttachment,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CreateTransitGatewayVpcAttachmentInput{}
+ }
+
+ output = &CreateTransitGatewayVpcAttachmentOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CreateTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud.
+//
+// Attaches the specified VPC to the specified transit gateway.
+//
+// If you attach a VPC with a CIDR range that overlaps the CIDR range of a VPC
+// that is already attached, the new VPC CIDR range is not propagated to the
+// default propagation route table.
+//
+// To send VPC traffic to an attached transit gateway, add a route to the VPC
+// route table using CreateRoute.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation CreateTransitGatewayVpcAttachment for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayVpcAttachment
+func (c *EC2) CreateTransitGatewayVpcAttachment(input *CreateTransitGatewayVpcAttachmentInput) (*CreateTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.CreateTransitGatewayVpcAttachmentRequest(input)
+ return out, req.Send()
+}
+
+// CreateTransitGatewayVpcAttachmentWithContext is the same as CreateTransitGatewayVpcAttachment with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateTransitGatewayVpcAttachment for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) CreateTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *CreateTransitGatewayVpcAttachmentInput, opts ...request.Option) (*CreateTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.CreateTransitGatewayVpcAttachmentRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opCreateVolume = "CreateVolume"
// CreateVolumeRequest generates a "aws/request.Request" representing the
// client's request for the CreateVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5080,7 +6212,7 @@ func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Reques
//
// Creates an EBS volume that can be attached to an instance in the same Availability
// Zone. The volume is created in the regional endpoint that you send the HTTP
-// request to. For more information see Regions and Endpoints (http://docs.aws.amazon.com/general/latest/gr/rande.html).
+// request to. For more information see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html).
//
// You can create a new empty volume or restore a volume from an EBS snapshot.
// Any AWS Marketplace product codes from the snapshot are propagated to the
@@ -5089,14 +6221,14 @@ func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Reques
// You can create encrypted volumes with the Encrypted parameter. Encrypted
// volumes may only be attached to instances that support Amazon EBS encryption.
// Volumes that are created from encrypted snapshots are also automatically
-// encrypted. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+// encrypted. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// You can tag your volumes during creation. For more information, see Tagging
-// Your Amazon EC2 Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
+// Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
-// For more information, see Creating an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)
+// For more information, see Creating an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -5132,7 +6264,7 @@ const opCreateVpc = "CreateVpc"
// CreateVpcRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5174,7 +6306,7 @@ func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, out
// Creates a VPC with the specified IPv4 CIDR block. The smallest VPC you can
// create uses a /28 netmask (16 IPv4 addresses), and the largest uses a /16
// netmask (65,536 IPv4 addresses). For more information about how large to
-// make your VPC, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
+// make your VPC, see Your VPC and Subnets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// You can optionally request an Amazon-provided IPv6 CIDR block for the VPC.
@@ -5183,12 +6315,12 @@ func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, out
//
// By default, each instance you launch in the VPC has the default DHCP options,
// which include only a default DNS server that we provide (AmazonProvidedDNS).
-// For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
+// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// You can specify the instance tenancy value for the VPC when you create it.
// You can't change this value for the VPC after you create it. For more information,
-// see Dedicated Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)
+// see Dedicated Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -5224,7 +6356,7 @@ const opCreateVpcEndpoint = "CreateVpcEndpoint"
// CreateVpcEndpointRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpcEndpoint operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5266,7 +6398,7 @@ func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *requ
// Creates a VPC endpoint for a specified service. An endpoint enables you to
// create a private connection between your VPC and the service. The service
// may be provided by AWS, an AWS Marketplace partner, or another AWS account.
-// For more information, see VPC Endpoints (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)
+// For more information, see VPC Endpoints (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// A gateway endpoint serves as a target for a route in your route table for
@@ -5314,7 +6446,7 @@ const opCreateVpcEndpointConnectionNotification = "CreateVpcEndpointConnectionNo
// CreateVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpcEndpointConnectionNotification operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5356,7 +6488,7 @@ func (c *EC2) CreateVpcEndpointConnectionNotificationRequest(input *CreateVpcEnd
// Creates a connection notification for a specified VPC endpoint or VPC endpoint
// service. A connection notification notifies you of specific endpoint events.
// You must create an SNS topic to receive notifications. For more information,
-// see Create a Topic (http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)
+// see Create a Topic (https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)
// in the Amazon Simple Notification Service Developer Guide.
//
// You can create a connection notification for interface endpoints only.
@@ -5394,7 +6526,7 @@ const opCreateVpcEndpointServiceConfiguration = "CreateVpcEndpointServiceConfigu
// CreateVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpcEndpointServiceConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5439,7 +6571,7 @@ func (c *EC2) CreateVpcEndpointServiceConfigurationRequest(input *CreateVpcEndpo
//
// To create an endpoint service configuration, you must first create a Network
// Load Balancer for your service. For more information, see VPC Endpoint Services
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html)
+// (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -5475,7 +6607,7 @@ const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection"
// CreateVpcPeeringConnectionRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpcPeeringConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5521,7 +6653,7 @@ func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectio
// CIDR blocks.
//
// Limitations and rules apply to a VPC peering connection. For more information,
-// see the limitations (http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/vpc-peering-basics.html#vpc-peering-limitations)
+// see the limitations (https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/vpc-peering-basics.html#vpc-peering-limitations)
// section in the VPC Peering Guide.
//
// The owner of the accepter VPC must accept the peering request to activate
@@ -5564,7 +6696,7 @@ const opCreateVpnConnection = "CreateVpnConnection"
// CreateVpnConnectionRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpnConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5620,8 +6752,8 @@ func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req *
// This is an idempotent operation. If you perform the operation more than once,
// Amazon EC2 doesn't return an error.
//
-// For more information, see AWS Managed VPN Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -5656,7 +6788,7 @@ const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute"
// CreateVpnConnectionRouteRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpnConnectionRoute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5690,8 +6822,7 @@ func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInp
output = &CreateVpnConnectionRouteOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -5702,9 +6833,8 @@ func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInp
// traffic to be routed from the virtual private gateway to the VPN customer
// gateway.
//
-// For more information about VPN connections, see AWS Managed VPN Connections
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the
-// Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -5739,7 +6869,7 @@ const opCreateVpnGateway = "CreateVpnGateway"
// CreateVpnGatewayRequest generates a "aws/request.Request" representing the
// client's request for the CreateVpnGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5782,9 +6912,8 @@ func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *reques
// on the VPC side of your VPN connection. You can create a virtual private
// gateway before creating the VPC itself.
//
-// For more information about virtual private gateways, see AWS Managed VPN
-// Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -5814,12 +6943,165 @@ func (c *EC2) CreateVpnGatewayWithContext(ctx aws.Context, input *CreateVpnGatew
return out, req.Send()
}
+const opDeleteClientVpnEndpoint = "DeleteClientVpnEndpoint"
+
+// DeleteClientVpnEndpointRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteClientVpnEndpoint operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteClientVpnEndpoint for more information on using the DeleteClientVpnEndpoint
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteClientVpnEndpointRequest method.
+// req, resp := client.DeleteClientVpnEndpointRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnEndpoint
+func (c *EC2) DeleteClientVpnEndpointRequest(input *DeleteClientVpnEndpointInput) (req *request.Request, output *DeleteClientVpnEndpointOutput) {
+ op := &request.Operation{
+ Name: opDeleteClientVpnEndpoint,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteClientVpnEndpointInput{}
+ }
+
+ output = &DeleteClientVpnEndpointOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteClientVpnEndpoint API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes the specified Client VPN endpoint. You must disassociate all target
+// networks before you can delete a Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteClientVpnEndpoint for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnEndpoint
+func (c *EC2) DeleteClientVpnEndpoint(input *DeleteClientVpnEndpointInput) (*DeleteClientVpnEndpointOutput, error) {
+ req, out := c.DeleteClientVpnEndpointRequest(input)
+ return out, req.Send()
+}
+
+// DeleteClientVpnEndpointWithContext is the same as DeleteClientVpnEndpoint with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteClientVpnEndpoint for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteClientVpnEndpointWithContext(ctx aws.Context, input *DeleteClientVpnEndpointInput, opts ...request.Option) (*DeleteClientVpnEndpointOutput, error) {
+ req, out := c.DeleteClientVpnEndpointRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDeleteClientVpnRoute = "DeleteClientVpnRoute"
+
+// DeleteClientVpnRouteRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteClientVpnRoute operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteClientVpnRoute for more information on using the DeleteClientVpnRoute
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteClientVpnRouteRequest method.
+// req, resp := client.DeleteClientVpnRouteRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnRoute
+func (c *EC2) DeleteClientVpnRouteRequest(input *DeleteClientVpnRouteInput) (req *request.Request, output *DeleteClientVpnRouteOutput) {
+ op := &request.Operation{
+ Name: opDeleteClientVpnRoute,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteClientVpnRouteInput{}
+ }
+
+ output = &DeleteClientVpnRouteOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteClientVpnRoute API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes a route from a Client VPN endpoint. You can only delete routes that
+// you manually added using the CreateClientVpnRoute action. You cannot delete
+// routes that were automatically added when associating a subnet. To remove
+// routes that have been automatically added, disassociate the target subnet
+// from the Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteClientVpnRoute for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteClientVpnRoute
+func (c *EC2) DeleteClientVpnRoute(input *DeleteClientVpnRouteInput) (*DeleteClientVpnRouteOutput, error) {
+ req, out := c.DeleteClientVpnRouteRequest(input)
+ return out, req.Send()
+}
+
+// DeleteClientVpnRouteWithContext is the same as DeleteClientVpnRoute with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteClientVpnRoute for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteClientVpnRouteWithContext(ctx aws.Context, input *DeleteClientVpnRouteInput, opts ...request.Option) (*DeleteClientVpnRouteOutput, error) {
+ req, out := c.DeleteClientVpnRouteRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDeleteCustomerGateway = "DeleteCustomerGateway"
// DeleteCustomerGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DeleteCustomerGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5853,8 +7135,7 @@ func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (r
output = &DeleteCustomerGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -5896,7 +7177,7 @@ const opDeleteDhcpOptions = "DeleteDhcpOptions"
// DeleteDhcpOptionsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDhcpOptions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5930,8 +7211,7 @@ func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *requ
output = &DeleteDhcpOptionsOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -5975,7 +7255,7 @@ const opDeleteEgressOnlyInternetGateway = "DeleteEgressOnlyInternetGateway"
// DeleteEgressOnlyInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DeleteEgressOnlyInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6049,7 +7329,7 @@ const opDeleteFleets = "DeleteFleets"
// DeleteFleetsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFleets operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6129,7 +7409,7 @@ const opDeleteFlowLogs = "DeleteFlowLogs"
// DeleteFlowLogsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFlowLogs operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6203,7 +7483,7 @@ const opDeleteFpgaImage = "DeleteFpgaImage"
// DeleteFpgaImageRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFpgaImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6277,7 +7557,7 @@ const opDeleteInternetGateway = "DeleteInternetGateway"
// DeleteInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6311,8 +7591,7 @@ func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (r
output = &DeleteInternetGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -6354,7 +7633,7 @@ const opDeleteKeyPair = "DeleteKeyPair"
// DeleteKeyPairRequest generates a "aws/request.Request" representing the
// client's request for the DeleteKeyPair operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6388,8 +7667,7 @@ func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Requ
output = &DeleteKeyPairOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -6430,7 +7708,7 @@ const opDeleteLaunchTemplate = "DeleteLaunchTemplate"
// DeleteLaunchTemplateRequest generates a "aws/request.Request" representing the
// client's request for the DeleteLaunchTemplate operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6505,7 +7783,7 @@ const opDeleteLaunchTemplateVersions = "DeleteLaunchTemplateVersions"
// DeleteLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteLaunchTemplateVersions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6582,7 +7860,7 @@ const opDeleteNatGateway = "DeleteNatGateway"
// DeleteNatGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNatGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6658,7 +7936,7 @@ const opDeleteNetworkAcl = "DeleteNetworkAcl"
// DeleteNetworkAclRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNetworkAcl operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6692,8 +7970,7 @@ func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *reques
output = &DeleteNetworkAclOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -6735,7 +8012,7 @@ const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry"
// DeleteNetworkAclEntryRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNetworkAclEntry operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6769,8 +8046,7 @@ func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (r
output = &DeleteNetworkAclEntryOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -6812,7 +8088,7 @@ const opDeleteNetworkInterface = "DeleteNetworkInterface"
// DeleteNetworkInterfaceRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNetworkInterface operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6846,8 +8122,7 @@ func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput)
output = &DeleteNetworkInterfaceOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -6889,7 +8164,7 @@ const opDeleteNetworkInterfacePermission = "DeleteNetworkInterfacePermission"
// DeleteNetworkInterfacePermissionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNetworkInterfacePermission operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6966,7 +8241,7 @@ const opDeletePlacementGroup = "DeletePlacementGroup"
// DeletePlacementGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeletePlacementGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7000,8 +8275,7 @@ func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req
output = &DeletePlacementGroupOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7009,7 +8283,7 @@ func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req
//
// Deletes the specified placement group. You must terminate all instances in
// the placement group before you can delete the placement group. For more information,
-// see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
+// see Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -7045,7 +8319,7 @@ const opDeleteRoute = "DeleteRoute"
// DeleteRouteRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRoute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7079,8 +8353,7 @@ func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request,
output = &DeleteRouteOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7121,7 +8394,7 @@ const opDeleteRouteTable = "DeleteRouteTable"
// DeleteRouteTableRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRouteTable operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7155,8 +8428,7 @@ func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *reques
output = &DeleteRouteTableOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7199,7 +8471,7 @@ const opDeleteSecurityGroup = "DeleteSecurityGroup"
// DeleteSecurityGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSecurityGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7233,8 +8505,7 @@ func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req *
output = &DeleteSecurityGroupOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7279,7 +8550,7 @@ const opDeleteSnapshot = "DeleteSnapshot"
// DeleteSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSnapshot operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7313,8 +8584,7 @@ func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Re
output = &DeleteSnapshotOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7333,7 +8603,7 @@ func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Re
// a registered AMI. You must first de-register the AMI before you can delete
// the snapshot.
//
-// For more information, see Deleting an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html)
+// For more information, see Deleting an Amazon EBS Snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -7369,7 +8639,7 @@ const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription"
// DeleteSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSpotDatafeedSubscription operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7403,8 +8673,7 @@ func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSub
output = &DeleteSpotDatafeedSubscriptionOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7445,7 +8714,7 @@ const opDeleteSubnet = "DeleteSubnet"
// DeleteSubnetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSubnet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7479,8 +8748,7 @@ func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Reques
output = &DeleteSubnetOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7522,7 +8790,7 @@ const opDeleteTags = "DeleteTags"
// DeleteTagsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTags operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7556,8 +8824,7 @@ func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, o
output = &DeleteTagsOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7566,7 +8833,7 @@ func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, o
// Deletes the specified set of tags from the specified set of resources.
//
// To list the current tags, use DescribeTags. For more information about tags,
-// see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
+// see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -7597,12 +8864,310 @@ func (c *EC2) DeleteTagsWithContext(ctx aws.Context, input *DeleteTagsInput, opt
return out, req.Send()
}
+const opDeleteTransitGateway = "DeleteTransitGateway"
+
+// DeleteTransitGatewayRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteTransitGateway operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteTransitGateway for more information on using the DeleteTransitGateway
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteTransitGatewayRequest method.
+// req, resp := client.DeleteTransitGatewayRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGateway
+func (c *EC2) DeleteTransitGatewayRequest(input *DeleteTransitGatewayInput) (req *request.Request, output *DeleteTransitGatewayOutput) {
+ op := &request.Operation{
+ Name: opDeleteTransitGateway,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteTransitGatewayInput{}
+ }
+
+ output = &DeleteTransitGatewayOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteTransitGateway API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes the specified transit gateway.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteTransitGateway for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGateway
+func (c *EC2) DeleteTransitGateway(input *DeleteTransitGatewayInput) (*DeleteTransitGatewayOutput, error) {
+ req, out := c.DeleteTransitGatewayRequest(input)
+ return out, req.Send()
+}
+
+// DeleteTransitGatewayWithContext is the same as DeleteTransitGateway with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteTransitGateway for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteTransitGatewayWithContext(ctx aws.Context, input *DeleteTransitGatewayInput, opts ...request.Option) (*DeleteTransitGatewayOutput, error) {
+ req, out := c.DeleteTransitGatewayRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDeleteTransitGatewayRoute = "DeleteTransitGatewayRoute"
+
+// DeleteTransitGatewayRouteRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteTransitGatewayRoute operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteTransitGatewayRoute for more information on using the DeleteTransitGatewayRoute
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteTransitGatewayRouteRequest method.
+// req, resp := client.DeleteTransitGatewayRouteRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRoute
+func (c *EC2) DeleteTransitGatewayRouteRequest(input *DeleteTransitGatewayRouteInput) (req *request.Request, output *DeleteTransitGatewayRouteOutput) {
+ op := &request.Operation{
+ Name: opDeleteTransitGatewayRoute,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteTransitGatewayRouteInput{}
+ }
+
+ output = &DeleteTransitGatewayRouteOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteTransitGatewayRoute API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes the specified route from the specified transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteTransitGatewayRoute for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRoute
+func (c *EC2) DeleteTransitGatewayRoute(input *DeleteTransitGatewayRouteInput) (*DeleteTransitGatewayRouteOutput, error) {
+ req, out := c.DeleteTransitGatewayRouteRequest(input)
+ return out, req.Send()
+}
+
+// DeleteTransitGatewayRouteWithContext is the same as DeleteTransitGatewayRoute with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteTransitGatewayRoute for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteTransitGatewayRouteWithContext(ctx aws.Context, input *DeleteTransitGatewayRouteInput, opts ...request.Option) (*DeleteTransitGatewayRouteOutput, error) {
+ req, out := c.DeleteTransitGatewayRouteRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDeleteTransitGatewayRouteTable = "DeleteTransitGatewayRouteTable"
+
+// DeleteTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteTransitGatewayRouteTable operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteTransitGatewayRouteTable for more information on using the DeleteTransitGatewayRouteTable
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteTransitGatewayRouteTableRequest method.
+// req, resp := client.DeleteTransitGatewayRouteTableRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRouteTable
+func (c *EC2) DeleteTransitGatewayRouteTableRequest(input *DeleteTransitGatewayRouteTableInput) (req *request.Request, output *DeleteTransitGatewayRouteTableOutput) {
+ op := &request.Operation{
+ Name: opDeleteTransitGatewayRouteTable,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteTransitGatewayRouteTableInput{}
+ }
+
+ output = &DeleteTransitGatewayRouteTableOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes the specified transit gateway route table. You must disassociate
+// the route table from any transit gateway route tables before you can delete
+// it.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteTransitGatewayRouteTable for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayRouteTable
+func (c *EC2) DeleteTransitGatewayRouteTable(input *DeleteTransitGatewayRouteTableInput) (*DeleteTransitGatewayRouteTableOutput, error) {
+ req, out := c.DeleteTransitGatewayRouteTableRequest(input)
+ return out, req.Send()
+}
+
+// DeleteTransitGatewayRouteTableWithContext is the same as DeleteTransitGatewayRouteTable with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteTransitGatewayRouteTable for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteTransitGatewayRouteTableWithContext(ctx aws.Context, input *DeleteTransitGatewayRouteTableInput, opts ...request.Option) (*DeleteTransitGatewayRouteTableOutput, error) {
+ req, out := c.DeleteTransitGatewayRouteTableRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDeleteTransitGatewayVpcAttachment = "DeleteTransitGatewayVpcAttachment"
+
+// DeleteTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteTransitGatewayVpcAttachment operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteTransitGatewayVpcAttachment for more information on using the DeleteTransitGatewayVpcAttachment
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeleteTransitGatewayVpcAttachmentRequest method.
+// req, resp := client.DeleteTransitGatewayVpcAttachmentRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayVpcAttachment
+func (c *EC2) DeleteTransitGatewayVpcAttachmentRequest(input *DeleteTransitGatewayVpcAttachmentInput) (req *request.Request, output *DeleteTransitGatewayVpcAttachmentOutput) {
+ op := &request.Operation{
+ Name: opDeleteTransitGatewayVpcAttachment,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeleteTransitGatewayVpcAttachmentInput{}
+ }
+
+ output = &DeleteTransitGatewayVpcAttachmentOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeleteTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud.
+//
+// Deletes the specified VPC attachment.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeleteTransitGatewayVpcAttachment for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayVpcAttachment
+func (c *EC2) DeleteTransitGatewayVpcAttachment(input *DeleteTransitGatewayVpcAttachmentInput) (*DeleteTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.DeleteTransitGatewayVpcAttachmentRequest(input)
+ return out, req.Send()
+}
+
+// DeleteTransitGatewayVpcAttachmentWithContext is the same as DeleteTransitGatewayVpcAttachment with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteTransitGatewayVpcAttachment for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeleteTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *DeleteTransitGatewayVpcAttachmentInput, opts ...request.Option) (*DeleteTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.DeleteTransitGatewayVpcAttachmentRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDeleteVolume = "DeleteVolume"
// DeleteVolumeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7636,8 +9201,7 @@ func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Reques
output = &DeleteVolumeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7648,7 +9212,7 @@ func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Reques
//
// The volume can remain in the deleting state for several minutes.
//
-// For more information, see Deleting an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html)
+// For more information, see Deleting an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -7684,7 +9248,7 @@ const opDeleteVpc = "DeleteVpc"
// DeleteVpcRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7718,8 +9282,7 @@ func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, out
output = &DeleteVpcOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -7764,7 +9327,7 @@ const opDeleteVpcEndpointConnectionNotifications = "DeleteVpcEndpointConnectionN
// DeleteVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpcEndpointConnectionNotifications operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7838,7 +9401,7 @@ const opDeleteVpcEndpointServiceConfigurations = "DeleteVpcEndpointServiceConfig
// DeleteVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpcEndpointServiceConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7915,7 +9478,7 @@ const opDeleteVpcEndpoints = "DeleteVpcEndpoints"
// DeleteVpcEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpcEndpoints operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7992,7 +9555,7 @@ const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection"
// DeleteVpcPeeringConnectionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpcPeeringConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8070,7 +9633,7 @@ const opDeleteVpnConnection = "DeleteVpnConnection"
// DeleteVpnConnectionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpnConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8104,8 +9667,7 @@ func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req *
output = &DeleteVpnConnectionOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8155,7 +9717,7 @@ const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute"
// DeleteVpnConnectionRouteRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpnConnectionRoute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8189,8 +9751,7 @@ func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInp
output = &DeleteVpnConnectionRouteOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8234,7 +9795,7 @@ const opDeleteVpnGateway = "DeleteVpnGateway"
// DeleteVpnGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVpnGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8268,8 +9829,7 @@ func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *reques
output = &DeleteVpnGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8309,12 +9869,92 @@ func (c *EC2) DeleteVpnGatewayWithContext(ctx aws.Context, input *DeleteVpnGatew
return out, req.Send()
}
+const opDeprovisionByoipCidr = "DeprovisionByoipCidr"
+
+// DeprovisionByoipCidrRequest generates a "aws/request.Request" representing the
+// client's request for the DeprovisionByoipCidr operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeprovisionByoipCidr for more information on using the DeprovisionByoipCidr
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DeprovisionByoipCidrRequest method.
+// req, resp := client.DeprovisionByoipCidrRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeprovisionByoipCidr
+func (c *EC2) DeprovisionByoipCidrRequest(input *DeprovisionByoipCidrInput) (req *request.Request, output *DeprovisionByoipCidrOutput) {
+ op := &request.Operation{
+ Name: opDeprovisionByoipCidr,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DeprovisionByoipCidrInput{}
+ }
+
+ output = &DeprovisionByoipCidrOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DeprovisionByoipCidr API operation for Amazon Elastic Compute Cloud.
+//
+// Releases the specified address range that you provisioned for use with your
+// AWS resources through bring your own IP addresses (BYOIP) and deletes the
+// corresponding address pool.
+//
+// Before you can release an address range, you must stop advertising it using
+// WithdrawByoipCidr and you must not have any IP addresses allocated from its
+// address range.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DeprovisionByoipCidr for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeprovisionByoipCidr
+func (c *EC2) DeprovisionByoipCidr(input *DeprovisionByoipCidrInput) (*DeprovisionByoipCidrOutput, error) {
+ req, out := c.DeprovisionByoipCidrRequest(input)
+ return out, req.Send()
+}
+
+// DeprovisionByoipCidrWithContext is the same as DeprovisionByoipCidr with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeprovisionByoipCidr for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DeprovisionByoipCidrWithContext(ctx aws.Context, input *DeprovisionByoipCidrInput, opts ...request.Option) (*DeprovisionByoipCidrOutput, error) {
+ req, out := c.DeprovisionByoipCidrRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDeregisterImage = "DeregisterImage"
// DeregisterImageRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8348,8 +9988,7 @@ func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request.
output = &DeregisterImageOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8398,7 +10037,7 @@ const opDescribeAccountAttributes = "DescribeAccountAttributes"
// DescribeAccountAttributesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountAttributes operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8490,7 +10129,7 @@ const opDescribeAddresses = "DescribeAddresses"
// DescribeAddressesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAddresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8532,7 +10171,7 @@ func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *requ
// Describes one or more of your Elastic IP addresses.
//
// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
+// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -8568,7 +10207,7 @@ const opDescribeAggregateIdFormat = "DescribeAggregateIdFormat"
// DescribeAggregateIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAggregateIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8656,7 +10295,7 @@ const opDescribeAvailabilityZones = "DescribeAvailabilityZones"
// DescribeAvailabilityZonesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAvailabilityZones operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8700,7 +10339,7 @@ func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesI
// there is an event impacting an Availability Zone, you can use this request
// to view the state and any provided message for that Availability Zone.
//
-// For more information, see Regions and Availability Zones (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
+// For more information, see Regions and Availability Zones (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -8736,7 +10375,7 @@ const opDescribeBundleTasks = "DescribeBundleTasks"
// DescribeBundleTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeBundleTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8810,12 +10449,164 @@ func (c *EC2) DescribeBundleTasksWithContext(ctx aws.Context, input *DescribeBun
return out, req.Send()
}
+const opDescribeByoipCidrs = "DescribeByoipCidrs"
+
+// DescribeByoipCidrsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeByoipCidrs operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeByoipCidrs for more information on using the DescribeByoipCidrs
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeByoipCidrsRequest method.
+// req, resp := client.DescribeByoipCidrsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeByoipCidrs
+func (c *EC2) DescribeByoipCidrsRequest(input *DescribeByoipCidrsInput) (req *request.Request, output *DescribeByoipCidrsOutput) {
+ op := &request.Operation{
+ Name: opDescribeByoipCidrs,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeByoipCidrsInput{}
+ }
+
+ output = &DescribeByoipCidrsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeByoipCidrs API operation for Amazon Elastic Compute Cloud.
+//
+// Describes the IP address ranges that were specified in calls to ProvisionByoipCidr.
+//
+// To describe the address pools that were created when you provisioned the
+// address ranges, use DescribePublicIpv4Pools.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeByoipCidrs for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeByoipCidrs
+func (c *EC2) DescribeByoipCidrs(input *DescribeByoipCidrsInput) (*DescribeByoipCidrsOutput, error) {
+ req, out := c.DescribeByoipCidrsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeByoipCidrsWithContext is the same as DescribeByoipCidrs with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeByoipCidrs for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeByoipCidrsWithContext(ctx aws.Context, input *DescribeByoipCidrsInput, opts ...request.Option) (*DescribeByoipCidrsOutput, error) {
+ req, out := c.DescribeByoipCidrsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeCapacityReservations = "DescribeCapacityReservations"
+
+// DescribeCapacityReservationsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeCapacityReservations operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeCapacityReservations for more information on using the DescribeCapacityReservations
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeCapacityReservationsRequest method.
+// req, resp := client.DescribeCapacityReservationsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCapacityReservations
+func (c *EC2) DescribeCapacityReservationsRequest(input *DescribeCapacityReservationsInput) (req *request.Request, output *DescribeCapacityReservationsOutput) {
+ op := &request.Operation{
+ Name: opDescribeCapacityReservations,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeCapacityReservationsInput{}
+ }
+
+ output = &DescribeCapacityReservationsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeCapacityReservations API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more of your Capacity Reservations. The results describe
+// only the Capacity Reservations in the AWS Region that you're currently using.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeCapacityReservations for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeCapacityReservations
+func (c *EC2) DescribeCapacityReservations(input *DescribeCapacityReservationsInput) (*DescribeCapacityReservationsOutput, error) {
+ req, out := c.DescribeCapacityReservationsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeCapacityReservationsWithContext is the same as DescribeCapacityReservations with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeCapacityReservations for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeCapacityReservationsWithContext(ctx aws.Context, input *DescribeCapacityReservationsInput, opts ...request.Option) (*DescribeCapacityReservationsOutput, error) {
+ req, out := c.DescribeCapacityReservationsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances"
// DescribeClassicLinkInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeClassicLinkInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8887,12 +10678,383 @@ func (c *EC2) DescribeClassicLinkInstancesWithContext(ctx aws.Context, input *De
return out, req.Send()
}
+const opDescribeClientVpnAuthorizationRules = "DescribeClientVpnAuthorizationRules"
+
+// DescribeClientVpnAuthorizationRulesRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeClientVpnAuthorizationRules operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeClientVpnAuthorizationRules for more information on using the DescribeClientVpnAuthorizationRules
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeClientVpnAuthorizationRulesRequest method.
+// req, resp := client.DescribeClientVpnAuthorizationRulesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnAuthorizationRules
+func (c *EC2) DescribeClientVpnAuthorizationRulesRequest(input *DescribeClientVpnAuthorizationRulesInput) (req *request.Request, output *DescribeClientVpnAuthorizationRulesOutput) {
+ op := &request.Operation{
+ Name: opDescribeClientVpnAuthorizationRules,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeClientVpnAuthorizationRulesInput{}
+ }
+
+ output = &DescribeClientVpnAuthorizationRulesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeClientVpnAuthorizationRules API operation for Amazon Elastic Compute Cloud.
+//
+// Describes the authorization rules for a specified Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeClientVpnAuthorizationRules for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnAuthorizationRules
+func (c *EC2) DescribeClientVpnAuthorizationRules(input *DescribeClientVpnAuthorizationRulesInput) (*DescribeClientVpnAuthorizationRulesOutput, error) {
+ req, out := c.DescribeClientVpnAuthorizationRulesRequest(input)
+ return out, req.Send()
+}
+
+// DescribeClientVpnAuthorizationRulesWithContext is the same as DescribeClientVpnAuthorizationRules with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeClientVpnAuthorizationRules for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeClientVpnAuthorizationRulesWithContext(ctx aws.Context, input *DescribeClientVpnAuthorizationRulesInput, opts ...request.Option) (*DescribeClientVpnAuthorizationRulesOutput, error) {
+ req, out := c.DescribeClientVpnAuthorizationRulesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeClientVpnConnections = "DescribeClientVpnConnections"
+
+// DescribeClientVpnConnectionsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeClientVpnConnections operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeClientVpnConnections for more information on using the DescribeClientVpnConnections
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeClientVpnConnectionsRequest method.
+// req, resp := client.DescribeClientVpnConnectionsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnConnections
+func (c *EC2) DescribeClientVpnConnectionsRequest(input *DescribeClientVpnConnectionsInput) (req *request.Request, output *DescribeClientVpnConnectionsOutput) {
+ op := &request.Operation{
+ Name: opDescribeClientVpnConnections,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeClientVpnConnectionsInput{}
+ }
+
+ output = &DescribeClientVpnConnectionsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeClientVpnConnections API operation for Amazon Elastic Compute Cloud.
+//
+// Describes active client connections and connections that have been terminated
+// within the last 60 minutes for the specified Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeClientVpnConnections for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnConnections
+func (c *EC2) DescribeClientVpnConnections(input *DescribeClientVpnConnectionsInput) (*DescribeClientVpnConnectionsOutput, error) {
+ req, out := c.DescribeClientVpnConnectionsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeClientVpnConnectionsWithContext is the same as DescribeClientVpnConnections with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeClientVpnConnections for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeClientVpnConnectionsWithContext(ctx aws.Context, input *DescribeClientVpnConnectionsInput, opts ...request.Option) (*DescribeClientVpnConnectionsOutput, error) {
+ req, out := c.DescribeClientVpnConnectionsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeClientVpnEndpoints = "DescribeClientVpnEndpoints"
+
+// DescribeClientVpnEndpointsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeClientVpnEndpoints operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeClientVpnEndpoints for more information on using the DescribeClientVpnEndpoints
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeClientVpnEndpointsRequest method.
+// req, resp := client.DescribeClientVpnEndpointsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnEndpoints
+func (c *EC2) DescribeClientVpnEndpointsRequest(input *DescribeClientVpnEndpointsInput) (req *request.Request, output *DescribeClientVpnEndpointsOutput) {
+ op := &request.Operation{
+ Name: opDescribeClientVpnEndpoints,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeClientVpnEndpointsInput{}
+ }
+
+ output = &DescribeClientVpnEndpointsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeClientVpnEndpoints API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more Client VPN endpoints in the account.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeClientVpnEndpoints for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnEndpoints
+func (c *EC2) DescribeClientVpnEndpoints(input *DescribeClientVpnEndpointsInput) (*DescribeClientVpnEndpointsOutput, error) {
+ req, out := c.DescribeClientVpnEndpointsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeClientVpnEndpointsWithContext is the same as DescribeClientVpnEndpoints with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeClientVpnEndpoints for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeClientVpnEndpointsWithContext(ctx aws.Context, input *DescribeClientVpnEndpointsInput, opts ...request.Option) (*DescribeClientVpnEndpointsOutput, error) {
+ req, out := c.DescribeClientVpnEndpointsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeClientVpnRoutes = "DescribeClientVpnRoutes"
+
+// DescribeClientVpnRoutesRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeClientVpnRoutes operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeClientVpnRoutes for more information on using the DescribeClientVpnRoutes
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeClientVpnRoutesRequest method.
+// req, resp := client.DescribeClientVpnRoutesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnRoutes
+func (c *EC2) DescribeClientVpnRoutesRequest(input *DescribeClientVpnRoutesInput) (req *request.Request, output *DescribeClientVpnRoutesOutput) {
+ op := &request.Operation{
+ Name: opDescribeClientVpnRoutes,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeClientVpnRoutesInput{}
+ }
+
+ output = &DescribeClientVpnRoutesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeClientVpnRoutes API operation for Amazon Elastic Compute Cloud.
+//
+// Describes the routes for the specified Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeClientVpnRoutes for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnRoutes
+func (c *EC2) DescribeClientVpnRoutes(input *DescribeClientVpnRoutesInput) (*DescribeClientVpnRoutesOutput, error) {
+ req, out := c.DescribeClientVpnRoutesRequest(input)
+ return out, req.Send()
+}
+
+// DescribeClientVpnRoutesWithContext is the same as DescribeClientVpnRoutes with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeClientVpnRoutes for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeClientVpnRoutesWithContext(ctx aws.Context, input *DescribeClientVpnRoutesInput, opts ...request.Option) (*DescribeClientVpnRoutesOutput, error) {
+ req, out := c.DescribeClientVpnRoutesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeClientVpnTargetNetworks = "DescribeClientVpnTargetNetworks"
+
+// DescribeClientVpnTargetNetworksRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeClientVpnTargetNetworks operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeClientVpnTargetNetworks for more information on using the DescribeClientVpnTargetNetworks
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeClientVpnTargetNetworksRequest method.
+// req, resp := client.DescribeClientVpnTargetNetworksRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnTargetNetworks
+func (c *EC2) DescribeClientVpnTargetNetworksRequest(input *DescribeClientVpnTargetNetworksInput) (req *request.Request, output *DescribeClientVpnTargetNetworksOutput) {
+ op := &request.Operation{
+ Name: opDescribeClientVpnTargetNetworks,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeClientVpnTargetNetworksInput{}
+ }
+
+ output = &DescribeClientVpnTargetNetworksOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeClientVpnTargetNetworks API operation for Amazon Elastic Compute Cloud.
+//
+// Describes the target networks associated with the specified Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeClientVpnTargetNetworks for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeClientVpnTargetNetworks
+func (c *EC2) DescribeClientVpnTargetNetworks(input *DescribeClientVpnTargetNetworksInput) (*DescribeClientVpnTargetNetworksOutput, error) {
+ req, out := c.DescribeClientVpnTargetNetworksRequest(input)
+ return out, req.Send()
+}
+
+// DescribeClientVpnTargetNetworksWithContext is the same as DescribeClientVpnTargetNetworks with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeClientVpnTargetNetworks for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeClientVpnTargetNetworksWithContext(ctx aws.Context, input *DescribeClientVpnTargetNetworksInput, opts ...request.Option) (*DescribeClientVpnTargetNetworksOutput, error) {
+ req, out := c.DescribeClientVpnTargetNetworksRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeConversionTasks = "DescribeConversionTasks"
// DescribeConversionTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeConversionTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8932,10 +11094,10 @@ func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput
// DescribeConversionTasks API operation for Amazon Elastic Compute Cloud.
//
// Describes one or more of your conversion tasks. For more information, see
-// the VM Import/Export User Guide (http://docs.aws.amazon.com/vm-import/latest/userguide/).
+// the VM Import/Export User Guide (https://docs.aws.amazon.com/vm-import/latest/userguide/).
//
// For information about the import manifest referenced by this API action,
-// see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
+// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -8970,7 +11132,7 @@ const opDescribeCustomerGateways = "DescribeCustomerGateways"
// DescribeCustomerGatewaysRequest generates a "aws/request.Request" representing the
// client's request for the DescribeCustomerGateways operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9011,9 +11173,8 @@ func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInp
//
// Describes one or more of your VPN customer gateways.
//
-// For more information about VPN customer gateways, see AWS Managed VPN Connections
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the
-// Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -9048,7 +11209,7 @@ const opDescribeDhcpOptions = "DescribeDhcpOptions"
// DescribeDhcpOptionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDhcpOptions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9089,7 +11250,7 @@ func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req *
//
// Describes one or more of your DHCP options sets.
//
-// For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
+// For more information, see DHCP Options Sets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -9125,7 +11286,7 @@ const opDescribeEgressOnlyInternetGateways = "DescribeEgressOnlyInternetGateways
// DescribeEgressOnlyInternetGatewaysRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEgressOnlyInternetGateways operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9199,7 +11360,7 @@ const opDescribeElasticGpus = "DescribeElasticGpus"
// DescribeElasticGpusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeElasticGpus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9238,8 +11399,9 @@ func (c *EC2) DescribeElasticGpusRequest(input *DescribeElasticGpusInput) (req *
// DescribeElasticGpus API operation for Amazon Elastic Compute Cloud.
//
-// Describes the Elastic GPUs associated with your instances. For more information
-// about Elastic GPUs, see Amazon EC2 Elastic GPUs (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-gpus.html).
+// Describes the Elastic Graphics accelerator associated with your instances.
+// For more information about Elastic Graphics, see Amazon Elastic Graphics
+// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-graphics.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -9274,7 +11436,7 @@ const opDescribeExportTasks = "DescribeExportTasks"
// DescribeExportTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeExportTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9348,7 +11510,7 @@ const opDescribeFleetHistory = "DescribeFleetHistory"
// DescribeFleetHistoryRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFleetHistory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9422,7 +11584,7 @@ const opDescribeFleetInstances = "DescribeFleetInstances"
// DescribeFleetInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFleetInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9496,7 +11658,7 @@ const opDescribeFleets = "DescribeFleets"
// DescribeFleetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFleets operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9535,7 +11697,7 @@ func (c *EC2) DescribeFleetsRequest(input *DescribeFleetsInput) (req *request.Re
// DescribeFleets API operation for Amazon Elastic Compute Cloud.
//
-// Describes one or more of your EC2 Fleet.
+// Describes one or more of your EC2 Fleets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -9570,7 +11732,7 @@ const opDescribeFlowLogs = "DescribeFlowLogs"
// DescribeFlowLogsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFlowLogs operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9646,7 +11808,7 @@ const opDescribeFpgaImageAttribute = "DescribeFpgaImageAttribute"
// DescribeFpgaImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFpgaImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9720,7 +11882,7 @@ const opDescribeFpgaImages = "DescribeFpgaImages"
// DescribeFpgaImagesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFpgaImages operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9796,7 +11958,7 @@ const opDescribeHostReservationOfferings = "DescribeHostReservationOfferings"
// DescribeHostReservationOfferingsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeHostReservationOfferings operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9838,11 +12000,11 @@ func (c *EC2) DescribeHostReservationOfferingsRequest(input *DescribeHostReserva
// Describes the Dedicated Host reservations that are available to purchase.
//
// The results describe all the Dedicated Host reservation offerings, including
-// offerings that may not match the instance family and region of your Dedicated
+// offerings that may not match the instance family and Region of your Dedicated
// Hosts. When purchasing an offering, ensure that the instance family and Region
// of the offering matches that of the Dedicated Hosts with which it is to be
// associated. For more information about supported instance types, see Dedicated
-// Hosts Overview (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html)
+// Hosts Overview (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -9878,7 +12040,7 @@ const opDescribeHostReservations = "DescribeHostReservations"
// DescribeHostReservationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeHostReservations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9952,7 +12114,7 @@ const opDescribeHosts = "DescribeHosts"
// DescribeHostsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeHosts operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9993,7 +12155,7 @@ func (c *EC2) DescribeHostsRequest(input *DescribeHostsInput) (req *request.Requ
//
// Describes one or more of your Dedicated Hosts.
//
-// The results describe only the Dedicated Hosts in the region you're currently
+// The results describe only the Dedicated Hosts in the Region you're currently
// using. All listed instances consume capacity on your Dedicated Host. Dedicated
// Hosts that have recently been released are listed with the state released.
//
@@ -10030,7 +12192,7 @@ const opDescribeIamInstanceProfileAssociations = "DescribeIamInstanceProfileAsso
// DescribeIamInstanceProfileAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIamInstanceProfileAssociations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10104,7 +12266,7 @@ const opDescribeIdFormat = "DescribeIdFormat"
// DescribeIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10196,7 +12358,7 @@ const opDescribeIdentityIdFormat = "DescribeIdentityIdFormat"
// DescribeIdentityIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIdentityIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10239,7 +12401,7 @@ func (c *EC2) DescribeIdentityIdFormatRequest(input *DescribeIdentityIdFormatInp
// IAM role, or root user. For example, you can view the resource types that
// are enabled for longer IDs. This request only returns information about resource
// types whose ID formats can be modified; it does not return information about
-// other resource types. For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
+// other resource types. For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// The following resource types support longer IDs: bundle | conversion-task
@@ -10286,7 +12448,7 @@ const opDescribeImageAttribute = "DescribeImageAttribute"
// DescribeImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10361,7 +12523,7 @@ const opDescribeImages = "DescribeImages"
// DescribeImagesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeImages operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10441,7 +12603,7 @@ const opDescribeImportImageTasks = "DescribeImportImageTasks"
// DescribeImportImageTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeImportImageTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10516,7 +12678,7 @@ const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks"
// DescribeImportSnapshotTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeImportSnapshotTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10590,7 +12752,7 @@ const opDescribeInstanceAttribute = "DescribeInstanceAttribute"
// DescribeInstanceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10668,7 +12830,7 @@ const opDescribeInstanceCreditSpecifications = "DescribeInstanceCreditSpecificat
// DescribeInstanceCreditSpecificationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceCreditSpecifications operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10729,7 +12891,7 @@ func (c *EC2) DescribeInstanceCreditSpecificationsRequest(input *DescribeInstanc
// all, the call fails. If you specify only instance IDs in an unaffected zone,
// the call works normally.
//
-// For more information, see Burstable Performance Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
+// For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -10765,7 +12927,7 @@ const opDescribeInstanceStatus = "DescribeInstanceStatus"
// DescribeInstanceStatusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10818,19 +12980,19 @@ func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput)
//
// * Status checks - Amazon EC2 performs status checks on running EC2 instances
// to identify hardware and software issues. For more information, see Status
-// Checks for Your Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)
-// and Troubleshooting Instances with Failed Status Checks (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)
+// Checks for Your Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)
+// and Troubleshooting Instances with Failed Status Checks (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// * Scheduled events - Amazon EC2 can schedule events (such as reboot, stop,
// or terminate) for your instances related to hardware issues, software
// updates, or system maintenance. For more information, see Scheduled Events
-// for Your Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)
+// for Your Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// * Instance state - You can manage your instances from the moment you launch
// them through their termination. For more information, see Instance Lifecycle
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -10916,7 +13078,7 @@ const opDescribeInstances = "DescribeInstances"
// DescribeInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11061,7 +13223,7 @@ const opDescribeInternetGateways = "DescribeInternetGateways"
// DescribeInternetGatewaysRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInternetGateways operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11135,7 +13297,7 @@ const opDescribeKeyPairs = "DescribeKeyPairs"
// DescribeKeyPairsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeKeyPairs operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11176,7 +13338,7 @@ func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *reques
//
// Describes one or more of your key pairs.
//
-// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+// For more information about key pairs, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -11212,7 +13374,7 @@ const opDescribeLaunchTemplateVersions = "DescribeLaunchTemplateVersions"
// DescribeLaunchTemplateVersionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeLaunchTemplateVersions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11287,7 +13449,7 @@ const opDescribeLaunchTemplates = "DescribeLaunchTemplates"
// DescribeLaunchTemplatesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeLaunchTemplates operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11361,7 +13523,7 @@ const opDescribeMovingAddresses = "DescribeMovingAddresses"
// DescribeMovingAddressesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMovingAddresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11437,7 +13599,7 @@ const opDescribeNatGateways = "DescribeNatGateways"
// DescribeNatGatewaysRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNatGateways operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11567,7 +13729,7 @@ const opDescribeNetworkAcls = "DescribeNetworkAcls"
// DescribeNetworkAclsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNetworkAcls operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11608,7 +13770,7 @@ func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req *
//
// Describes one or more of your network ACLs.
//
-// For more information, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
+// For more information, see Network ACLs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -11644,7 +13806,7 @@ const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute"
// DescribeNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNetworkInterfaceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11719,7 +13881,7 @@ const opDescribeNetworkInterfacePermissions = "DescribeNetworkInterfacePermissio
// DescribeNetworkInterfacePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNetworkInterfacePermissions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11793,7 +13955,7 @@ const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces"
// DescribeNetworkInterfacesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNetworkInterfaces operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11923,7 +14085,7 @@ const opDescribePlacementGroups = "DescribePlacementGroups"
// DescribePlacementGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribePlacementGroups operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -11963,7 +14125,7 @@ func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput
// DescribePlacementGroups API operation for Amazon Elastic Compute Cloud.
//
// Describes one or more of your placement groups. For more information, see
-// Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
+// Placement Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -11999,7 +14161,7 @@ const opDescribePrefixLists = "DescribePrefixLists"
// DescribePrefixListsRequest generates a "aws/request.Request" representing the
// client's request for the DescribePrefixLists operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12078,7 +14240,7 @@ const opDescribePrincipalIdFormat = "DescribePrincipalIdFormat"
// DescribePrincipalIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the DescribePrincipalIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12161,12 +14323,86 @@ func (c *EC2) DescribePrincipalIdFormatWithContext(ctx aws.Context, input *Descr
return out, req.Send()
}
+const opDescribePublicIpv4Pools = "DescribePublicIpv4Pools"
+
+// DescribePublicIpv4PoolsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribePublicIpv4Pools operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribePublicIpv4Pools for more information on using the DescribePublicIpv4Pools
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribePublicIpv4PoolsRequest method.
+// req, resp := client.DescribePublicIpv4PoolsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePublicIpv4Pools
+func (c *EC2) DescribePublicIpv4PoolsRequest(input *DescribePublicIpv4PoolsInput) (req *request.Request, output *DescribePublicIpv4PoolsOutput) {
+ op := &request.Operation{
+ Name: opDescribePublicIpv4Pools,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribePublicIpv4PoolsInput{}
+ }
+
+ output = &DescribePublicIpv4PoolsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribePublicIpv4Pools API operation for Amazon Elastic Compute Cloud.
+//
+// Describes the specified IPv4 address pools.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribePublicIpv4Pools for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribePublicIpv4Pools
+func (c *EC2) DescribePublicIpv4Pools(input *DescribePublicIpv4PoolsInput) (*DescribePublicIpv4PoolsOutput, error) {
+ req, out := c.DescribePublicIpv4PoolsRequest(input)
+ return out, req.Send()
+}
+
+// DescribePublicIpv4PoolsWithContext is the same as DescribePublicIpv4Pools with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribePublicIpv4Pools for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribePublicIpv4PoolsWithContext(ctx aws.Context, input *DescribePublicIpv4PoolsInput, opts ...request.Option) (*DescribePublicIpv4PoolsOutput, error) {
+ req, out := c.DescribePublicIpv4PoolsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeRegions = "DescribeRegions"
// DescribeRegionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeRegions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12208,7 +14444,7 @@ func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request.
// Describes one or more regions that are currently available to you.
//
// For a list of the regions supported by Amazon EC2, see Regions and Endpoints
-// (http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region).
+// (https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -12243,7 +14479,7 @@ const opDescribeReservedInstances = "DescribeReservedInstances"
// DescribeReservedInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12284,7 +14520,7 @@ func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesI
//
// Describes one or more of the Reserved Instances that you purchased.
//
-// For more information about Reserved Instances, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
+// For more information about Reserved Instances, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -12320,7 +14556,7 @@ const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings"
// DescribeReservedInstancesListingsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedInstancesListings operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12379,7 +14615,7 @@ func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedIn
// demand is met. You are charged based on the total price of all of the listings
// that you purchase.
//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
+// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -12415,7 +14651,7 @@ const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModif
// DescribeReservedInstancesModificationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedInstancesModifications operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12465,7 +14701,7 @@ func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReser
// requests is returned. If a modification ID is specified, only information
// about the specific modification is returned.
//
-// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
+// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -12551,7 +14787,7 @@ const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings
// DescribeReservedInstancesOfferingsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedInstancesOfferings operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12606,7 +14842,7 @@ func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedI
// Marketplace, they will be excluded from these results. This is to ensure
// that you do not purchase your own Reserved Instances.
//
-// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
+// For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -12692,7 +14928,7 @@ const opDescribeRouteTables = "DescribeRouteTables"
// DescribeRouteTablesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeRouteTables operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12718,6 +14954,12 @@ func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *
Name: opDescribeRouteTables,
HTTPMethod: "POST",
HTTPPath: "/",
+ Paginator: &request.Paginator{
+ InputTokens: []string{"NextToken"},
+ OutputTokens: []string{"NextToken"},
+ LimitToken: "MaxResults",
+ TruncationToken: "",
+ },
}
if input == nil {
@@ -12738,7 +14980,7 @@ func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *
// with the main route table. This command does not return the subnet ID for
// implicit associations.
//
-// For more information, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// For more information, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -12769,12 +15011,62 @@ func (c *EC2) DescribeRouteTablesWithContext(ctx aws.Context, input *DescribeRou
return out, req.Send()
}
+// DescribeRouteTablesPages iterates over the pages of a DescribeRouteTables operation,
+// calling the "fn" function with the response data for each page. To stop
+// iterating, return false from the fn function.
+//
+// See DescribeRouteTables method for more information on how to use this operation.
+//
+// Note: This operation can generate multiple requests to a service.
+//
+// // Example iterating over at most 3 pages of a DescribeRouteTables operation.
+// pageNum := 0
+// err := client.DescribeRouteTablesPages(params,
+// func(page *DescribeRouteTablesOutput, lastPage bool) bool {
+// pageNum++
+// fmt.Println(page)
+// return pageNum <= 3
+// })
+//
+func (c *EC2) DescribeRouteTablesPages(input *DescribeRouteTablesInput, fn func(*DescribeRouteTablesOutput, bool) bool) error {
+ return c.DescribeRouteTablesPagesWithContext(aws.BackgroundContext(), input, fn)
+}
+
+// DescribeRouteTablesPagesWithContext same as DescribeRouteTablesPages except
+// it takes a Context and allows setting request options on the pages.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeRouteTablesPagesWithContext(ctx aws.Context, input *DescribeRouteTablesInput, fn func(*DescribeRouteTablesOutput, bool) bool, opts ...request.Option) error {
+ p := request.Pagination{
+ NewRequest: func() (*request.Request, error) {
+ var inCpy *DescribeRouteTablesInput
+ if input != nil {
+ tmp := *input
+ inCpy = &tmp
+ }
+ req, _ := c.DescribeRouteTablesRequest(inCpy)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return req, nil
+ },
+ }
+
+ cont := true
+ for p.Next() && cont {
+ cont = fn(p.Page().(*DescribeRouteTablesOutput), !p.HasNextPage())
+ }
+ return p.Err()
+}
+
const opDescribeScheduledInstanceAvailability = "DescribeScheduledInstanceAvailability"
// DescribeScheduledInstanceAvailabilityRequest generates a "aws/request.Request" representing the
// client's request for the DescribeScheduledInstanceAvailability operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12856,7 +15148,7 @@ const opDescribeScheduledInstances = "DescribeScheduledInstances"
// DescribeScheduledInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeScheduledInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -12930,7 +15222,7 @@ const opDescribeSecurityGroupReferences = "DescribeSecurityGroupReferences"
// DescribeSecurityGroupReferencesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSecurityGroupReferences operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13005,7 +15297,7 @@ const opDescribeSecurityGroups = "DescribeSecurityGroups"
// DescribeSecurityGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSecurityGroups operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13031,6 +15323,12 @@ func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput)
Name: opDescribeSecurityGroups,
HTTPMethod: "POST",
HTTPPath: "/",
+ Paginator: &request.Paginator{
+ InputTokens: []string{"NextToken"},
+ OutputTokens: []string{"NextToken"},
+ LimitToken: "MaxResults",
+ TruncationToken: "",
+ },
}
if input == nil {
@@ -13048,9 +15346,9 @@ func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput)
//
// A security group is for use with instances either in the EC2-Classic platform
// or in a specific VPC. For more information, see Amazon EC2 Security Groups
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your
-// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
+// VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -13081,12 +15379,62 @@ func (c *EC2) DescribeSecurityGroupsWithContext(ctx aws.Context, input *Describe
return out, req.Send()
}
+// DescribeSecurityGroupsPages iterates over the pages of a DescribeSecurityGroups operation,
+// calling the "fn" function with the response data for each page. To stop
+// iterating, return false from the fn function.
+//
+// See DescribeSecurityGroups method for more information on how to use this operation.
+//
+// Note: This operation can generate multiple requests to a service.
+//
+// // Example iterating over at most 3 pages of a DescribeSecurityGroups operation.
+// pageNum := 0
+// err := client.DescribeSecurityGroupsPages(params,
+// func(page *DescribeSecurityGroupsOutput, lastPage bool) bool {
+// pageNum++
+// fmt.Println(page)
+// return pageNum <= 3
+// })
+//
+func (c *EC2) DescribeSecurityGroupsPages(input *DescribeSecurityGroupsInput, fn func(*DescribeSecurityGroupsOutput, bool) bool) error {
+ return c.DescribeSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
+}
+
+// DescribeSecurityGroupsPagesWithContext same as DescribeSecurityGroupsPages except
+// it takes a Context and allows setting request options on the pages.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeSecurityGroupsInput, fn func(*DescribeSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
+ p := request.Pagination{
+ NewRequest: func() (*request.Request, error) {
+ var inCpy *DescribeSecurityGroupsInput
+ if input != nil {
+ tmp := *input
+ inCpy = &tmp
+ }
+ req, _ := c.DescribeSecurityGroupsRequest(inCpy)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return req, nil
+ },
+ }
+
+ cont := true
+ for p.Next() && cont {
+ cont = fn(p.Page().(*DescribeSecurityGroupsOutput), !p.HasNextPage())
+ }
+ return p.Err()
+}
+
const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute"
// DescribeSnapshotAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSnapshotAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13128,7 +15476,7 @@ func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeI
// Describes the specified attribute of the specified snapshot. You can specify
// only one attribute at a time.
//
-// For more information about EBS snapshots, see Amazon EBS Snapshots (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html)
+// For more information about EBS snapshots, see Amazon EBS Snapshots (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -13164,7 +15512,7 @@ const opDescribeSnapshots = "DescribeSnapshots"
// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSnapshots operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13253,7 +15601,7 @@ func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *requ
// a NextToken value that can be passed to a subsequent DescribeSnapshots request
// to retrieve the remaining results.
//
-// For more information about EBS snapshots, see Amazon EBS Snapshots (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html)
+// For more information about EBS snapshots, see Amazon EBS Snapshots (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -13339,7 +15687,7 @@ const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription"
// DescribeSpotDatafeedSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotDatafeedSubscription operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13379,7 +15727,7 @@ func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafee
// DescribeSpotDatafeedSubscription API operation for Amazon Elastic Compute Cloud.
//
// Describes the data feed for Spot Instances. For more information, see Spot
-// Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
+// Instance Data Feed (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -13415,7 +15763,7 @@ const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances"
// DescribeSpotFleetInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotFleetInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13489,7 +15837,7 @@ const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory"
// DescribeSpotFleetRequestHistoryRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotFleetRequestHistory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13533,7 +15881,7 @@ func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetReq
//
// Spot Fleet events are delayed by up to 30 seconds before they can be described.
// This ensures that you can query by the last evaluated time and not miss a
-// recorded event.
+// recorded event. Spot Fleet events are available for 48 hours.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -13568,7 +15916,7 @@ const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests"
// DescribeSpotFleetRequestsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotFleetRequests operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13701,7 +16049,7 @@ const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests"
// DescribeSpotInstanceRequestsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotInstanceRequests operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13748,6 +16096,13 @@ func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceReq
// instance. Alternatively, you can use DescribeInstances with a filter to look
// for instances where the instance lifecycle is spot.
//
+// We recommend that you set MaxResults to a value between 5 and 1000 to limit
+// the number of results returned. This paginates the output, which makes the
+// list more manageable and returns the results faster. If the list of results
+// exceeds your MaxResults value, then that number of results is returned along
+// with a NextToken value that can be passed to a subsequent DescribeSpotInstanceRequests
+// request to retrieve the remaining results.
+//
// Spot Instance requests are deleted four hours after they are canceled and
// their instances are terminated.
//
@@ -13784,7 +16139,7 @@ const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory"
// DescribeSpotPriceHistoryRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSpotPriceHistory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13830,7 +16185,7 @@ func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInp
// DescribeSpotPriceHistory API operation for Amazon Elastic Compute Cloud.
//
// Describes the Spot price history. For more information, see Spot Instance
-// Pricing History (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)
+// Pricing History (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// When you specify a start and end time, this operation returns the prices
@@ -13921,7 +16276,7 @@ const opDescribeStaleSecurityGroups = "DescribeStaleSecurityGroups"
// DescribeStaleSecurityGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeStaleSecurityGroups operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -13998,7 +16353,7 @@ const opDescribeSubnets = "DescribeSubnets"
// DescribeSubnetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSubnets operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14039,7 +16394,7 @@ func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request.
//
// Describes one or more of your subnets.
//
-// For more information, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
+// For more information, see Your VPC and Subnets (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14075,7 +16430,7 @@ const opDescribeTags = "DescribeTags"
// DescribeTagsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTags operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14122,7 +16477,7 @@ func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Reques
//
// Describes one or more of the tags for your EC2 resources.
//
-// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
+// For more information about tags, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14203,12 +16558,314 @@ func (c *EC2) DescribeTagsPagesWithContext(ctx aws.Context, input *DescribeTagsI
return p.Err()
}
+const opDescribeTransitGatewayAttachments = "DescribeTransitGatewayAttachments"
+
+// DescribeTransitGatewayAttachmentsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeTransitGatewayAttachments operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeTransitGatewayAttachments for more information on using the DescribeTransitGatewayAttachments
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeTransitGatewayAttachmentsRequest method.
+// req, resp := client.DescribeTransitGatewayAttachmentsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayAttachments
+func (c *EC2) DescribeTransitGatewayAttachmentsRequest(input *DescribeTransitGatewayAttachmentsInput) (req *request.Request, output *DescribeTransitGatewayAttachmentsOutput) {
+ op := &request.Operation{
+ Name: opDescribeTransitGatewayAttachments,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeTransitGatewayAttachmentsInput{}
+ }
+
+ output = &DescribeTransitGatewayAttachmentsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeTransitGatewayAttachments API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more attachments between resources and transit gateways.
+// By default, all attachments are described. Alternatively, you can filter
+// the results by attachment ID, attachment state, resource ID, or resource
+// owner.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeTransitGatewayAttachments for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayAttachments
+func (c *EC2) DescribeTransitGatewayAttachments(input *DescribeTransitGatewayAttachmentsInput) (*DescribeTransitGatewayAttachmentsOutput, error) {
+ req, out := c.DescribeTransitGatewayAttachmentsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeTransitGatewayAttachmentsWithContext is the same as DescribeTransitGatewayAttachments with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeTransitGatewayAttachments for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeTransitGatewayAttachmentsWithContext(ctx aws.Context, input *DescribeTransitGatewayAttachmentsInput, opts ...request.Option) (*DescribeTransitGatewayAttachmentsOutput, error) {
+ req, out := c.DescribeTransitGatewayAttachmentsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeTransitGatewayRouteTables = "DescribeTransitGatewayRouteTables"
+
+// DescribeTransitGatewayRouteTablesRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeTransitGatewayRouteTables operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeTransitGatewayRouteTables for more information on using the DescribeTransitGatewayRouteTables
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeTransitGatewayRouteTablesRequest method.
+// req, resp := client.DescribeTransitGatewayRouteTablesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayRouteTables
+func (c *EC2) DescribeTransitGatewayRouteTablesRequest(input *DescribeTransitGatewayRouteTablesInput) (req *request.Request, output *DescribeTransitGatewayRouteTablesOutput) {
+ op := &request.Operation{
+ Name: opDescribeTransitGatewayRouteTables,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeTransitGatewayRouteTablesInput{}
+ }
+
+ output = &DescribeTransitGatewayRouteTablesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeTransitGatewayRouteTables API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more transit gateway route tables. By default, all transit
+// gateway route tables are described. Alternatively, you can filter the results.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeTransitGatewayRouteTables for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayRouteTables
+func (c *EC2) DescribeTransitGatewayRouteTables(input *DescribeTransitGatewayRouteTablesInput) (*DescribeTransitGatewayRouteTablesOutput, error) {
+ req, out := c.DescribeTransitGatewayRouteTablesRequest(input)
+ return out, req.Send()
+}
+
+// DescribeTransitGatewayRouteTablesWithContext is the same as DescribeTransitGatewayRouteTables with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeTransitGatewayRouteTables for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeTransitGatewayRouteTablesWithContext(ctx aws.Context, input *DescribeTransitGatewayRouteTablesInput, opts ...request.Option) (*DescribeTransitGatewayRouteTablesOutput, error) {
+ req, out := c.DescribeTransitGatewayRouteTablesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeTransitGatewayVpcAttachments = "DescribeTransitGatewayVpcAttachments"
+
+// DescribeTransitGatewayVpcAttachmentsRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeTransitGatewayVpcAttachments operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeTransitGatewayVpcAttachments for more information on using the DescribeTransitGatewayVpcAttachments
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeTransitGatewayVpcAttachmentsRequest method.
+// req, resp := client.DescribeTransitGatewayVpcAttachmentsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayVpcAttachments
+func (c *EC2) DescribeTransitGatewayVpcAttachmentsRequest(input *DescribeTransitGatewayVpcAttachmentsInput) (req *request.Request, output *DescribeTransitGatewayVpcAttachmentsOutput) {
+ op := &request.Operation{
+ Name: opDescribeTransitGatewayVpcAttachments,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeTransitGatewayVpcAttachmentsInput{}
+ }
+
+ output = &DescribeTransitGatewayVpcAttachmentsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeTransitGatewayVpcAttachments API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more VPC attachments. By default, all VPC attachments are
+// described. Alternatively, you can filter the results.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeTransitGatewayVpcAttachments for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayVpcAttachments
+func (c *EC2) DescribeTransitGatewayVpcAttachments(input *DescribeTransitGatewayVpcAttachmentsInput) (*DescribeTransitGatewayVpcAttachmentsOutput, error) {
+ req, out := c.DescribeTransitGatewayVpcAttachmentsRequest(input)
+ return out, req.Send()
+}
+
+// DescribeTransitGatewayVpcAttachmentsWithContext is the same as DescribeTransitGatewayVpcAttachments with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeTransitGatewayVpcAttachments for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeTransitGatewayVpcAttachmentsWithContext(ctx aws.Context, input *DescribeTransitGatewayVpcAttachmentsInput, opts ...request.Option) (*DescribeTransitGatewayVpcAttachmentsOutput, error) {
+ req, out := c.DescribeTransitGatewayVpcAttachmentsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opDescribeTransitGateways = "DescribeTransitGateways"
+
+// DescribeTransitGatewaysRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeTransitGateways operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeTransitGateways for more information on using the DescribeTransitGateways
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeTransitGatewaysRequest method.
+// req, resp := client.DescribeTransitGatewaysRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGateways
+func (c *EC2) DescribeTransitGatewaysRequest(input *DescribeTransitGatewaysInput) (req *request.Request, output *DescribeTransitGatewaysOutput) {
+ op := &request.Operation{
+ Name: opDescribeTransitGateways,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeTransitGatewaysInput{}
+ }
+
+ output = &DescribeTransitGatewaysOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeTransitGateways API operation for Amazon Elastic Compute Cloud.
+//
+// Describes one or more transit gateways. By default, all transit gateways
+// are described. Alternatively, you can filter the results.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DescribeTransitGateways for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGateways
+func (c *EC2) DescribeTransitGateways(input *DescribeTransitGatewaysInput) (*DescribeTransitGatewaysOutput, error) {
+ req, out := c.DescribeTransitGatewaysRequest(input)
+ return out, req.Send()
+}
+
+// DescribeTransitGatewaysWithContext is the same as DescribeTransitGateways with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeTransitGateways for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DescribeTransitGatewaysWithContext(ctx aws.Context, input *DescribeTransitGatewaysInput, opts ...request.Option) (*DescribeTransitGatewaysOutput, error) {
+ req, out := c.DescribeTransitGatewaysRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeVolumeAttribute = "DescribeVolumeAttribute"
// DescribeVolumeAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVolumeAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14250,7 +16907,7 @@ func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput
// Describes the specified attribute of the specified volume. You can specify
// only one attribute at a time.
//
-// For more information about EBS volumes, see Amazon EBS Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html)
+// For more information about EBS volumes, see Amazon EBS Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14286,7 +16943,7 @@ const opDescribeVolumeStatus = "DescribeVolumeStatus"
// DescribeVolumeStatusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVolumeStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14349,7 +17006,7 @@ func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req
// If the status is insufficient-data, then the checks may still be taking place
// on your volume at the time. We recommend that you retry the request. For
// more information about volume status, see Monitoring the Status of Your Volumes
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-status.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-status.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Events: Reflect the cause of a volume status and may require you to take
@@ -14451,7 +17108,7 @@ const opDescribeVolumes = "DescribeVolumes"
// DescribeVolumesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVolumes operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14505,7 +17162,7 @@ func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request.
// a NextToken value that can be passed to a subsequent DescribeVolumes request
// to retrieve the remaining results.
//
-// For more information about EBS volumes, see Amazon EBS Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html)
+// For more information about EBS volumes, see Amazon EBS Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14591,7 +17248,7 @@ const opDescribeVolumesModifications = "DescribeVolumesModifications"
// DescribeVolumesModificationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVolumesModifications operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14641,8 +17298,8 @@ func (c *EC2) DescribeVolumesModificationsRequest(input *DescribeVolumesModifica
//
// You can also use CloudWatch Events to check the status of a modification
// to an EBS volume. For information about CloudWatch Events, see the Amazon
-// CloudWatch Events User Guide (http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
-// For more information, see Monitoring Volume Modifications" (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods)
+// CloudWatch Events User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
+// For more information, see Monitoring Volume Modifications" (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14678,7 +17335,7 @@ const opDescribeVpcAttribute = "DescribeVpcAttribute"
// DescribeVpcAttributeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14753,7 +17410,7 @@ const opDescribeVpcClassicLink = "DescribeVpcClassicLink"
// DescribeVpcClassicLinkRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcClassicLink operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14827,7 +17484,7 @@ const opDescribeVpcClassicLinkDnsSupport = "DescribeVpcClassicLinkDnsSupport"
// DescribeVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcClassicLinkDnsSupport operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14871,7 +17528,7 @@ func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicL
// IP address when addressed from an instance in the VPC to which it's linked.
// Similarly, the DNS hostname of an instance in a VPC resolves to its private
// IP address when addressed from a linked EC2-Classic instance. For more information,
-// see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
+// see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -14907,7 +17564,7 @@ const opDescribeVpcEndpointConnectionNotifications = "DescribeVpcEndpointConnect
// DescribeVpcEndpointConnectionNotificationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpointConnectionNotifications operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -14982,7 +17639,7 @@ const opDescribeVpcEndpointConnections = "DescribeVpcEndpointConnections"
// DescribeVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpointConnections operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15057,7 +17714,7 @@ const opDescribeVpcEndpointServiceConfigurations = "DescribeVpcEndpointServiceCo
// DescribeVpcEndpointServiceConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpointServiceConfigurations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15131,7 +17788,7 @@ const opDescribeVpcEndpointServicePermissions = "DescribeVpcEndpointServicePermi
// DescribeVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpointServicePermissions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15206,7 +17863,7 @@ const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices"
// DescribeVpcEndpointServicesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpointServices operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15280,7 +17937,7 @@ const opDescribeVpcEndpoints = "DescribeVpcEndpoints"
// DescribeVpcEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcEndpoints operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15354,7 +18011,7 @@ const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections"
// DescribeVpcPeeringConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcPeeringConnections operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15428,7 +18085,7 @@ const opDescribeVpcs = "DescribeVpcs"
// DescribeVpcsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpcs operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15502,7 +18159,7 @@ const opDescribeVpnConnections = "DescribeVpnConnections"
// DescribeVpnConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpnConnections operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15543,9 +18200,8 @@ func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput)
//
// Describes one or more of your VPN connections.
//
-// For more information about VPN connections, see AWS Managed VPN Connections
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) in the
-// Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -15580,7 +18236,7 @@ const opDescribeVpnGateways = "DescribeVpnGateways"
// DescribeVpnGatewaysRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVpnGateways operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15621,9 +18277,8 @@ func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req *
//
// Describes one or more of your virtual private gateways.
//
-// For more information about virtual private gateways, see AWS Managed VPN
-// Connections (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html)
-// in the Amazon Virtual Private Cloud User Guide.
+// For more information, see AWS Site-to-Site VPN (https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+// in the AWS Site-to-Site VPN User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -15658,7 +18313,7 @@ const opDetachClassicLinkVpc = "DetachClassicLinkVpc"
// DetachClassicLinkVpcRequest generates a "aws/request.Request" representing the
// client's request for the DetachClassicLinkVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15734,7 +18389,7 @@ const opDetachInternetGateway = "DetachInternetGateway"
// DetachInternetGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DetachInternetGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15768,8 +18423,7 @@ func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (r
output = &DetachInternetGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -15812,7 +18466,7 @@ const opDetachNetworkInterface = "DetachNetworkInterface"
// DetachNetworkInterfaceRequest generates a "aws/request.Request" representing the
// client's request for the DetachNetworkInterface operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15846,8 +18500,7 @@ func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput)
output = &DetachNetworkInterfaceOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -15888,7 +18541,7 @@ const opDetachVolume = "DetachVolume"
// DetachVolumeRequest generates a "aws/request.Request" representing the
// client's request for the DetachVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -15939,7 +18592,7 @@ func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Reques
// When a volume with an AWS Marketplace product code is detached from an instance,
// the product code is no longer associated with the instance.
//
-// For more information, see Detaching an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)
+// For more information, see Detaching an Amazon EBS Volume (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -15975,7 +18628,7 @@ const opDetachVpnGateway = "DetachVpnGateway"
// DetachVpnGatewayRequest generates a "aws/request.Request" representing the
// client's request for the DetachVpnGateway operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16009,8 +18662,7 @@ func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *reques
output = &DetachVpnGatewayOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16053,12 +18705,87 @@ func (c *EC2) DetachVpnGatewayWithContext(ctx aws.Context, input *DetachVpnGatew
return out, req.Send()
}
+const opDisableTransitGatewayRouteTablePropagation = "DisableTransitGatewayRouteTablePropagation"
+
+// DisableTransitGatewayRouteTablePropagationRequest generates a "aws/request.Request" representing the
+// client's request for the DisableTransitGatewayRouteTablePropagation operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DisableTransitGatewayRouteTablePropagation for more information on using the DisableTransitGatewayRouteTablePropagation
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DisableTransitGatewayRouteTablePropagationRequest method.
+// req, resp := client.DisableTransitGatewayRouteTablePropagationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableTransitGatewayRouteTablePropagation
+func (c *EC2) DisableTransitGatewayRouteTablePropagationRequest(input *DisableTransitGatewayRouteTablePropagationInput) (req *request.Request, output *DisableTransitGatewayRouteTablePropagationOutput) {
+ op := &request.Operation{
+ Name: opDisableTransitGatewayRouteTablePropagation,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DisableTransitGatewayRouteTablePropagationInput{}
+ }
+
+ output = &DisableTransitGatewayRouteTablePropagationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DisableTransitGatewayRouteTablePropagation API operation for Amazon Elastic Compute Cloud.
+//
+// Disables the specified resource attachment from propagating routes to the
+// specified propagation route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DisableTransitGatewayRouteTablePropagation for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisableTransitGatewayRouteTablePropagation
+func (c *EC2) DisableTransitGatewayRouteTablePropagation(input *DisableTransitGatewayRouteTablePropagationInput) (*DisableTransitGatewayRouteTablePropagationOutput, error) {
+ req, out := c.DisableTransitGatewayRouteTablePropagationRequest(input)
+ return out, req.Send()
+}
+
+// DisableTransitGatewayRouteTablePropagationWithContext is the same as DisableTransitGatewayRouteTablePropagation with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DisableTransitGatewayRouteTablePropagation for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DisableTransitGatewayRouteTablePropagationWithContext(ctx aws.Context, input *DisableTransitGatewayRouteTablePropagationInput, opts ...request.Option) (*DisableTransitGatewayRouteTablePropagationOutput, error) {
+ req, out := c.DisableTransitGatewayRouteTablePropagationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation"
// DisableVgwRoutePropagationRequest generates a "aws/request.Request" representing the
// client's request for the DisableVgwRoutePropagation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16092,8 +18819,7 @@ func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagatio
output = &DisableVgwRoutePropagationOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16135,7 +18861,7 @@ const opDisableVpcClassicLink = "DisableVpcClassicLink"
// DisableVpcClassicLinkRequest generates a "aws/request.Request" representing the
// client's request for the DisableVpcClassicLink operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16210,7 +18936,7 @@ const opDisableVpcClassicLinkDnsSupport = "DisableVpcClassicLinkDnsSupport"
// DisableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the
// client's request for the DisableVpcClassicLinkDnsSupport operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16252,7 +18978,7 @@ func (c *EC2) DisableVpcClassicLinkDnsSupportRequest(input *DisableVpcClassicLin
// Disables ClassicLink DNS support for a VPC. If disabled, DNS hostnames resolve
// to public IP addresses when addressed between a linked EC2-Classic instance
// and instances in the VPC to which it's linked. For more information, see
-// ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
+// ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -16288,7 +19014,7 @@ const opDisassociateAddress = "DisassociateAddress"
// DisassociateAddressRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateAddress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16322,8 +19048,7 @@ func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *
output = &DisassociateAddressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16333,7 +19058,7 @@ func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *
// it's associated with.
//
// An Elastic IP address is for use in either the EC2-Classic platform or in
-// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
+// a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// This is an idempotent operation. If you perform the operation more than once,
@@ -16367,12 +19092,96 @@ func (c *EC2) DisassociateAddressWithContext(ctx aws.Context, input *Disassociat
return out, req.Send()
}
+const opDisassociateClientVpnTargetNetwork = "DisassociateClientVpnTargetNetwork"
+
+// DisassociateClientVpnTargetNetworkRequest generates a "aws/request.Request" representing the
+// client's request for the DisassociateClientVpnTargetNetwork operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DisassociateClientVpnTargetNetwork for more information on using the DisassociateClientVpnTargetNetwork
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DisassociateClientVpnTargetNetworkRequest method.
+// req, resp := client.DisassociateClientVpnTargetNetworkRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateClientVpnTargetNetwork
+func (c *EC2) DisassociateClientVpnTargetNetworkRequest(input *DisassociateClientVpnTargetNetworkInput) (req *request.Request, output *DisassociateClientVpnTargetNetworkOutput) {
+ op := &request.Operation{
+ Name: opDisassociateClientVpnTargetNetwork,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DisassociateClientVpnTargetNetworkInput{}
+ }
+
+ output = &DisassociateClientVpnTargetNetworkOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DisassociateClientVpnTargetNetwork API operation for Amazon Elastic Compute Cloud.
+//
+// Disassociates a target network from the specified Client VPN endpoint. When
+// you disassociate the last target network from a Client VPN, the following
+// happens:
+//
+// * The route that was automatically added for the VPC is deleted
+//
+// * All active client connections are terminated
+//
+// * New client connections are disallowed
+//
+// * The Client VPN endpoint's status changes to pending-associate
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DisassociateClientVpnTargetNetwork for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateClientVpnTargetNetwork
+func (c *EC2) DisassociateClientVpnTargetNetwork(input *DisassociateClientVpnTargetNetworkInput) (*DisassociateClientVpnTargetNetworkOutput, error) {
+ req, out := c.DisassociateClientVpnTargetNetworkRequest(input)
+ return out, req.Send()
+}
+
+// DisassociateClientVpnTargetNetworkWithContext is the same as DisassociateClientVpnTargetNetwork with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DisassociateClientVpnTargetNetwork for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DisassociateClientVpnTargetNetworkWithContext(ctx aws.Context, input *DisassociateClientVpnTargetNetworkInput, opts ...request.Option) (*DisassociateClientVpnTargetNetworkOutput, error) {
+ req, out := c.DisassociateClientVpnTargetNetworkRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDisassociateIamInstanceProfile = "DisassociateIamInstanceProfile"
// DisassociateIamInstanceProfileRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateIamInstanceProfile operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16448,7 +19257,7 @@ const opDisassociateRouteTable = "DisassociateRouteTable"
// DisassociateRouteTableRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateRouteTable operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16482,8 +19291,7 @@ func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput)
output = &DisassociateRouteTableOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16493,7 +19301,7 @@ func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput)
//
// After you perform this action, the subnet no longer uses the routes in the
// route table. Instead, it uses the routes in the VPC's main route table. For
-// more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// more information about route tables, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -16529,7 +19337,7 @@ const opDisassociateSubnetCidrBlock = "DisassociateSubnetCidrBlock"
// DisassociateSubnetCidrBlockRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateSubnetCidrBlock operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16600,12 +19408,86 @@ func (c *EC2) DisassociateSubnetCidrBlockWithContext(ctx aws.Context, input *Dis
return out, req.Send()
}
+const opDisassociateTransitGatewayRouteTable = "DisassociateTransitGatewayRouteTable"
+
+// DisassociateTransitGatewayRouteTableRequest generates a "aws/request.Request" representing the
+// client's request for the DisassociateTransitGatewayRouteTable operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DisassociateTransitGatewayRouteTable for more information on using the DisassociateTransitGatewayRouteTable
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DisassociateTransitGatewayRouteTableRequest method.
+// req, resp := client.DisassociateTransitGatewayRouteTableRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateTransitGatewayRouteTable
+func (c *EC2) DisassociateTransitGatewayRouteTableRequest(input *DisassociateTransitGatewayRouteTableInput) (req *request.Request, output *DisassociateTransitGatewayRouteTableOutput) {
+ op := &request.Operation{
+ Name: opDisassociateTransitGatewayRouteTable,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DisassociateTransitGatewayRouteTableInput{}
+ }
+
+ output = &DisassociateTransitGatewayRouteTableOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DisassociateTransitGatewayRouteTable API operation for Amazon Elastic Compute Cloud.
+//
+// Disassociates a resource attachment from a transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation DisassociateTransitGatewayRouteTable for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DisassociateTransitGatewayRouteTable
+func (c *EC2) DisassociateTransitGatewayRouteTable(input *DisassociateTransitGatewayRouteTableInput) (*DisassociateTransitGatewayRouteTableOutput, error) {
+ req, out := c.DisassociateTransitGatewayRouteTableRequest(input)
+ return out, req.Send()
+}
+
+// DisassociateTransitGatewayRouteTableWithContext is the same as DisassociateTransitGatewayRouteTable with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DisassociateTransitGatewayRouteTable for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) DisassociateTransitGatewayRouteTableWithContext(ctx aws.Context, input *DisassociateTransitGatewayRouteTableInput, opts ...request.Option) (*DisassociateTransitGatewayRouteTableOutput, error) {
+ req, out := c.DisassociateTransitGatewayRouteTableRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDisassociateVpcCidrBlock = "DisassociateVpcCidrBlock"
// DisassociateVpcCidrBlockRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateVpcCidrBlock operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16680,12 +19562,87 @@ func (c *EC2) DisassociateVpcCidrBlockWithContext(ctx aws.Context, input *Disass
return out, req.Send()
}
+const opEnableTransitGatewayRouteTablePropagation = "EnableTransitGatewayRouteTablePropagation"
+
+// EnableTransitGatewayRouteTablePropagationRequest generates a "aws/request.Request" representing the
+// client's request for the EnableTransitGatewayRouteTablePropagation operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See EnableTransitGatewayRouteTablePropagation for more information on using the EnableTransitGatewayRouteTablePropagation
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the EnableTransitGatewayRouteTablePropagationRequest method.
+// req, resp := client.EnableTransitGatewayRouteTablePropagationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableTransitGatewayRouteTablePropagation
+func (c *EC2) EnableTransitGatewayRouteTablePropagationRequest(input *EnableTransitGatewayRouteTablePropagationInput) (req *request.Request, output *EnableTransitGatewayRouteTablePropagationOutput) {
+ op := &request.Operation{
+ Name: opEnableTransitGatewayRouteTablePropagation,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &EnableTransitGatewayRouteTablePropagationInput{}
+ }
+
+ output = &EnableTransitGatewayRouteTablePropagationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// EnableTransitGatewayRouteTablePropagation API operation for Amazon Elastic Compute Cloud.
+//
+// Enables the specified attachment to propagate routes to the specified propagation
+// route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation EnableTransitGatewayRouteTablePropagation for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EnableTransitGatewayRouteTablePropagation
+func (c *EC2) EnableTransitGatewayRouteTablePropagation(input *EnableTransitGatewayRouteTablePropagationInput) (*EnableTransitGatewayRouteTablePropagationOutput, error) {
+ req, out := c.EnableTransitGatewayRouteTablePropagationRequest(input)
+ return out, req.Send()
+}
+
+// EnableTransitGatewayRouteTablePropagationWithContext is the same as EnableTransitGatewayRouteTablePropagation with the addition of
+// the ability to pass a context and additional request options.
+//
+// See EnableTransitGatewayRouteTablePropagation for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) EnableTransitGatewayRouteTablePropagationWithContext(ctx aws.Context, input *EnableTransitGatewayRouteTablePropagationInput, opts ...request.Option) (*EnableTransitGatewayRouteTablePropagationOutput, error) {
+ req, out := c.EnableTransitGatewayRouteTablePropagationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation"
// EnableVgwRoutePropagationRequest generates a "aws/request.Request" representing the
// client's request for the EnableVgwRoutePropagation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16719,8 +19676,7 @@ func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationI
output = &EnableVgwRoutePropagationOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16762,7 +19718,7 @@ const opEnableVolumeIO = "EnableVolumeIO"
// EnableVolumeIORequest generates a "aws/request.Request" representing the
// client's request for the EnableVolumeIO operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16796,8 +19752,7 @@ func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Re
output = &EnableVolumeIOOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -16839,7 +19794,7 @@ const opEnableVpcClassicLink = "EnableVpcClassicLink"
// EnableVpcClassicLinkRequest generates a "aws/request.Request" representing the
// client's request for the EnableVpcClassicLink operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16883,7 +19838,7 @@ func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req
// You cannot enable your VPC for ClassicLink if any of your VPC route tables
// have existing routes for address ranges within the 10.0.0.0/8 IP address
// range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16
-// IP address ranges. For more information, see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
+// IP address ranges. For more information, see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -16919,7 +19874,7 @@ const opEnableVpcClassicLinkDnsSupport = "EnableVpcClassicLinkDnsSupport"
// EnableVpcClassicLinkDnsSupportRequest generates a "aws/request.Request" representing the
// client's request for the EnableVpcClassicLinkDnsSupport operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -16963,7 +19918,7 @@ func (c *EC2) EnableVpcClassicLinkDnsSupportRequest(input *EnableVpcClassicLinkD
// IP address when addressed from an instance in the VPC to which it's linked.
// Similarly, the DNS hostname of an instance in a VPC resolves to its private
// IP address when addressed from a linked EC2-Classic instance. For more information,
-// see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
+// see ClassicLink (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -16994,12 +19949,240 @@ func (c *EC2) EnableVpcClassicLinkDnsSupportWithContext(ctx aws.Context, input *
return out, req.Send()
}
+const opExportClientVpnClientCertificateRevocationList = "ExportClientVpnClientCertificateRevocationList"
+
+// ExportClientVpnClientCertificateRevocationListRequest generates a "aws/request.Request" representing the
+// client's request for the ExportClientVpnClientCertificateRevocationList operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ExportClientVpnClientCertificateRevocationList for more information on using the ExportClientVpnClientCertificateRevocationList
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ExportClientVpnClientCertificateRevocationListRequest method.
+// req, resp := client.ExportClientVpnClientCertificateRevocationListRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientCertificateRevocationList
+func (c *EC2) ExportClientVpnClientCertificateRevocationListRequest(input *ExportClientVpnClientCertificateRevocationListInput) (req *request.Request, output *ExportClientVpnClientCertificateRevocationListOutput) {
+ op := &request.Operation{
+ Name: opExportClientVpnClientCertificateRevocationList,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ExportClientVpnClientCertificateRevocationListInput{}
+ }
+
+ output = &ExportClientVpnClientCertificateRevocationListOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ExportClientVpnClientCertificateRevocationList API operation for Amazon Elastic Compute Cloud.
+//
+// Downloads the client certificate revocation list for the specified Client
+// VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ExportClientVpnClientCertificateRevocationList for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientCertificateRevocationList
+func (c *EC2) ExportClientVpnClientCertificateRevocationList(input *ExportClientVpnClientCertificateRevocationListInput) (*ExportClientVpnClientCertificateRevocationListOutput, error) {
+ req, out := c.ExportClientVpnClientCertificateRevocationListRequest(input)
+ return out, req.Send()
+}
+
+// ExportClientVpnClientCertificateRevocationListWithContext is the same as ExportClientVpnClientCertificateRevocationList with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ExportClientVpnClientCertificateRevocationList for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ExportClientVpnClientCertificateRevocationListWithContext(ctx aws.Context, input *ExportClientVpnClientCertificateRevocationListInput, opts ...request.Option) (*ExportClientVpnClientCertificateRevocationListOutput, error) {
+ req, out := c.ExportClientVpnClientCertificateRevocationListRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opExportClientVpnClientConfiguration = "ExportClientVpnClientConfiguration"
+
+// ExportClientVpnClientConfigurationRequest generates a "aws/request.Request" representing the
+// client's request for the ExportClientVpnClientConfiguration operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ExportClientVpnClientConfiguration for more information on using the ExportClientVpnClientConfiguration
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ExportClientVpnClientConfigurationRequest method.
+// req, resp := client.ExportClientVpnClientConfigurationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientConfiguration
+func (c *EC2) ExportClientVpnClientConfigurationRequest(input *ExportClientVpnClientConfigurationInput) (req *request.Request, output *ExportClientVpnClientConfigurationOutput) {
+ op := &request.Operation{
+ Name: opExportClientVpnClientConfiguration,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ExportClientVpnClientConfigurationInput{}
+ }
+
+ output = &ExportClientVpnClientConfigurationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ExportClientVpnClientConfiguration API operation for Amazon Elastic Compute Cloud.
+//
+// Downloads the contents of the Client VPN endpoint configuration file for
+// the specified Client VPN endpoint. The Client VPN endpoint configuration
+// file includes the Client VPN endpoint and certificate information clients
+// need to establish a connection with the Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ExportClientVpnClientConfiguration for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportClientVpnClientConfiguration
+func (c *EC2) ExportClientVpnClientConfiguration(input *ExportClientVpnClientConfigurationInput) (*ExportClientVpnClientConfigurationOutput, error) {
+ req, out := c.ExportClientVpnClientConfigurationRequest(input)
+ return out, req.Send()
+}
+
+// ExportClientVpnClientConfigurationWithContext is the same as ExportClientVpnClientConfiguration with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ExportClientVpnClientConfiguration for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ExportClientVpnClientConfigurationWithContext(ctx aws.Context, input *ExportClientVpnClientConfigurationInput, opts ...request.Option) (*ExportClientVpnClientConfigurationOutput, error) {
+ req, out := c.ExportClientVpnClientConfigurationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opExportTransitGatewayRoutes = "ExportTransitGatewayRoutes"
+
+// ExportTransitGatewayRoutesRequest generates a "aws/request.Request" representing the
+// client's request for the ExportTransitGatewayRoutes operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ExportTransitGatewayRoutes for more information on using the ExportTransitGatewayRoutes
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ExportTransitGatewayRoutesRequest method.
+// req, resp := client.ExportTransitGatewayRoutesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportTransitGatewayRoutes
+func (c *EC2) ExportTransitGatewayRoutesRequest(input *ExportTransitGatewayRoutesInput) (req *request.Request, output *ExportTransitGatewayRoutesOutput) {
+ op := &request.Operation{
+ Name: opExportTransitGatewayRoutes,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ExportTransitGatewayRoutesInput{}
+ }
+
+ output = &ExportTransitGatewayRoutesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ExportTransitGatewayRoutes API operation for Amazon Elastic Compute Cloud.
+//
+// Exports routes from the specified transit gateway route table to the specified
+// S3 bucket. By default, all routes are exported. Alternatively, you can filter
+// by CIDR range.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ExportTransitGatewayRoutes for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ExportTransitGatewayRoutes
+func (c *EC2) ExportTransitGatewayRoutes(input *ExportTransitGatewayRoutesInput) (*ExportTransitGatewayRoutesOutput, error) {
+ req, out := c.ExportTransitGatewayRoutesRequest(input)
+ return out, req.Send()
+}
+
+// ExportTransitGatewayRoutesWithContext is the same as ExportTransitGatewayRoutes with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ExportTransitGatewayRoutes for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ExportTransitGatewayRoutesWithContext(ctx aws.Context, input *ExportTransitGatewayRoutesInput, opts ...request.Option) (*ExportTransitGatewayRoutesOutput, error) {
+ req, out := c.ExportTransitGatewayRoutesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opGetConsoleOutput = "GetConsoleOutput"
// GetConsoleOutputRequest generates a "aws/request.Request" representing the
// client's request for the GetConsoleOutput operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17053,7 +20236,7 @@ func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *reques
// during the instance lifecycle. This option is supported on instance types
// that use the Nitro hypervisor.
//
-// For more information, see Instance Console Output (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output)
+// For more information, see Instance Console Output (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -17089,7 +20272,7 @@ const opGetConsoleScreenshot = "GetConsoleScreenshot"
// GetConsoleScreenshotRequest generates a "aws/request.Request" representing the
// client's request for the GetConsoleScreenshot operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17165,7 +20348,7 @@ const opGetHostReservationPurchasePreview = "GetHostReservationPurchasePreview"
// GetHostReservationPurchasePreviewRequest generates a "aws/request.Request" representing the
// client's request for the GetHostReservationPurchasePreview operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17244,7 +20427,7 @@ const opGetLaunchTemplateData = "GetLaunchTemplateData"
// GetLaunchTemplateDataRequest generates a "aws/request.Request" representing the
// client's request for the GetLaunchTemplateData operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17319,7 +20502,7 @@ const opGetPasswordData = "GetPasswordData"
// GetPasswordDataRequest generates a "aws/request.Request" representing the
// client's request for the GetPasswordData operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17362,8 +20545,8 @@ func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request.
//
// The Windows password is generated at boot by the EC2Config service or EC2Launch
// scripts (Windows Server 2016 and later). This usually only happens the first
-// time an instance is launched. For more information, see EC2Config (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html)
-// and EC2Launch (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html)
+// time an instance is launched. For more information, see EC2Config (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html)
+// and EC2Launch (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// For the EC2Config service, the password is not generated for rebundled AMIs
@@ -17410,7 +20593,7 @@ const opGetReservedInstancesExchangeQuote = "GetReservedInstancesExchangeQuote"
// GetReservedInstancesExchangeQuoteRequest generates a "aws/request.Request" representing the
// client's request for the GetReservedInstancesExchangeQuote operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17482,12 +20665,315 @@ func (c *EC2) GetReservedInstancesExchangeQuoteWithContext(ctx aws.Context, inpu
return out, req.Send()
}
+const opGetTransitGatewayAttachmentPropagations = "GetTransitGatewayAttachmentPropagations"
+
+// GetTransitGatewayAttachmentPropagationsRequest generates a "aws/request.Request" representing the
+// client's request for the GetTransitGatewayAttachmentPropagations operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetTransitGatewayAttachmentPropagations for more information on using the GetTransitGatewayAttachmentPropagations
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the GetTransitGatewayAttachmentPropagationsRequest method.
+// req, resp := client.GetTransitGatewayAttachmentPropagationsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayAttachmentPropagations
+func (c *EC2) GetTransitGatewayAttachmentPropagationsRequest(input *GetTransitGatewayAttachmentPropagationsInput) (req *request.Request, output *GetTransitGatewayAttachmentPropagationsOutput) {
+ op := &request.Operation{
+ Name: opGetTransitGatewayAttachmentPropagations,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &GetTransitGatewayAttachmentPropagationsInput{}
+ }
+
+ output = &GetTransitGatewayAttachmentPropagationsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// GetTransitGatewayAttachmentPropagations API operation for Amazon Elastic Compute Cloud.
+//
+// Lists the route tables to which the specified resource attachment propagates
+// routes.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation GetTransitGatewayAttachmentPropagations for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayAttachmentPropagations
+func (c *EC2) GetTransitGatewayAttachmentPropagations(input *GetTransitGatewayAttachmentPropagationsInput) (*GetTransitGatewayAttachmentPropagationsOutput, error) {
+ req, out := c.GetTransitGatewayAttachmentPropagationsRequest(input)
+ return out, req.Send()
+}
+
+// GetTransitGatewayAttachmentPropagationsWithContext is the same as GetTransitGatewayAttachmentPropagations with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetTransitGatewayAttachmentPropagations for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) GetTransitGatewayAttachmentPropagationsWithContext(ctx aws.Context, input *GetTransitGatewayAttachmentPropagationsInput, opts ...request.Option) (*GetTransitGatewayAttachmentPropagationsOutput, error) {
+ req, out := c.GetTransitGatewayAttachmentPropagationsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opGetTransitGatewayRouteTableAssociations = "GetTransitGatewayRouteTableAssociations"
+
+// GetTransitGatewayRouteTableAssociationsRequest generates a "aws/request.Request" representing the
+// client's request for the GetTransitGatewayRouteTableAssociations operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetTransitGatewayRouteTableAssociations for more information on using the GetTransitGatewayRouteTableAssociations
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the GetTransitGatewayRouteTableAssociationsRequest method.
+// req, resp := client.GetTransitGatewayRouteTableAssociationsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTableAssociations
+func (c *EC2) GetTransitGatewayRouteTableAssociationsRequest(input *GetTransitGatewayRouteTableAssociationsInput) (req *request.Request, output *GetTransitGatewayRouteTableAssociationsOutput) {
+ op := &request.Operation{
+ Name: opGetTransitGatewayRouteTableAssociations,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &GetTransitGatewayRouteTableAssociationsInput{}
+ }
+
+ output = &GetTransitGatewayRouteTableAssociationsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// GetTransitGatewayRouteTableAssociations API operation for Amazon Elastic Compute Cloud.
+//
+// Gets information about the associations for the specified transit gateway
+// route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation GetTransitGatewayRouteTableAssociations for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTableAssociations
+func (c *EC2) GetTransitGatewayRouteTableAssociations(input *GetTransitGatewayRouteTableAssociationsInput) (*GetTransitGatewayRouteTableAssociationsOutput, error) {
+ req, out := c.GetTransitGatewayRouteTableAssociationsRequest(input)
+ return out, req.Send()
+}
+
+// GetTransitGatewayRouteTableAssociationsWithContext is the same as GetTransitGatewayRouteTableAssociations with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetTransitGatewayRouteTableAssociations for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) GetTransitGatewayRouteTableAssociationsWithContext(ctx aws.Context, input *GetTransitGatewayRouteTableAssociationsInput, opts ...request.Option) (*GetTransitGatewayRouteTableAssociationsOutput, error) {
+ req, out := c.GetTransitGatewayRouteTableAssociationsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opGetTransitGatewayRouteTablePropagations = "GetTransitGatewayRouteTablePropagations"
+
+// GetTransitGatewayRouteTablePropagationsRequest generates a "aws/request.Request" representing the
+// client's request for the GetTransitGatewayRouteTablePropagations operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetTransitGatewayRouteTablePropagations for more information on using the GetTransitGatewayRouteTablePropagations
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the GetTransitGatewayRouteTablePropagationsRequest method.
+// req, resp := client.GetTransitGatewayRouteTablePropagationsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTablePropagations
+func (c *EC2) GetTransitGatewayRouteTablePropagationsRequest(input *GetTransitGatewayRouteTablePropagationsInput) (req *request.Request, output *GetTransitGatewayRouteTablePropagationsOutput) {
+ op := &request.Operation{
+ Name: opGetTransitGatewayRouteTablePropagations,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &GetTransitGatewayRouteTablePropagationsInput{}
+ }
+
+ output = &GetTransitGatewayRouteTablePropagationsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// GetTransitGatewayRouteTablePropagations API operation for Amazon Elastic Compute Cloud.
+//
+// Gets information about the route table propagations for the specified transit
+// gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation GetTransitGatewayRouteTablePropagations for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/GetTransitGatewayRouteTablePropagations
+func (c *EC2) GetTransitGatewayRouteTablePropagations(input *GetTransitGatewayRouteTablePropagationsInput) (*GetTransitGatewayRouteTablePropagationsOutput, error) {
+ req, out := c.GetTransitGatewayRouteTablePropagationsRequest(input)
+ return out, req.Send()
+}
+
+// GetTransitGatewayRouteTablePropagationsWithContext is the same as GetTransitGatewayRouteTablePropagations with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetTransitGatewayRouteTablePropagations for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) GetTransitGatewayRouteTablePropagationsWithContext(ctx aws.Context, input *GetTransitGatewayRouteTablePropagationsInput, opts ...request.Option) (*GetTransitGatewayRouteTablePropagationsOutput, error) {
+ req, out := c.GetTransitGatewayRouteTablePropagationsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opImportClientVpnClientCertificateRevocationList = "ImportClientVpnClientCertificateRevocationList"
+
+// ImportClientVpnClientCertificateRevocationListRequest generates a "aws/request.Request" representing the
+// client's request for the ImportClientVpnClientCertificateRevocationList operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ImportClientVpnClientCertificateRevocationList for more information on using the ImportClientVpnClientCertificateRevocationList
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ImportClientVpnClientCertificateRevocationListRequest method.
+// req, resp := client.ImportClientVpnClientCertificateRevocationListRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportClientVpnClientCertificateRevocationList
+func (c *EC2) ImportClientVpnClientCertificateRevocationListRequest(input *ImportClientVpnClientCertificateRevocationListInput) (req *request.Request, output *ImportClientVpnClientCertificateRevocationListOutput) {
+ op := &request.Operation{
+ Name: opImportClientVpnClientCertificateRevocationList,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ImportClientVpnClientCertificateRevocationListInput{}
+ }
+
+ output = &ImportClientVpnClientCertificateRevocationListOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ImportClientVpnClientCertificateRevocationList API operation for Amazon Elastic Compute Cloud.
+//
+// Uploads a client certificate revocation list to the specified Client VPN
+// endpoint. Uploading a client certificate revocation list overwrites the existing
+// client certificate revocation list.
+//
+// Uploading a client certificate revocation list resets existing client connections.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ImportClientVpnClientCertificateRevocationList for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ImportClientVpnClientCertificateRevocationList
+func (c *EC2) ImportClientVpnClientCertificateRevocationList(input *ImportClientVpnClientCertificateRevocationListInput) (*ImportClientVpnClientCertificateRevocationListOutput, error) {
+ req, out := c.ImportClientVpnClientCertificateRevocationListRequest(input)
+ return out, req.Send()
+}
+
+// ImportClientVpnClientCertificateRevocationListWithContext is the same as ImportClientVpnClientCertificateRevocationList with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ImportClientVpnClientCertificateRevocationList for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ImportClientVpnClientCertificateRevocationListWithContext(ctx aws.Context, input *ImportClientVpnClientCertificateRevocationListInput, opts ...request.Option) (*ImportClientVpnClientCertificateRevocationListOutput, error) {
+ req, out := c.ImportClientVpnClientCertificateRevocationListRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opImportImage = "ImportImage"
// ImportImageRequest generates a "aws/request.Request" representing the
// client's request for the ImportImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17528,7 +21014,7 @@ func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request,
//
// Import single or multi-volume disk images or EBS snapshots into an Amazon
// Machine Image (AMI). For more information, see Importing a VM as an Image
-// Using VM Import/Export (http://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html)
+// Using VM Import/Export (https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html)
// in the VM Import/Export User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -17564,7 +21050,7 @@ const opImportInstance = "ImportInstance"
// ImportInstanceRequest generates a "aws/request.Request" representing the
// client's request for the ImportInstance operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17606,10 +21092,10 @@ func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Re
// Creates an import instance task using metadata from the specified disk image.
// ImportInstance only supports single-volume VMs. To import multi-volume VMs,
// use ImportImage. For more information, see Importing a Virtual Machine Using
-// the Amazon EC2 CLI (http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html).
+// the Amazon EC2 CLI (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-cli-vmimport-export.html).
//
// For information about the import manifest referenced by this API action,
-// see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
+// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -17644,7 +21130,7 @@ const opImportKeyPair = "ImportKeyPair"
// ImportKeyPairRequest generates a "aws/request.Request" representing the
// client's request for the ImportKeyPair operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17689,7 +21175,7 @@ func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Requ
// you create the key pair and give AWS just the public key. The private key
// is never transferred between you and AWS.
//
-// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+// For more information about key pairs, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -17725,7 +21211,7 @@ const opImportSnapshot = "ImportSnapshot"
// ImportSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the ImportSnapshot operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17799,7 +21285,7 @@ const opImportVolume = "ImportVolume"
// ImportVolumeRequest generates a "aws/request.Request" representing the
// client's request for the ImportVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17839,10 +21325,10 @@ func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Reques
// ImportVolume API operation for Amazon Elastic Compute Cloud.
//
// Creates an import volume task using metadata from the specified disk image.For
-// more information, see Importing Disks to Amazon EBS (http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/importing-your-volumes-into-amazon-ebs.html).
+// more information, see Importing Disks to Amazon EBS (https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/importing-your-volumes-into-amazon-ebs.html).
//
// For information about the import manifest referenced by this API action,
-// see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
+// see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -17872,12 +21358,168 @@ func (c *EC2) ImportVolumeWithContext(ctx aws.Context, input *ImportVolumeInput,
return out, req.Send()
}
+const opModifyCapacityReservation = "ModifyCapacityReservation"
+
+// ModifyCapacityReservationRequest generates a "aws/request.Request" representing the
+// client's request for the ModifyCapacityReservation operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ModifyCapacityReservation for more information on using the ModifyCapacityReservation
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ModifyCapacityReservationRequest method.
+// req, resp := client.ModifyCapacityReservationRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyCapacityReservation
+func (c *EC2) ModifyCapacityReservationRequest(input *ModifyCapacityReservationInput) (req *request.Request, output *ModifyCapacityReservationOutput) {
+ op := &request.Operation{
+ Name: opModifyCapacityReservation,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ModifyCapacityReservationInput{}
+ }
+
+ output = &ModifyCapacityReservationOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ModifyCapacityReservation API operation for Amazon Elastic Compute Cloud.
+//
+// Modifies a Capacity Reservation's capacity and the conditions under which
+// it is to be released. You cannot change a Capacity Reservation's instance
+// type, EBS optimization, instance store settings, platform, Availability Zone,
+// or instance eligibility. If you need to modify any of these attributes, we
+// recommend that you cancel the Capacity Reservation, and then create a new
+// one with the required attributes.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ModifyCapacityReservation for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyCapacityReservation
+func (c *EC2) ModifyCapacityReservation(input *ModifyCapacityReservationInput) (*ModifyCapacityReservationOutput, error) {
+ req, out := c.ModifyCapacityReservationRequest(input)
+ return out, req.Send()
+}
+
+// ModifyCapacityReservationWithContext is the same as ModifyCapacityReservation with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ModifyCapacityReservation for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ModifyCapacityReservationWithContext(ctx aws.Context, input *ModifyCapacityReservationInput, opts ...request.Option) (*ModifyCapacityReservationOutput, error) {
+ req, out := c.ModifyCapacityReservationRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
+const opModifyClientVpnEndpoint = "ModifyClientVpnEndpoint"
+
+// ModifyClientVpnEndpointRequest generates a "aws/request.Request" representing the
+// client's request for the ModifyClientVpnEndpoint operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ModifyClientVpnEndpoint for more information on using the ModifyClientVpnEndpoint
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ModifyClientVpnEndpointRequest method.
+// req, resp := client.ModifyClientVpnEndpointRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyClientVpnEndpoint
+func (c *EC2) ModifyClientVpnEndpointRequest(input *ModifyClientVpnEndpointInput) (req *request.Request, output *ModifyClientVpnEndpointOutput) {
+ op := &request.Operation{
+ Name: opModifyClientVpnEndpoint,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ModifyClientVpnEndpointInput{}
+ }
+
+ output = &ModifyClientVpnEndpointOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ModifyClientVpnEndpoint API operation for Amazon Elastic Compute Cloud.
+//
+// Modifies the specified Client VPN endpoint. You can only modify an endpoint's
+// server certificate information, client connection logging information, DNS
+// server, and description. Modifying the DNS server resets existing client
+// connections.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ModifyClientVpnEndpoint for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyClientVpnEndpoint
+func (c *EC2) ModifyClientVpnEndpoint(input *ModifyClientVpnEndpointInput) (*ModifyClientVpnEndpointOutput, error) {
+ req, out := c.ModifyClientVpnEndpointRequest(input)
+ return out, req.Send()
+}
+
+// ModifyClientVpnEndpointWithContext is the same as ModifyClientVpnEndpoint with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ModifyClientVpnEndpoint for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ModifyClientVpnEndpointWithContext(ctx aws.Context, input *ModifyClientVpnEndpointInput, opts ...request.Option) (*ModifyClientVpnEndpointOutput, error) {
+ req, out := c.ModifyClientVpnEndpointRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opModifyFleet = "ModifyFleet"
// ModifyFleetRequest generates a "aws/request.Request" representing the
// client's request for the ModifyFleet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -17953,7 +21595,7 @@ const opModifyFpgaImageAttribute = "ModifyFpgaImageAttribute"
// ModifyFpgaImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyFpgaImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18027,7 +21669,7 @@ const opModifyHosts = "ModifyHosts"
// ModifyHostsRequest generates a "aws/request.Request" representing the
// client's request for the ModifyHosts operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18107,7 +21749,7 @@ const opModifyIdFormat = "ModifyIdFormat"
// ModifyIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the ModifyIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18141,8 +21783,7 @@ func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Re
output = &ModifyIdFormatOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18165,7 +21806,7 @@ func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Re
// to the entire AWS account. By default, an IAM user defaults to the same settings
// as the root user. If you're using this action as the root user, then these
// settings apply to the entire account, unless an IAM user explicitly overrides
-// these settings for themselves. For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
+// these settings for themselves. For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Resources created with longer IDs are visible to all IAM roles and users,
@@ -18205,7 +21846,7 @@ const opModifyIdentityIdFormat = "ModifyIdentityIdFormat"
// ModifyIdentityIdFormatRequest generates a "aws/request.Request" representing the
// client's request for the ModifyIdentityIdFormat operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18239,8 +21880,7 @@ func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput)
output = &ModifyIdentityIdFormatOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18260,7 +21900,7 @@ func (c *EC2) ModifyIdentityIdFormatRequest(input *ModifyIdentityIdFormatInput)
// | security-group | subnet | subnet-cidr-block-association | vpc | vpc-cidr-block-association
// | vpc-endpoint | vpc-peering-connection | vpn-connection | vpn-gateway.
//
-// For more information, see Resource IDs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
+// For more information, see Resource IDs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// This setting applies to the principal specified in the request; it does not
@@ -18303,7 +21943,7 @@ const opModifyImageAttribute = "ModifyImageAttribute"
// ModifyImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18337,8 +21977,7 @@ func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req
output = &ModifyImageAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18388,7 +22027,7 @@ const opModifyInstanceAttribute = "ModifyInstanceAttribute"
// ModifyInstanceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyInstanceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18422,8 +22061,7 @@ func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput
output = &ModifyInstanceAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18439,7 +22077,7 @@ func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput
// we recommend that you use the ModifyNetworkInterfaceAttribute action.
//
// To modify some attributes, the instance must be stopped. For more information,
-// see Modifying Attributes of a Stopped Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html)
+// see Modifying Attributes of a Stopped Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -18470,12 +22108,89 @@ func (c *EC2) ModifyInstanceAttributeWithContext(ctx aws.Context, input *ModifyI
return out, req.Send()
}
+const opModifyInstanceCapacityReservationAttributes = "ModifyInstanceCapacityReservationAttributes"
+
+// ModifyInstanceCapacityReservationAttributesRequest generates a "aws/request.Request" representing the
+// client's request for the ModifyInstanceCapacityReservationAttributes operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ModifyInstanceCapacityReservationAttributes for more information on using the ModifyInstanceCapacityReservationAttributes
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ModifyInstanceCapacityReservationAttributesRequest method.
+// req, resp := client.ModifyInstanceCapacityReservationAttributesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCapacityReservationAttributes
+func (c *EC2) ModifyInstanceCapacityReservationAttributesRequest(input *ModifyInstanceCapacityReservationAttributesInput) (req *request.Request, output *ModifyInstanceCapacityReservationAttributesOutput) {
+ op := &request.Operation{
+ Name: opModifyInstanceCapacityReservationAttributes,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ModifyInstanceCapacityReservationAttributesInput{}
+ }
+
+ output = &ModifyInstanceCapacityReservationAttributesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ModifyInstanceCapacityReservationAttributes API operation for Amazon Elastic Compute Cloud.
+//
+// Modifies the Capacity Reservation settings for a stopped instance. Use this
+// action to configure an instance to target a specific Capacity Reservation,
+// run in any open Capacity Reservation with matching attributes, or run On-Demand
+// Instance capacity.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ModifyInstanceCapacityReservationAttributes for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyInstanceCapacityReservationAttributes
+func (c *EC2) ModifyInstanceCapacityReservationAttributes(input *ModifyInstanceCapacityReservationAttributesInput) (*ModifyInstanceCapacityReservationAttributesOutput, error) {
+ req, out := c.ModifyInstanceCapacityReservationAttributesRequest(input)
+ return out, req.Send()
+}
+
+// ModifyInstanceCapacityReservationAttributesWithContext is the same as ModifyInstanceCapacityReservationAttributes with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ModifyInstanceCapacityReservationAttributes for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ModifyInstanceCapacityReservationAttributesWithContext(ctx aws.Context, input *ModifyInstanceCapacityReservationAttributesInput, opts ...request.Option) (*ModifyInstanceCapacityReservationAttributesOutput, error) {
+ req, out := c.ModifyInstanceCapacityReservationAttributesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opModifyInstanceCreditSpecification = "ModifyInstanceCreditSpecification"
// ModifyInstanceCreditSpecificationRequest generates a "aws/request.Request" representing the
// client's request for the ModifyInstanceCreditSpecification operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18517,7 +22232,7 @@ func (c *EC2) ModifyInstanceCreditSpecificationRequest(input *ModifyInstanceCred
// Modifies the credit option for CPU usage on a running or stopped T2 or T3
// instance. The credit options are standard and unlimited.
//
-// For more information, see Burstable Performance Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
+// For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -18553,7 +22268,7 @@ const opModifyInstancePlacement = "ModifyInstancePlacement"
// ModifyInstancePlacementRequest generates a "aws/request.Request" representing the
// client's request for the ModifyInstancePlacement operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18595,7 +22310,7 @@ func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput
// Modifies the placement attributes for a specified instance. You can do the
// following:
//
-// * Modify the affinity between an instance and a Dedicated Host (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html).
+// * Modify the affinity between an instance and a Dedicated Host (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html).
// When affinity is set to host and the instance is not associated with a
// specific Dedicated Host, the next time the instance is launched, it is
// automatically associated with the host on which it lands. If the instance
@@ -18606,14 +22321,14 @@ func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput
// * Change the instance tenancy of an instance from host to dedicated, or
// from dedicated to host.
//
-// * Move an instance to or from a placement group (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html).
+// * Move an instance to or from a placement group (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html).
//
// At least one attribute for affinity, host ID, tenancy, or placement group
// name must be specified in the request. Affinity and tenancy can be modified
// in the same request.
//
-// To modify the host ID, tenancy, or placement group for an instance, the instance
-// must be in the stopped state.
+// To modify the host ID, tenancy, placement group, or partition for an instance,
+// the instance must be in the stopped state.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -18648,7 +22363,7 @@ const opModifyLaunchTemplate = "ModifyLaunchTemplate"
// ModifyLaunchTemplateRequest generates a "aws/request.Request" representing the
// client's request for the ModifyLaunchTemplate operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18724,7 +22439,7 @@ const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute"
// ModifyNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyNetworkInterfaceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18758,8 +22473,7 @@ func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfa
output = &ModifyNetworkInterfaceAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18801,7 +22515,7 @@ const opModifyReservedInstances = "ModifyReservedInstances"
// ModifyReservedInstancesRequest generates a "aws/request.Request" representing the
// client's request for the ModifyReservedInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18845,7 +22559,7 @@ func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput
// Instances to be modified must be identical, except for Availability Zone,
// network platform, and instance type.
//
-// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
+// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -18881,7 +22595,7 @@ const opModifySnapshotAttribute = "ModifySnapshotAttribute"
// ModifySnapshotAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifySnapshotAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -18915,8 +22629,7 @@ func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput
output = &ModifySnapshotAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -18933,7 +22646,7 @@ func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput
// with other accounts.
//
// For more information about modifying snapshot permissions, see Sharing Snapshots
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -18969,7 +22682,7 @@ const opModifySpotFleetRequest = "ModifySpotFleetRequest"
// ModifySpotFleetRequestRequest generates a "aws/request.Request" representing the
// client's request for the ModifySpotFleetRequest operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19065,7 +22778,7 @@ const opModifySubnetAttribute = "ModifySubnetAttribute"
// ModifySubnetAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifySubnetAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19099,8 +22812,7 @@ func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (r
output = &ModifySubnetAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -19136,12 +22848,86 @@ func (c *EC2) ModifySubnetAttributeWithContext(ctx aws.Context, input *ModifySub
return out, req.Send()
}
+const opModifyTransitGatewayVpcAttachment = "ModifyTransitGatewayVpcAttachment"
+
+// ModifyTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the
+// client's request for the ModifyTransitGatewayVpcAttachment operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ModifyTransitGatewayVpcAttachment for more information on using the ModifyTransitGatewayVpcAttachment
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ModifyTransitGatewayVpcAttachmentRequest method.
+// req, resp := client.ModifyTransitGatewayVpcAttachmentRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTransitGatewayVpcAttachment
+func (c *EC2) ModifyTransitGatewayVpcAttachmentRequest(input *ModifyTransitGatewayVpcAttachmentInput) (req *request.Request, output *ModifyTransitGatewayVpcAttachmentOutput) {
+ op := &request.Operation{
+ Name: opModifyTransitGatewayVpcAttachment,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ModifyTransitGatewayVpcAttachmentInput{}
+ }
+
+ output = &ModifyTransitGatewayVpcAttachmentOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ModifyTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud.
+//
+// Modifies the specified VPC attachment.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ModifyTransitGatewayVpcAttachment for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyTransitGatewayVpcAttachment
+func (c *EC2) ModifyTransitGatewayVpcAttachment(input *ModifyTransitGatewayVpcAttachmentInput) (*ModifyTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.ModifyTransitGatewayVpcAttachmentRequest(input)
+ return out, req.Send()
+}
+
+// ModifyTransitGatewayVpcAttachmentWithContext is the same as ModifyTransitGatewayVpcAttachment with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ModifyTransitGatewayVpcAttachment for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ModifyTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *ModifyTransitGatewayVpcAttachmentInput, opts ...request.Option) (*ModifyTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.ModifyTransitGatewayVpcAttachmentRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opModifyVolume = "ModifyVolume"
// ModifyVolumeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVolume operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19185,29 +22971,29 @@ func (c *EC2) ModifyVolumeRequest(input *ModifyVolumeInput) (req *request.Reques
// current-generation EC2 instance type, you may be able to apply these changes
// without stopping the instance or detaching the volume from it. For more information
// about modifying an EBS volume running Linux, see Modifying the Size, IOPS,
-// or Type of an EBS Volume on Linux (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html).
+// or Type of an EBS Volume on Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html).
// For more information about modifying an EBS volume running Windows, see Modifying
-// the Size, IOPS, or Type of an EBS Volume on Windows (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html).
+// the Size, IOPS, or Type of an EBS Volume on Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html).
//
// When you complete a resize operation on your volume, you need to extend the
// volume's file-system size to take advantage of the new storage capacity.
// For information about extending a Linux file system, see Extending a Linux
-// File System (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux).
+// File System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux).
// For information about extending a Windows file system, see Extending a Windows
-// File System (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html#recognize-expanded-volume-windows).
+// File System (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html#recognize-expanded-volume-windows).
//
// You can use CloudWatch Events to check the status of a modification to an
// EBS volume. For information about CloudWatch Events, see the Amazon CloudWatch
-// Events User Guide (http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
+// Events User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
// You can also track the status of a modification using the DescribeVolumesModifications
// API. For information about tracking status changes using either method, see
-// Monitoring Volume Modifications (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods).
+// Monitoring Volume Modifications (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#monitoring_mods).
//
// With previous-generation instance types, resizing an EBS volume may require
// detaching and reattaching the volume or stopping and restarting the instance.
// For more information, see Modifying the Size, IOPS, or Type of an EBS Volume
-// on Linux (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html)
-// and Modifying the Size, IOPS, or Type of an EBS Volume on Windows (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html).
+// on Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html)
+// and Modifying the Size, IOPS, or Type of an EBS Volume on Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-expand-volume.html).
//
// If you reach the maximum volume modification rate per volume limit, you will
// need to wait at least six hours before applying further modifications to
@@ -19246,7 +23032,7 @@ const opModifyVolumeAttribute = "ModifyVolumeAttribute"
// ModifyVolumeAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVolumeAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19280,8 +23066,7 @@ func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (r
output = &ModifyVolumeAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -19331,7 +23116,7 @@ const opModifyVpcAttribute = "ModifyVpcAttribute"
// ModifyVpcAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19365,8 +23150,7 @@ func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *re
output = &ModifyVpcAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -19407,7 +23191,7 @@ const opModifyVpcEndpoint = "ModifyVpcEndpoint"
// ModifyVpcEndpointRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcEndpoint operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19448,7 +23232,7 @@ func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *requ
//
// Modifies attributes of a specified VPC endpoint. The attributes that you
// can modify depend on the type of VPC endpoint (interface or gateway). For
-// more information, see VPC Endpoints (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)
+// more information, see VPC Endpoints (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -19484,7 +23268,7 @@ const opModifyVpcEndpointConnectionNotification = "ModifyVpcEndpointConnectionNo
// ModifyVpcEndpointConnectionNotificationRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcEndpointConnectionNotification operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19560,7 +23344,7 @@ const opModifyVpcEndpointServiceConfiguration = "ModifyVpcEndpointServiceConfigu
// ModifyVpcEndpointServiceConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcEndpointServiceConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19637,7 +23421,7 @@ const opModifyVpcEndpointServicePermissions = "ModifyVpcEndpointServicePermissio
// ModifyVpcEndpointServicePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcEndpointServicePermissions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19676,7 +23460,7 @@ func (c *EC2) ModifyVpcEndpointServicePermissionsRequest(input *ModifyVpcEndpoin
// ModifyVpcEndpointServicePermissions API operation for Amazon Elastic Compute Cloud.
//
-// Modifies the permissions for your VPC endpoint service (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html).
+// Modifies the permissions for your VPC endpoint service (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/endpoint-service.html).
// You can add or remove permissions for service consumers (IAM users, IAM roles,
// and AWS accounts) to connect to your endpoint service.
//
@@ -19718,7 +23502,7 @@ const opModifyVpcPeeringConnectionOptions = "ModifyVpcPeeringConnectionOptions"
// ModifyVpcPeeringConnectionOptionsRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcPeeringConnectionOptions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19770,12 +23554,16 @@ func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringCo
// * Enable/disable the ability to resolve public DNS hostnames to private
// IP addresses when queried from instances in the peer VPC.
//
-// If the peered VPCs are in different accounts, each owner must initiate a
-// separate request to modify the peering connection options, depending on whether
-// their VPC was the requester or accepter for the VPC peering connection. If
-// the peered VPCs are in the same account, you can modify the requester and
-// accepter options in the same request. To confirm which VPC is the accepter
-// and requester for a VPC peering connection, use the DescribeVpcPeeringConnections
+// If the peered VPCs are in the same AWS account, you can enable DNS resolution
+// for queries from the local VPC. This ensures that queries from the local
+// VPC resolve to private IP addresses in the peer VPC. This option is not available
+// if the peered VPCs are in different AWS accounts or different regions. For
+// peered VPCs in different AWS accounts, each AWS account owner must initiate
+// a separate request to modify the peering connection options. For inter-region
+// peering connections, you must use the region for the requester VPC to modify
+// the requester VPC peering options and the region for the accepter VPC to
+// modify the accepter VPC peering options. To verify which VPCs are the accepter
+// and the requester for a VPC peering connection, use the DescribeVpcPeeringConnections
// command.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -19811,7 +23599,7 @@ const opModifyVpcTenancy = "ModifyVpcTenancy"
// ModifyVpcTenancyRequest generates a "aws/request.Request" representing the
// client's request for the ModifyVpcTenancy operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19858,7 +23646,7 @@ func (c *EC2) ModifyVpcTenancyRequest(input *ModifyVpcTenancyInput) (req *reques
// into the VPC have a tenancy of default, unless you specify otherwise during
// launch. The tenancy of any existing instances in the VPC is not affected.
//
-// For more information, see Dedicated Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)
+// For more information, see Dedicated Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -19894,7 +23682,7 @@ const opMonitorInstances = "MonitorInstances"
// MonitorInstancesRequest generates a "aws/request.Request" representing the
// client's request for the MonitorInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -19935,7 +23723,7 @@ func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *reques
//
// Enables detailed monitoring for a running instance. Otherwise, basic monitoring
// is enabled. For more information, see Monitoring Your Instances and Volumes
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// To disable detailed monitoring, see .
@@ -19973,7 +23761,7 @@ const opMoveAddressToVpc = "MoveAddressToVpc"
// MoveAddressToVpcRequest generates a "aws/request.Request" representing the
// client's request for the MoveAddressToVpc operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20048,12 +23836,102 @@ func (c *EC2) MoveAddressToVpcWithContext(ctx aws.Context, input *MoveAddressToV
return out, req.Send()
}
+const opProvisionByoipCidr = "ProvisionByoipCidr"
+
+// ProvisionByoipCidrRequest generates a "aws/request.Request" representing the
+// client's request for the ProvisionByoipCidr operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ProvisionByoipCidr for more information on using the ProvisionByoipCidr
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ProvisionByoipCidrRequest method.
+// req, resp := client.ProvisionByoipCidrRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProvisionByoipCidr
+func (c *EC2) ProvisionByoipCidrRequest(input *ProvisionByoipCidrInput) (req *request.Request, output *ProvisionByoipCidrOutput) {
+ op := &request.Operation{
+ Name: opProvisionByoipCidr,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ProvisionByoipCidrInput{}
+ }
+
+ output = &ProvisionByoipCidrOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ProvisionByoipCidr API operation for Amazon Elastic Compute Cloud.
+//
+// Provisions an address range for use with your AWS resources through bring
+// your own IP addresses (BYOIP) and creates a corresponding address pool. After
+// the address range is provisioned, it is ready to be advertised using AdvertiseByoipCidr.
+//
+// AWS verifies that you own the address range and are authorized to advertise
+// it. You must ensure that the address range is registered to you and that
+// you created an RPKI ROA to authorize Amazon ASNs 16509 and 14618 to advertise
+// the address range. For more information, see Bring Your Own IP Addresses
+// (BYOIP) (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+//
+// Provisioning an address range is an asynchronous operation, so the call returns
+// immediately, but the address range is not ready to use until its status changes
+// from pending-provision to provisioned. To monitor the status of an address
+// range, use DescribeByoipCidrs. To allocate an Elastic IP address from your
+// address pool, use AllocateAddress with either the specific address from the
+// address pool or the ID of the address pool.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ProvisionByoipCidr for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ProvisionByoipCidr
+func (c *EC2) ProvisionByoipCidr(input *ProvisionByoipCidrInput) (*ProvisionByoipCidrOutput, error) {
+ req, out := c.ProvisionByoipCidrRequest(input)
+ return out, req.Send()
+}
+
+// ProvisionByoipCidrWithContext is the same as ProvisionByoipCidr with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ProvisionByoipCidr for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ProvisionByoipCidrWithContext(ctx aws.Context, input *ProvisionByoipCidrInput, opts ...request.Option) (*ProvisionByoipCidrOutput, error) {
+ req, out := c.ProvisionByoipCidrRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opPurchaseHostReservation = "PurchaseHostReservation"
// PurchaseHostReservationRequest generates a "aws/request.Request" representing the
// client's request for the PurchaseHostReservation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20130,7 +24008,7 @@ const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering"
// PurchaseReservedInstancesOfferingRequest generates a "aws/request.Request" representing the
// client's request for the PurchaseReservedInstancesOffering operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20176,8 +24054,8 @@ func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedIn
// offerings that match your specifications. After you've purchased a Reserved
// Instance, you can check for your new Reserved Instance with DescribeReservedInstances.
//
-// For more information, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
-// and Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
+// For more information, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html)
+// and Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -20213,7 +24091,7 @@ const opPurchaseScheduledInstances = "PurchaseScheduledInstances"
// PurchaseScheduledInstancesRequest generates a "aws/request.Request" representing the
// client's request for the PurchaseScheduledInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20296,7 +24174,7 @@ const opRebootInstances = "RebootInstances"
// RebootInstancesRequest generates a "aws/request.Request" representing the
// client's request for the RebootInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20330,8 +24208,7 @@ func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.
output = &RebootInstancesOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -20346,7 +24223,7 @@ func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.
// performs a hard reboot.
//
// For more information about troubleshooting, see Getting Console Output and
-// Rebooting Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html)
+// Rebooting Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -20382,7 +24259,7 @@ const opRegisterImage = "RegisterImage"
// RegisterImageRequest generates a "aws/request.Request" representing the
// client's request for the RegisterImage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20423,7 +24300,7 @@ func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Requ
//
// Registers an AMI. When you're creating an AMI, this is the final step you
// must complete before you can launch an instance from the AMI. For more information
-// about creating AMIs, see Creating Your Own AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html)
+// about creating AMIs, see Creating Your Own AMIs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// For Amazon EBS-backed instances, CreateImage creates and registers the AMI
@@ -20432,7 +24309,7 @@ func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Requ
// You can also use RegisterImage to create an Amazon EBS-backed Linux AMI from
// a snapshot of a root device volume. You specify the snapshot using the block
// device mapping. For more information, see Launching a Linux Instance from
-// a Backup (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html)
+// a Backup (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// You can't register an image where a secondary (non-root) snapshot has AWS
@@ -20482,12 +24359,90 @@ func (c *EC2) RegisterImageWithContext(ctx aws.Context, input *RegisterImageInpu
return out, req.Send()
}
+const opRejectTransitGatewayVpcAttachment = "RejectTransitGatewayVpcAttachment"
+
+// RejectTransitGatewayVpcAttachmentRequest generates a "aws/request.Request" representing the
+// client's request for the RejectTransitGatewayVpcAttachment operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See RejectTransitGatewayVpcAttachment for more information on using the RejectTransitGatewayVpcAttachment
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the RejectTransitGatewayVpcAttachmentRequest method.
+// req, resp := client.RejectTransitGatewayVpcAttachmentRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayVpcAttachment
+func (c *EC2) RejectTransitGatewayVpcAttachmentRequest(input *RejectTransitGatewayVpcAttachmentInput) (req *request.Request, output *RejectTransitGatewayVpcAttachmentOutput) {
+ op := &request.Operation{
+ Name: opRejectTransitGatewayVpcAttachment,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &RejectTransitGatewayVpcAttachmentInput{}
+ }
+
+ output = &RejectTransitGatewayVpcAttachmentOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// RejectTransitGatewayVpcAttachment API operation for Amazon Elastic Compute Cloud.
+//
+// Rejects a request to attach a VPC to a transit gateway.
+//
+// The VPC attachment must be in the pendingAcceptance state. Use DescribeTransitGatewayVpcAttachments
+// to view your pending VPC attachment requests. Use AcceptTransitGatewayVpcAttachment
+// to accept a VPC attachment request.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation RejectTransitGatewayVpcAttachment for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayVpcAttachment
+func (c *EC2) RejectTransitGatewayVpcAttachment(input *RejectTransitGatewayVpcAttachmentInput) (*RejectTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.RejectTransitGatewayVpcAttachmentRequest(input)
+ return out, req.Send()
+}
+
+// RejectTransitGatewayVpcAttachmentWithContext is the same as RejectTransitGatewayVpcAttachment with the addition of
+// the ability to pass a context and additional request options.
+//
+// See RejectTransitGatewayVpcAttachment for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) RejectTransitGatewayVpcAttachmentWithContext(ctx aws.Context, input *RejectTransitGatewayVpcAttachmentInput, opts ...request.Option) (*RejectTransitGatewayVpcAttachmentOutput, error) {
+ req, out := c.RejectTransitGatewayVpcAttachmentRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opRejectVpcEndpointConnections = "RejectVpcEndpointConnections"
// RejectVpcEndpointConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the RejectVpcEndpointConnections operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20562,7 +24517,7 @@ const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection"
// RejectVpcPeeringConnectionRequest generates a "aws/request.Request" representing the
// client's request for the RejectVpcPeeringConnection operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20640,7 +24595,7 @@ const opReleaseAddress = "ReleaseAddress"
// ReleaseAddressRequest generates a "aws/request.Request" representing the
// client's request for the ReleaseAddress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20674,8 +24629,7 @@ func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Re
output = &ReleaseAddressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -20733,7 +24687,7 @@ const opReleaseHosts = "ReleaseHosts"
// ReleaseHostsRequest generates a "aws/request.Request" representing the
// client's request for the ReleaseHosts operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20817,7 +24771,7 @@ const opReplaceIamInstanceProfileAssociation = "ReplaceIamInstanceProfileAssocia
// ReplaceIamInstanceProfileAssociationRequest generates a "aws/request.Request" representing the
// client's request for the ReplaceIamInstanceProfileAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20896,7 +24850,7 @@ const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation"
// ReplaceNetworkAclAssociationRequest generates a "aws/request.Request" representing the
// client's request for the ReplaceNetworkAclAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -20937,7 +24891,7 @@ func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssoci
//
// Changes which network ACL a subnet is associated with. By default when you
// create a subnet, it's automatically associated with the default network ACL.
-// For more information, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
+// For more information, see Network ACLs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// This is an idempotent operation.
@@ -20975,7 +24929,7 @@ const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry"
// ReplaceNetworkAclEntryRequest generates a "aws/request.Request" representing the
// client's request for the ReplaceNetworkAclEntry operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21009,15 +24963,14 @@ func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput)
output = &ReplaceNetworkAclEntryOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
// ReplaceNetworkAclEntry API operation for Amazon Elastic Compute Cloud.
//
// Replaces an entry (rule) in a network ACL. For more information, see Network
-// ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
+// ACLs (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21053,7 +25006,7 @@ const opReplaceRoute = "ReplaceRoute"
// ReplaceRouteRequest generates a "aws/request.Request" representing the
// client's request for the ReplaceRoute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21087,8 +25040,7 @@ func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Reques
output = &ReplaceRouteOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21099,7 +25051,7 @@ func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Reques
// instance, NAT gateway, VPC peering connection, network interface, or egress-only
// internet gateway.
//
-// For more information, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// For more information, see Route Tables (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21135,7 +25087,7 @@ const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation"
// ReplaceRouteTableAssociationRequest generates a "aws/request.Request" representing the
// client's request for the ReplaceRouteTableAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21177,7 +25129,7 @@ func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssoci
// Changes the route table associated with a given subnet in a VPC. After the
// operation completes, the subnet uses the routes in the new route table it's
// associated with. For more information about route tables, see Route Tables
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
+// (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// You can also use ReplaceRouteTableAssociation to change which table is the
@@ -21212,12 +25164,86 @@ func (c *EC2) ReplaceRouteTableAssociationWithContext(ctx aws.Context, input *Re
return out, req.Send()
}
+const opReplaceTransitGatewayRoute = "ReplaceTransitGatewayRoute"
+
+// ReplaceTransitGatewayRouteRequest generates a "aws/request.Request" representing the
+// client's request for the ReplaceTransitGatewayRoute operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See ReplaceTransitGatewayRoute for more information on using the ReplaceTransitGatewayRoute
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the ReplaceTransitGatewayRouteRequest method.
+// req, resp := client.ReplaceTransitGatewayRouteRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceTransitGatewayRoute
+func (c *EC2) ReplaceTransitGatewayRouteRequest(input *ReplaceTransitGatewayRouteInput) (req *request.Request, output *ReplaceTransitGatewayRouteOutput) {
+ op := &request.Operation{
+ Name: opReplaceTransitGatewayRoute,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &ReplaceTransitGatewayRouteInput{}
+ }
+
+ output = &ReplaceTransitGatewayRouteOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// ReplaceTransitGatewayRoute API operation for Amazon Elastic Compute Cloud.
+//
+// Replaces the specified route in the specified transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation ReplaceTransitGatewayRoute for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ReplaceTransitGatewayRoute
+func (c *EC2) ReplaceTransitGatewayRoute(input *ReplaceTransitGatewayRouteInput) (*ReplaceTransitGatewayRouteOutput, error) {
+ req, out := c.ReplaceTransitGatewayRouteRequest(input)
+ return out, req.Send()
+}
+
+// ReplaceTransitGatewayRouteWithContext is the same as ReplaceTransitGatewayRoute with the addition of
+// the ability to pass a context and additional request options.
+//
+// See ReplaceTransitGatewayRoute for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) ReplaceTransitGatewayRouteWithContext(ctx aws.Context, input *ReplaceTransitGatewayRouteInput, opts ...request.Option) (*ReplaceTransitGatewayRouteOutput, error) {
+ req, out := c.ReplaceTransitGatewayRouteRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opReportInstanceStatus = "ReportInstanceStatus"
// ReportInstanceStatusRequest generates a "aws/request.Request" representing the
// client's request for the ReportInstanceStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21251,8 +25277,7 @@ func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req
output = &ReportInstanceStatusOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21299,7 +25324,7 @@ const opRequestSpotFleet = "RequestSpotFleet"
// RequestSpotFleetRequest generates a "aws/request.Request" representing the
// client's request for the RequestSpotFleet operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21361,7 +25386,7 @@ func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *reques
// types in a Spot Fleet request because only the instance resource type is
// supported.
//
-// For more information, see Spot Fleet Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html)
+// For more information, see Spot Fleet Requests (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21397,7 +25422,7 @@ const opRequestSpotInstances = "RequestSpotInstances"
// RequestSpotInstancesRequest generates a "aws/request.Request" representing the
// client's request for the RequestSpotInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21438,7 +25463,7 @@ func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req
//
// Creates a Spot Instance request.
//
-// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)
+// For more information, see Spot Instance Requests (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21474,7 +25499,7 @@ const opResetFpgaImageAttribute = "ResetFpgaImageAttribute"
// ResetFpgaImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ResetFpgaImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21549,7 +25574,7 @@ const opResetImageAttribute = "ResetImageAttribute"
// ResetImageAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ResetImageAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21583,8 +25608,7 @@ func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req *
output = &ResetImageAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21627,7 +25651,7 @@ const opResetInstanceAttribute = "ResetInstanceAttribute"
// ResetInstanceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ResetInstanceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21661,8 +25685,7 @@ func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput)
output = &ResetInstanceAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21675,7 +25698,7 @@ func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput)
// The sourceDestCheck attribute controls whether source/destination checking
// is enabled. The default value is true, which means checking is enabled. This
// value must be false for a NAT instance to perform NAT. For more information,
-// see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
+// see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
// in the Amazon Virtual Private Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21711,7 +25734,7 @@ const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute"
// ResetNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ResetNetworkInterfaceAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21745,8 +25768,7 @@ func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterface
output = &ResetNetworkInterfaceAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21788,7 +25810,7 @@ const opResetSnapshotAttribute = "ResetSnapshotAttribute"
// ResetSnapshotAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ResetSnapshotAttribute operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21822,8 +25844,7 @@ func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput)
output = &ResetSnapshotAttributeOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -21832,7 +25853,7 @@ func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput)
// Resets permission settings for the specified snapshot.
//
// For more information about modifying snapshot permissions, see Sharing Snapshots
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -21868,7 +25889,7 @@ const opRestoreAddressToClassic = "RestoreAddressToClassic"
// RestoreAddressToClassicRequest generates a "aws/request.Request" representing the
// client's request for the RestoreAddressToClassic operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21940,12 +25961,86 @@ func (c *EC2) RestoreAddressToClassicWithContext(ctx aws.Context, input *Restore
return out, req.Send()
}
+const opRevokeClientVpnIngress = "RevokeClientVpnIngress"
+
+// RevokeClientVpnIngressRequest generates a "aws/request.Request" representing the
+// client's request for the RevokeClientVpnIngress operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See RevokeClientVpnIngress for more information on using the RevokeClientVpnIngress
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the RevokeClientVpnIngressRequest method.
+// req, resp := client.RevokeClientVpnIngressRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeClientVpnIngress
+func (c *EC2) RevokeClientVpnIngressRequest(input *RevokeClientVpnIngressInput) (req *request.Request, output *RevokeClientVpnIngressOutput) {
+ op := &request.Operation{
+ Name: opRevokeClientVpnIngress,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &RevokeClientVpnIngressInput{}
+ }
+
+ output = &RevokeClientVpnIngressOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// RevokeClientVpnIngress API operation for Amazon Elastic Compute Cloud.
+//
+// Removes an ingress authorization rule from a Client VPN endpoint.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation RevokeClientVpnIngress for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RevokeClientVpnIngress
+func (c *EC2) RevokeClientVpnIngress(input *RevokeClientVpnIngressInput) (*RevokeClientVpnIngressOutput, error) {
+ req, out := c.RevokeClientVpnIngressRequest(input)
+ return out, req.Send()
+}
+
+// RevokeClientVpnIngressWithContext is the same as RevokeClientVpnIngress with the addition of
+// the ability to pass a context and additional request options.
+//
+// See RevokeClientVpnIngress for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) RevokeClientVpnIngressWithContext(ctx aws.Context, input *RevokeClientVpnIngressInput, opts ...request.Option) (*RevokeClientVpnIngressOutput, error) {
+ req, out := c.RevokeClientVpnIngressRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress"
// RevokeSecurityGroupEgressRequest generates a "aws/request.Request" representing the
// client's request for the RevokeSecurityGroupEgress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -21979,8 +26074,7 @@ func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressI
output = &RevokeSecurityGroupEgressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -22033,7 +26127,7 @@ const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress"
// RevokeSecurityGroupIngressRequest generates a "aws/request.Request" representing the
// client's request for the RevokeSecurityGroupIngress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22067,8 +26161,7 @@ func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngres
output = &RevokeSecurityGroupIngressOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -22124,7 +26217,7 @@ const opRunInstances = "RunInstances"
// RunInstancesRequest generates a "aws/request.Request" representing the
// client's request for the RunInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22178,22 +26271,22 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques
//
// * Some instance types must be launched into a VPC. If you do not have
// a default VPC, or if you do not specify a subnet ID, the request fails.
-// For more information, see Instance Types Available Only in a VPC (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types).
+// For more information, see Instance Types Available Only in a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types).
//
// * [EC2-VPC] All instances have a network interface with a primary private
// IPv4 address. If you don't specify this address, we choose one from the
// IPv4 range of your subnet.
//
// * Not all instance types support IPv6 addresses. For more information,
-// see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
+// see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
//
// * If you don't specify a security group ID, we use the default security
-// group. For more information, see Security Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html).
+// group. For more information, see Security Groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html).
//
// * If any of the AMIs have a product code attached for which the user has
// not subscribed, the request fails.
//
-// You can create a launch template (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html),
+// You can create a launch template (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html),
// which is a resource that contains the parameters to launch an instance. When
// you launch an instance using RunInstances, you can specify the launch template
// instead of specifying the launch parameters.
@@ -22205,17 +26298,17 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques
// An instance is ready for you to use when it's in the running state. You can
// check the state of your instance using DescribeInstances. You can tag instances
// and EBS volumes during launch, after launch, or both. For more information,
-// see CreateTags and Tagging Your Amazon EC2 Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html).
+// see CreateTags and Tagging Your Amazon EC2 Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html).
//
// Linux instances have access to the public key of the key pair at boot. You
// can use this key to provide secure access to the instance. Amazon EC2 public
// images use this feature to provide secure access without passwords. For more
-// information, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+// information, see Key Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// For troubleshooting, see What To Do If An Instance Immediately Terminates
-// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html),
-// and Troubleshooting Connecting to Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)
+// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html),
+// and Troubleshooting Connecting to Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22251,7 +26344,7 @@ const opRunScheduledInstances = "RunScheduledInstances"
// RunScheduledInstancesRequest generates a "aws/request.Request" representing the
// client's request for the RunScheduledInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22299,7 +26392,7 @@ func (c *EC2) RunScheduledInstancesRequest(input *RunScheduledInstancesInput) (r
// can't stop or reboot a Scheduled Instance, but you can terminate it as needed.
// If you terminate a Scheduled Instance before the current scheduled time period
// ends, you can launch it again after a few minutes. For more information,
-// see Scheduled Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-scheduled-instances.html)
+// see Scheduled Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-scheduled-instances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22330,12 +26423,86 @@ func (c *EC2) RunScheduledInstancesWithContext(ctx aws.Context, input *RunSchedu
return out, req.Send()
}
+const opSearchTransitGatewayRoutes = "SearchTransitGatewayRoutes"
+
+// SearchTransitGatewayRoutesRequest generates a "aws/request.Request" representing the
+// client's request for the SearchTransitGatewayRoutes operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See SearchTransitGatewayRoutes for more information on using the SearchTransitGatewayRoutes
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the SearchTransitGatewayRoutesRequest method.
+// req, resp := client.SearchTransitGatewayRoutesRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SearchTransitGatewayRoutes
+func (c *EC2) SearchTransitGatewayRoutesRequest(input *SearchTransitGatewayRoutesInput) (req *request.Request, output *SearchTransitGatewayRoutesOutput) {
+ op := &request.Operation{
+ Name: opSearchTransitGatewayRoutes,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &SearchTransitGatewayRoutesInput{}
+ }
+
+ output = &SearchTransitGatewayRoutesOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// SearchTransitGatewayRoutes API operation for Amazon Elastic Compute Cloud.
+//
+// Searches for routes in the specified transit gateway route table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation SearchTransitGatewayRoutes for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/SearchTransitGatewayRoutes
+func (c *EC2) SearchTransitGatewayRoutes(input *SearchTransitGatewayRoutesInput) (*SearchTransitGatewayRoutesOutput, error) {
+ req, out := c.SearchTransitGatewayRoutesRequest(input)
+ return out, req.Send()
+}
+
+// SearchTransitGatewayRoutesWithContext is the same as SearchTransitGatewayRoutes with the addition of
+// the ability to pass a context and additional request options.
+//
+// See SearchTransitGatewayRoutes for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) SearchTransitGatewayRoutesWithContext(ctx aws.Context, input *SearchTransitGatewayRoutesInput, opts ...request.Option) (*SearchTransitGatewayRoutesOutput, error) {
+ req, out := c.SearchTransitGatewayRoutesRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opStartInstances = "StartInstances"
// StartInstancesRequest generates a "aws/request.Request" representing the
// client's request for the StartInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22395,7 +26562,7 @@ func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Re
// Performing this operation on an instance that uses an instance store as its
// root device returns an error.
//
-// For more information, see Stopping Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
+// For more information, see Stopping Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22431,7 +26598,7 @@ const opStopInstances = "StopInstances"
// StopInstancesRequest generates a "aws/request.Request" representing the
// client's request for the StopInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22472,6 +26639,12 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ
//
// Stops an Amazon EBS-backed instance.
//
+// You can use the Stop action to hibernate an instance if the instance is enabled
+// for hibernation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation)
+// and it meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
+// For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+//
// We don't charge usage for a stopped instance, or data transfer fees; however,
// your root partition Amazon EBS volume remains and continues to persist your
// data, and you are charged for Amazon EBS volume usage. Every time you start
@@ -22482,26 +26655,31 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ
// your Linux instance, Amazon EC2 charges a one-minute minimum for instance
// usage, and thereafter charges per second for instance usage.
//
-// You can't start or stop Spot Instances, and you can't stop instance store-backed
-// instances.
+// You can't start, stop, or hibernate Spot Instances, and you can't stop or
+// hibernate instance store-backed instances. For information about using hibernation
+// for Spot Instances, see Hibernating Interrupted Spot Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances)
+// in the Amazon Elastic Compute Cloud User Guide.
//
-// When you stop an instance, we shut it down. You can restart your instance
-// at any time. Before stopping an instance, make sure it is in a state from
-// which it can be restarted. Stopping an instance does not preserve data stored
-// in RAM.
-//
-// Stopping an instance is different to rebooting or terminating it. For example,
-// when you stop an instance, the root device and any other devices attached
-// to the instance persist. When you terminate an instance, the root device
-// and any other devices attached during the instance launch are automatically
-// deleted. For more information about the differences between rebooting, stopping,
-// and terminating instances, see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
+// When you stop or hibernate an instance, we shut it down. You can restart
+// your instance at any time. Before stopping or hibernating an instance, make
+// sure it is in a state from which it can be restarted. Stopping an instance
+// does not preserve data stored in RAM, but hibernating an instance does preserve
+// data stored in RAM. If an instance cannot hibernate successfully, a normal
+// shutdown occurs.
+//
+// Stopping and hibernating an instance is different to rebooting or terminating
+// it. For example, when you stop or hibernate an instance, the root device
+// and any other devices attached to the instance persist. When you terminate
+// an instance, the root device and any other devices attached during the instance
+// launch are automatically deleted. For more information about the differences
+// between rebooting, stopping, hibernating, and terminating instances, see
+// Instance Lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// When you stop an instance, we attempt to shut it down forcibly after a short
// while. If your instance appears stuck in the stopping state after a period
// of time, there may be an issue with the underlying host computer. For more
-// information, see Troubleshooting Stopping Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html)
+// information, see Troubleshooting Stopping Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22532,12 +26710,88 @@ func (c *EC2) StopInstancesWithContext(ctx aws.Context, input *StopInstancesInpu
return out, req.Send()
}
+const opTerminateClientVpnConnections = "TerminateClientVpnConnections"
+
+// TerminateClientVpnConnectionsRequest generates a "aws/request.Request" representing the
+// client's request for the TerminateClientVpnConnections operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See TerminateClientVpnConnections for more information on using the TerminateClientVpnConnections
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the TerminateClientVpnConnectionsRequest method.
+// req, resp := client.TerminateClientVpnConnectionsRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateClientVpnConnections
+func (c *EC2) TerminateClientVpnConnectionsRequest(input *TerminateClientVpnConnectionsInput) (req *request.Request, output *TerminateClientVpnConnectionsOutput) {
+ op := &request.Operation{
+ Name: opTerminateClientVpnConnections,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &TerminateClientVpnConnectionsInput{}
+ }
+
+ output = &TerminateClientVpnConnectionsOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// TerminateClientVpnConnections API operation for Amazon Elastic Compute Cloud.
+//
+// Terminates active Client VPN endpoint connections. This action can be used
+// to terminate a specific client connection, or up to five connections established
+// by a specific user.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation TerminateClientVpnConnections for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/TerminateClientVpnConnections
+func (c *EC2) TerminateClientVpnConnections(input *TerminateClientVpnConnectionsInput) (*TerminateClientVpnConnectionsOutput, error) {
+ req, out := c.TerminateClientVpnConnectionsRequest(input)
+ return out, req.Send()
+}
+
+// TerminateClientVpnConnectionsWithContext is the same as TerminateClientVpnConnections with the addition of
+// the ability to pass a context and additional request options.
+//
+// See TerminateClientVpnConnections for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) TerminateClientVpnConnectionsWithContext(ctx aws.Context, input *TerminateClientVpnConnectionsInput, opts ...request.Option) (*TerminateClientVpnConnectionsOutput, error) {
+ req, out := c.TerminateClientVpnConnectionsRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opTerminateInstances = "TerminateInstances"
// TerminateInstancesRequest generates a "aws/request.Request" representing the
// client's request for the TerminateInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22595,11 +26849,11 @@ func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *re
// an instance, any attached EBS volumes with the DeleteOnTermination block
// device mapping parameter set to true are automatically deleted. For more
// information about the differences between stopping and terminating instances,
-// see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
+// see Instance Lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// For more information about troubleshooting, see Troubleshooting Terminating
-// Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html)
+// Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22635,7 +26889,7 @@ const opUnassignIpv6Addresses = "UnassignIpv6Addresses"
// UnassignIpv6AddressesRequest generates a "aws/request.Request" representing the
// client's request for the UnassignIpv6Addresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22709,7 +26963,7 @@ const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses"
// UnassignPrivateIpAddressesRequest generates a "aws/request.Request" representing the
// client's request for the UnassignPrivateIpAddresses operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22743,8 +26997,7 @@ func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddresse
output = &UnassignPrivateIpAddressesOutput{}
req = c.newRequest(op, input, output)
- req.Handlers.Unmarshal.Remove(ec2query.UnmarshalHandler)
- req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
+ req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -22785,7 +27038,7 @@ const opUnmonitorInstances = "UnmonitorInstances"
// UnmonitorInstancesRequest generates a "aws/request.Request" representing the
// client's request for the UnmonitorInstances operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22825,7 +27078,7 @@ func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *re
// UnmonitorInstances API operation for Amazon Elastic Compute Cloud.
//
// Disables detailed monitoring for a running instance. For more information,
-// see Monitoring Your Instances and Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
+// see Monitoring Your Instances and Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -22861,7 +27114,7 @@ const opUpdateSecurityGroupRuleDescriptionsEgress = "UpdateSecurityGroupRuleDesc
// UpdateSecurityGroupRuleDescriptionsEgressRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSecurityGroupRuleDescriptionsEgress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -22941,7 +27194,7 @@ const opUpdateSecurityGroupRuleDescriptionsIngress = "UpdateSecurityGroupRuleDes
// UpdateSecurityGroupRuleDescriptionsIngressRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSecurityGroupRuleDescriptionsIngress operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -23016,6 +27269,87 @@ func (c *EC2) UpdateSecurityGroupRuleDescriptionsIngressWithContext(ctx aws.Cont
return out, req.Send()
}
+const opWithdrawByoipCidr = "WithdrawByoipCidr"
+
+// WithdrawByoipCidrRequest generates a "aws/request.Request" representing the
+// client's request for the WithdrawByoipCidr operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See WithdrawByoipCidr for more information on using the WithdrawByoipCidr
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the WithdrawByoipCidrRequest method.
+// req, resp := client.WithdrawByoipCidrRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/WithdrawByoipCidr
+func (c *EC2) WithdrawByoipCidrRequest(input *WithdrawByoipCidrInput) (req *request.Request, output *WithdrawByoipCidrOutput) {
+ op := &request.Operation{
+ Name: opWithdrawByoipCidr,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &WithdrawByoipCidrInput{}
+ }
+
+ output = &WithdrawByoipCidrOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// WithdrawByoipCidr API operation for Amazon Elastic Compute Cloud.
+//
+// Stops advertising an IPv4 address range that is provisioned as an address
+// pool.
+//
+// You can perform this operation at most once every 10 seconds, even if you
+// specify different address ranges each time.
+//
+// It can take a few minutes before traffic to the specified addresses stops
+// routing to AWS because of BGP propagation delays.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Elastic Compute Cloud's
+// API operation WithdrawByoipCidr for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/WithdrawByoipCidr
+func (c *EC2) WithdrawByoipCidr(input *WithdrawByoipCidrInput) (*WithdrawByoipCidrOutput, error) {
+ req, out := c.WithdrawByoipCidrRequest(input)
+ return out, req.Send()
+}
+
+// WithdrawByoipCidrWithContext is the same as WithdrawByoipCidr with the addition of
+// the ability to pass a context and additional request options.
+//
+// See WithdrawByoipCidr for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *EC2) WithdrawByoipCidrWithContext(ctx aws.Context, input *WithdrawByoipCidrInput, opts ...request.Option) (*WithdrawByoipCidrOutput, error) {
+ req, out := c.WithdrawByoipCidrRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
// Contains the parameters for accepting the quote.
type AcceptReservedInstancesExchangeQuoteInput struct {
_ struct{} `type:"structure"`
@@ -23112,6 +27446,79 @@ func (s *AcceptReservedInstancesExchangeQuoteOutput) SetExchangeId(v string) *Ac
return s
}
+type AcceptTransitGatewayVpcAttachmentInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s AcceptTransitGatewayVpcAttachmentInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AcceptTransitGatewayVpcAttachmentInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AcceptTransitGatewayVpcAttachmentInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AcceptTransitGatewayVpcAttachmentInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AcceptTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *AcceptTransitGatewayVpcAttachmentInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *AcceptTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *AcceptTransitGatewayVpcAttachmentInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+type AcceptTransitGatewayVpcAttachmentOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The VPC attachment.
+ TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"`
+}
+
+// String returns the string representation
+func (s AcceptTransitGatewayVpcAttachmentOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AcceptTransitGatewayVpcAttachmentOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value.
+func (s *AcceptTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *AcceptTransitGatewayVpcAttachmentOutput {
+ s.TransitGatewayVpcAttachment = v
+ return s
+}
+
type AcceptVpcEndpointConnectionsInput struct {
_ struct{} `type:"structure"`
@@ -23398,6 +27805,9 @@ type Address struct {
// The Elastic IP address.
PublicIp *string `locationName:"publicIp" type:"string"`
+ // The ID of an address pool.
+ PublicIpv4Pool *string `locationName:"publicIpv4Pool" type:"string"`
+
// Any tags assigned to the Elastic IP address.
Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
}
@@ -23460,17 +27870,97 @@ func (s *Address) SetPublicIp(v string) *Address {
return s
}
+// SetPublicIpv4Pool sets the PublicIpv4Pool field's value.
+func (s *Address) SetPublicIpv4Pool(v string) *Address {
+ s.PublicIpv4Pool = &v
+ return s
+}
+
// SetTags sets the Tags field's value.
func (s *Address) SetTags(v []*Tag) *Address {
s.Tags = v
return s
}
-// Contains the parameters for AllocateAddress.
+type AdvertiseByoipCidrInput struct {
+ _ struct{} `type:"structure"`
+
+ // The IPv4 address range, in CIDR notation. This must be the exact range that
+ // you provisioned. You can't advertise only a portion of the provisioned range.
+ //
+ // Cidr is a required field
+ Cidr *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s AdvertiseByoipCidrInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AdvertiseByoipCidrInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AdvertiseByoipCidrInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AdvertiseByoipCidrInput"}
+ if s.Cidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("Cidr"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCidr sets the Cidr field's value.
+func (s *AdvertiseByoipCidrInput) SetCidr(v string) *AdvertiseByoipCidrInput {
+ s.Cidr = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AdvertiseByoipCidrInput) SetDryRun(v bool) *AdvertiseByoipCidrInput {
+ s.DryRun = &v
+ return s
+}
+
+type AdvertiseByoipCidrOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the address range.
+ ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"`
+}
+
+// String returns the string representation
+func (s AdvertiseByoipCidrOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AdvertiseByoipCidrOutput) GoString() string {
+ return s.String()
+}
+
+// SetByoipCidr sets the ByoipCidr field's value.
+func (s *AdvertiseByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *AdvertiseByoipCidrOutput {
+ s.ByoipCidr = v
+ return s
+}
+
type AllocateAddressInput struct {
_ struct{} `type:"structure"`
- // [EC2-VPC] The Elastic IP address to recover.
+ // [EC2-VPC] The Elastic IP address to recover or an IPv4 address from an address
+ // pool.
Address *string `type:"string"`
// Set to vpc to allocate the address for use with instances in a VPC.
@@ -23483,6 +27973,11 @@ type AllocateAddressInput struct {
// the required permissions, the error response is DryRunOperation. Otherwise,
// it is UnauthorizedOperation.
DryRun *bool `locationName:"dryRun" type:"boolean"`
+
+ // The ID of an address pool that you own. Use this parameter to let Amazon
+ // EC2 select an address from the address pool. To specify a specific address
+ // from the address pool, use the Address parameter instead.
+ PublicIpv4Pool *string `type:"string"`
}
// String returns the string representation
@@ -23513,7 +28008,12 @@ func (s *AllocateAddressInput) SetDryRun(v bool) *AllocateAddressInput {
return s
}
-// Contains the output of AllocateAddress.
+// SetPublicIpv4Pool sets the PublicIpv4Pool field's value.
+func (s *AllocateAddressInput) SetPublicIpv4Pool(v string) *AllocateAddressInput {
+ s.PublicIpv4Pool = &v
+ return s
+}
+
type AllocateAddressOutput struct {
_ struct{} `type:"structure"`
@@ -23527,6 +28027,9 @@ type AllocateAddressOutput struct {
// The Elastic IP address.
PublicIp *string `locationName:"publicIp" type:"string"`
+
+ // The ID of an address pool.
+ PublicIpv4Pool *string `locationName:"publicIpv4Pool" type:"string"`
}
// String returns the string representation
@@ -23557,6 +28060,12 @@ func (s *AllocateAddressOutput) SetPublicIp(v string) *AllocateAddressOutput {
return s
}
+// SetPublicIpv4Pool sets the PublicIpv4Pool field's value.
+func (s *AllocateAddressOutput) SetPublicIpv4Pool(v string) *AllocateAddressOutput {
+ s.PublicIpv4Pool = &v
+ return s
+}
+
type AllocateHostsInput struct {
_ struct{} `type:"structure"`
@@ -23573,7 +28082,7 @@ type AllocateHostsInput struct {
AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide.
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -23716,6 +28225,108 @@ func (s *AllowedPrincipal) SetPrincipalType(v string) *AllowedPrincipal {
return s
}
+type ApplySecurityGroupsToClientVpnTargetNetworkInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The IDs of the security groups to apply to the associated target network.
+ // Up to 5 security groups can be applied to an associated target network.
+ //
+ // SecurityGroupIds is a required field
+ SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list" required:"true"`
+
+ // The ID of the VPC in which the associated target network is located.
+ //
+ // VpcId is a required field
+ VpcId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ApplySecurityGroupsToClientVpnTargetNetworkInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ApplySecurityGroupsToClientVpnTargetNetworkInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ApplySecurityGroupsToClientVpnTargetNetworkInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.SecurityGroupIds == nil {
+ invalidParams.Add(request.NewErrParamRequired("SecurityGroupIds"))
+ }
+ if s.VpcId == nil {
+ invalidParams.Add(request.NewErrParamRequired("VpcId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *ApplySecurityGroupsToClientVpnTargetNetworkInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetDryRun(v bool) *ApplySecurityGroupsToClientVpnTargetNetworkInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetSecurityGroupIds sets the SecurityGroupIds field's value.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetSecurityGroupIds(v []*string) *ApplySecurityGroupsToClientVpnTargetNetworkInput {
+ s.SecurityGroupIds = v
+ return s
+}
+
+// SetVpcId sets the VpcId field's value.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkInput) SetVpcId(v string) *ApplySecurityGroupsToClientVpnTargetNetworkInput {
+ s.VpcId = &v
+ return s
+}
+
+type ApplySecurityGroupsToClientVpnTargetNetworkOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The IDs of the applied security groups.
+ SecurityGroupIds []*string `locationName:"securityGroupIds" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s ApplySecurityGroupsToClientVpnTargetNetworkOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ApplySecurityGroupsToClientVpnTargetNetworkOutput) GoString() string {
+ return s.String()
+}
+
+// SetSecurityGroupIds sets the SecurityGroupIds field's value.
+func (s *ApplySecurityGroupsToClientVpnTargetNetworkOutput) SetSecurityGroupIds(v []*string) *ApplySecurityGroupsToClientVpnTargetNetworkOutput {
+ s.SecurityGroupIds = v
+ return s
+}
+
type AssignIpv6AddressesInput struct {
_ struct{} `type:"structure"`
@@ -23894,7 +28505,6 @@ func (s AssignPrivateIpAddressesOutput) GoString() string {
return s.String()
}
-// Contains the parameters for AssociateAddress.
type AssociateAddressInput struct {
_ struct{} `type:"structure"`
@@ -23986,7 +28596,6 @@ func (s *AssociateAddressInput) SetPublicIp(v string) *AssociateAddressInput {
return s
}
-// Contains the output of AssociateAddress.
type AssociateAddressOutput struct {
_ struct{} `type:"structure"`
@@ -24011,6 +28620,102 @@ func (s *AssociateAddressOutput) SetAssociationId(v string) *AssociateAddressOut
return s
}
+type AssociateClientVpnTargetNetworkInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the subnet to associate with the Client VPN endpoint.
+ //
+ // SubnetId is a required field
+ SubnetId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s AssociateClientVpnTargetNetworkInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateClientVpnTargetNetworkInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AssociateClientVpnTargetNetworkInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AssociateClientVpnTargetNetworkInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.SubnetId == nil {
+ invalidParams.Add(request.NewErrParamRequired("SubnetId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *AssociateClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *AssociateClientVpnTargetNetworkInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AssociateClientVpnTargetNetworkInput) SetDryRun(v bool) *AssociateClientVpnTargetNetworkInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetSubnetId sets the SubnetId field's value.
+func (s *AssociateClientVpnTargetNetworkInput) SetSubnetId(v string) *AssociateClientVpnTargetNetworkInput {
+ s.SubnetId = &v
+ return s
+}
+
+type AssociateClientVpnTargetNetworkOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The unique ID of the target network association.
+ AssociationId *string `locationName:"associationId" type:"string"`
+
+ // The current state of the target network association.
+ Status *AssociationStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s AssociateClientVpnTargetNetworkOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateClientVpnTargetNetworkOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociationId sets the AssociationId field's value.
+func (s *AssociateClientVpnTargetNetworkOutput) SetAssociationId(v string) *AssociateClientVpnTargetNetworkOutput {
+ s.AssociationId = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *AssociateClientVpnTargetNetworkOutput) SetStatus(v *AssociationStatus) *AssociateClientVpnTargetNetworkOutput {
+ s.Status = v
+ return s
+}
+
type AssociateDhcpOptionsInput struct {
_ struct{} `type:"structure"`
@@ -24337,6 +29042,93 @@ func (s *AssociateSubnetCidrBlockOutput) SetSubnetId(v string) *AssociateSubnetC
return s
}
+type AssociateTransitGatewayRouteTableInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s AssociateTransitGatewayRouteTableInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateTransitGatewayRouteTableInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AssociateTransitGatewayRouteTableInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AssociateTransitGatewayRouteTableInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AssociateTransitGatewayRouteTableInput) SetDryRun(v bool) *AssociateTransitGatewayRouteTableInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *AssociateTransitGatewayRouteTableInput) SetTransitGatewayAttachmentId(v string) *AssociateTransitGatewayRouteTableInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *AssociateTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *AssociateTransitGatewayRouteTableInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type AssociateTransitGatewayRouteTableOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the association.
+ Association *TransitGatewayAssociation `locationName:"association" type:"structure"`
+}
+
+// String returns the string representation
+func (s AssociateTransitGatewayRouteTableOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateTransitGatewayRouteTableOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociation sets the Association field's value.
+func (s *AssociateTransitGatewayRouteTableOutput) SetAssociation(v *TransitGatewayAssociation) *AssociateTransitGatewayRouteTableOutput {
+ s.Association = v
+ return s
+}
+
type AssociateVpcCidrBlockInput struct {
_ struct{} `type:"structure"`
@@ -24436,6 +29228,73 @@ func (s *AssociateVpcCidrBlockOutput) SetVpcId(v string) *AssociateVpcCidrBlockO
return s
}
+// Describes a target network that is associated with a Client VPN endpoint.
+// A target network is a subnet in a VPC.
+type AssociatedTargetNetwork struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the subnet.
+ NetworkId *string `locationName:"networkId" type:"string"`
+
+ // The target network type.
+ NetworkType *string `locationName:"networkType" type:"string" enum:"AssociatedNetworkType"`
+}
+
+// String returns the string representation
+func (s AssociatedTargetNetwork) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociatedTargetNetwork) GoString() string {
+ return s.String()
+}
+
+// SetNetworkId sets the NetworkId field's value.
+func (s *AssociatedTargetNetwork) SetNetworkId(v string) *AssociatedTargetNetwork {
+ s.NetworkId = &v
+ return s
+}
+
+// SetNetworkType sets the NetworkType field's value.
+func (s *AssociatedTargetNetwork) SetNetworkType(v string) *AssociatedTargetNetwork {
+ s.NetworkType = &v
+ return s
+}
+
+// Describes the state of a target network association.
+type AssociationStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the target network association.
+ Code *string `locationName:"code" type:"string" enum:"AssociationStatusCode"`
+
+ // A message about the status of the target network association, if applicable.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s AssociationStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociationStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *AssociationStatus) SetCode(v string) *AssociationStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *AssociationStatus) SetMessage(v string) *AssociationStatus {
+ s.Message = &v
+ return s
+}
+
type AttachClassicLinkVpcInput struct {
_ struct{} `type:"structure"`
@@ -24936,6 +29795,193 @@ func (s *AttributeValue) SetValue(v string) *AttributeValue {
return s
}
+// Information about an authorization rule.
+type AuthorizationRule struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether the authorization rule grants access to all clients.
+ AccessAll *bool `locationName:"accessAll" type:"boolean"`
+
+ // The ID of the Client VPN endpoint with which the authorization rule is associated.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // A brief description of the authorization rule.
+ Description *string `locationName:"description" type:"string"`
+
+ // The IPv4 address range, in CIDR notation, of the network to which the authorization
+ // rule applies.
+ DestinationCidr *string `locationName:"destinationCidr" type:"string"`
+
+ // The ID of the Active Directory group to which the authorization rule grants
+ // access.
+ GroupId *string `locationName:"groupId" type:"string"`
+
+ // The current state of the authorization rule.
+ Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s AuthorizationRule) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AuthorizationRule) GoString() string {
+ return s.String()
+}
+
+// SetAccessAll sets the AccessAll field's value.
+func (s *AuthorizationRule) SetAccessAll(v bool) *AuthorizationRule {
+ s.AccessAll = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *AuthorizationRule) SetClientVpnEndpointId(v string) *AuthorizationRule {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *AuthorizationRule) SetDescription(v string) *AuthorizationRule {
+ s.Description = &v
+ return s
+}
+
+// SetDestinationCidr sets the DestinationCidr field's value.
+func (s *AuthorizationRule) SetDestinationCidr(v string) *AuthorizationRule {
+ s.DestinationCidr = &v
+ return s
+}
+
+// SetGroupId sets the GroupId field's value.
+func (s *AuthorizationRule) SetGroupId(v string) *AuthorizationRule {
+ s.GroupId = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *AuthorizationRule) SetStatus(v *ClientVpnAuthorizationRuleStatus) *AuthorizationRule {
+ s.Status = v
+ return s
+}
+
+type AuthorizeClientVpnIngressInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Active Directory group to grant access.
+ AccessGroupId *string `type:"string"`
+
+ // Indicates whether to grant access to all clients. Use true to grant all clients
+ // who successfully establish a VPN connection access to the network.
+ AuthorizeAllGroups *bool `type:"boolean"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // A brief description of the authorization rule.
+ Description *string `type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The IPv4 address range, in CIDR notation, of the network for which access
+ // is being authorized.
+ //
+ // TargetNetworkCidr is a required field
+ TargetNetworkCidr *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s AuthorizeClientVpnIngressInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AuthorizeClientVpnIngressInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AuthorizeClientVpnIngressInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AuthorizeClientVpnIngressInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.TargetNetworkCidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("TargetNetworkCidr"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAccessGroupId sets the AccessGroupId field's value.
+func (s *AuthorizeClientVpnIngressInput) SetAccessGroupId(v string) *AuthorizeClientVpnIngressInput {
+ s.AccessGroupId = &v
+ return s
+}
+
+// SetAuthorizeAllGroups sets the AuthorizeAllGroups field's value.
+func (s *AuthorizeClientVpnIngressInput) SetAuthorizeAllGroups(v bool) *AuthorizeClientVpnIngressInput {
+ s.AuthorizeAllGroups = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *AuthorizeClientVpnIngressInput) SetClientVpnEndpointId(v string) *AuthorizeClientVpnIngressInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *AuthorizeClientVpnIngressInput) SetDescription(v string) *AuthorizeClientVpnIngressInput {
+ s.Description = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *AuthorizeClientVpnIngressInput) SetDryRun(v bool) *AuthorizeClientVpnIngressInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTargetNetworkCidr sets the TargetNetworkCidr field's value.
+func (s *AuthorizeClientVpnIngressInput) SetTargetNetworkCidr(v string) *AuthorizeClientVpnIngressInput {
+ s.TargetNetworkCidr = &v
+ return s
+}
+
+type AuthorizeClientVpnIngressOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The current state of the authorization rule.
+ Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s AuthorizeClientVpnIngressOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AuthorizeClientVpnIngressOutput) GoString() string {
+ return s.String()
+}
+
+// SetStatus sets the Status field's value.
+func (s *AuthorizeClientVpnIngressOutput) SetStatus(v *ClientVpnAuthorizationRuleStatus) *AuthorizeClientVpnIngressOutput {
+ s.Status = v
+ return s
+}
+
type AuthorizeSecurityGroupEgressInput struct {
_ struct{} `type:"structure"`
@@ -25115,8 +30161,8 @@ type AuthorizeSecurityGroupIngressInput struct {
// be in the same VPC.
SourceSecurityGroupName *string `type:"string"`
- // [EC2-Classic] The AWS account ID for the source security group, if the source
- // security group is in a different account. You can't specify this parameter
+ // [nondefault VPC] The AWS account ID for the source security group, if the
+ // source security group is in a different account. You can't specify this parameter
// in combination with the following parameters: the CIDR IP address range,
// the IP protocol, the start of the port range, and the end of the port range.
// Creates rules that grant full ICMP, UDP, and TCP access. To create a rule
@@ -25226,6 +30272,9 @@ type AvailabilityZone struct {
// The state of the Availability Zone.
State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"`
+ // The ID of the Availability Zone.
+ ZoneId *string `locationName:"zoneId" type:"string"`
+
// The name of the Availability Zone.
ZoneName *string `locationName:"zoneName" type:"string"`
}
@@ -25258,6 +30307,12 @@ func (s *AvailabilityZone) SetState(v string) *AvailabilityZone {
return s
}
+// SetZoneId sets the ZoneId field's value.
+func (s *AvailabilityZone) SetZoneId(v string) *AvailabilityZone {
+ s.ZoneId = &v
+ return s
+}
+
// SetZoneName sets the ZoneName field's value.
func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone {
s.ZoneName = &v
@@ -25626,6 +30681,59 @@ func (s *BundleTaskError) SetMessage(v string) *BundleTaskError {
return s
}
+// Information about an address range that is provisioned for use with your
+// AWS resources through bring your own IP addresses (BYOIP).
+type ByoipCidr struct {
+ _ struct{} `type:"structure"`
+
+ // The public IPv4 address range, in CIDR notation.
+ Cidr *string `locationName:"cidr" type:"string"`
+
+ // The description of the address range.
+ Description *string `locationName:"description" type:"string"`
+
+ // The state of the address pool.
+ State *string `locationName:"state" type:"string" enum:"ByoipCidrState"`
+
+ // Upon success, contains the ID of the address pool. Otherwise, contains an
+ // error message.
+ StatusMessage *string `locationName:"statusMessage" type:"string"`
+}
+
+// String returns the string representation
+func (s ByoipCidr) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ByoipCidr) GoString() string {
+ return s.String()
+}
+
+// SetCidr sets the Cidr field's value.
+func (s *ByoipCidr) SetCidr(v string) *ByoipCidr {
+ s.Cidr = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *ByoipCidr) SetDescription(v string) *ByoipCidr {
+ s.Description = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *ByoipCidr) SetState(v string) *ByoipCidr {
+ s.State = &v
+ return s
+}
+
+// SetStatusMessage sets the StatusMessage field's value.
+func (s *ByoipCidr) SetStatusMessage(v string) *ByoipCidr {
+ s.StatusMessage = &v
+ return s
+}
+
// Contains the parameters for CancelBundleTask.
type CancelBundleTaskInput struct {
_ struct{} `type:"structure"`
@@ -25701,6 +30809,79 @@ func (s *CancelBundleTaskOutput) SetBundleTask(v *BundleTask) *CancelBundleTaskO
return s
}
+type CancelCapacityReservationInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Capacity Reservation to be cancelled.
+ //
+ // CapacityReservationId is a required field
+ CapacityReservationId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s CancelCapacityReservationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CancelCapacityReservationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CancelCapacityReservationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CancelCapacityReservationInput"}
+ if s.CapacityReservationId == nil {
+ invalidParams.Add(request.NewErrParamRequired("CapacityReservationId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *CancelCapacityReservationInput) SetCapacityReservationId(v string) *CancelCapacityReservationInput {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CancelCapacityReservationInput) SetDryRun(v bool) *CancelCapacityReservationInput {
+ s.DryRun = &v
+ return s
+}
+
+type CancelCapacityReservationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Returns true if the request succeeds; otherwise, it returns an error.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s CancelCapacityReservationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CancelCapacityReservationOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *CancelCapacityReservationOutput) SetReturn(v bool) *CancelCapacityReservationOutput {
+ s.Return = &v
+ return s
+}
+
// Contains the parameters for CancelConversionTask.
type CancelConversionTaskInput struct {
_ struct{} `type:"structure"`
@@ -25983,14 +31164,10 @@ type CancelSpotFleetRequestsError struct {
_ struct{} `type:"structure"`
// The error code.
- //
- // Code is a required field
- Code *string `locationName:"code" type:"string" required:"true" enum:"CancelBatchErrorCode"`
+ Code *string `locationName:"code" type:"string" enum:"CancelBatchErrorCode"`
// The description for the error code.
- //
- // Message is a required field
- Message *string `locationName:"message" type:"string" required:"true"`
+ Message *string `locationName:"message" type:"string"`
}
// String returns the string representation
@@ -26020,14 +31197,10 @@ type CancelSpotFleetRequestsErrorItem struct {
_ struct{} `type:"structure"`
// The error.
- //
- // Error is a required field
- Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure" required:"true"`
+ Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
}
// String returns the string representation
@@ -26156,19 +31329,13 @@ type CancelSpotFleetRequestsSuccessItem struct {
_ struct{} `type:"structure"`
// The current state of the Spot Fleet request.
- //
- // CurrentSpotFleetRequestState is a required field
- CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
+ CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" enum:"BatchState"`
// The previous state of the Spot Fleet request.
- //
- // PreviousSpotFleetRequestState is a required field
- PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
+ PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" enum:"BatchState"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
}
// String returns the string representation
@@ -26307,6 +31474,453 @@ func (s *CancelledSpotInstanceRequest) SetState(v string) *CancelledSpotInstance
return s
}
+// Describes a Capacity Reservation.
+type CapacityReservation struct {
+ _ struct{} `type:"structure"`
+
+ // The Availability Zone in which the capacity is reserved.
+ AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
+
+ // The remaining capacity. Indicates the number of instances that can be launched
+ // in the Capacity Reservation.
+ AvailableInstanceCount *int64 `locationName:"availableInstanceCount" type:"integer"`
+
+ // The ID of the Capacity Reservation.
+ CapacityReservationId *string `locationName:"capacityReservationId" type:"string"`
+
+ // The date and time at which the Capacity Reservation was created.
+ CreateDate *time.Time `locationName:"createDate" type:"timestamp"`
+
+ // Indicates whether the Capacity Reservation supports EBS-optimized instances.
+ // This optimization provides dedicated throughput to Amazon EBS and an optimized
+ // configuration stack to provide optimal I/O performance. This optimization
+ // isn't available with all instance types. Additional usage charges apply when
+ // using an EBS- optimized instance.
+ EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"`
+
+ // The date and time at which the Capacity Reservation expires. When a Capacity
+ // Reservation expires, the reserved capacity is released and you can no longer
+ // launch instances into it. The Capacity Reservation's state changes to expired
+ // when it reaches its end date and time.
+ EndDate *time.Time `locationName:"endDate" type:"timestamp"`
+
+ // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation
+ // can have one of the following end types:
+ //
+ // * unlimited - The Capacity Reservation remains active until you explicitly
+ // cancel it.
+ //
+ // * limited - The Capacity Reservation expires automatically at a specified
+ // date and time.
+ EndDateType *string `locationName:"endDateType" type:"string" enum:"EndDateType"`
+
+ // Indicates whether the Capacity Reservation supports instances with temporary,
+ // block-level storage.
+ EphemeralStorage *bool `locationName:"ephemeralStorage" type:"boolean"`
+
+ // Indicates the type of instance launches that the Capacity Reservation accepts.
+ // The options include:
+ //
+ // * open - The Capacity Reservation accepts all instances that have matching
+ // attributes (instance type, platform, and Availability Zone). Instances
+ // that have matching attributes launch into the Capacity Reservation automatically
+ // without specifying any additional parameters.
+ //
+ // * targeted - The Capacity Reservation only accepts instances that have
+ // matching attributes (instance type, platform, and Availability Zone),
+ // and explicitly target the Capacity Reservation. This ensures that only
+ // permitted instances can use the reserved capacity.
+ InstanceMatchCriteria *string `locationName:"instanceMatchCriteria" type:"string" enum:"InstanceMatchCriteria"`
+
+ // The type of operating system for which the Capacity Reservation reserves
+ // capacity.
+ InstancePlatform *string `locationName:"instancePlatform" type:"string" enum:"CapacityReservationInstancePlatform"`
+
+ // The type of instance for which the Capacity Reservation reserves capacity.
+ InstanceType *string `locationName:"instanceType" type:"string"`
+
+ // The current state of the Capacity Reservation. A Capacity Reservation can
+ // be in one of the following states:
+ //
+ // * active - The Capacity Reservation is active and the capacity is available
+ // for your use.
+ //
+ // * cancelled - The Capacity Reservation expired automatically at the date
+ // and time specified in your request. The reserved capacity is no longer
+ // available for your use.
+ //
+ // * expired - The Capacity Reservation was manually cancelled. The reserved
+ // capacity is no longer available for your use.
+ //
+ // * pending - The Capacity Reservation request was successful but the capacity
+ // provisioning is still pending.
+ //
+ // * failed - The Capacity Reservation request has failed. A request might
+ // fail due to invalid request parameters, capacity constraints, or instance
+ // limit constraints. Failed requests are retained for 60 minutes.
+ State *string `locationName:"state" type:"string" enum:"CapacityReservationState"`
+
+ // Any tags assigned to the Capacity Reservation.
+ Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+
+ // Indicates the tenancy of the Capacity Reservation. A Capacity Reservation
+ // can have one of the following tenancy settings:
+ //
+ // * default - The Capacity Reservation is created on hardware that is shared
+ // with other AWS accounts.
+ //
+ // * dedicated - The Capacity Reservation is created on single-tenant hardware
+ // that is dedicated to a single AWS account.
+ Tenancy *string `locationName:"tenancy" type:"string" enum:"CapacityReservationTenancy"`
+
+ // The number of instances for which the Capacity Reservation reserves capacity.
+ TotalInstanceCount *int64 `locationName:"totalInstanceCount" type:"integer"`
+}
+
+// String returns the string representation
+func (s CapacityReservation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CapacityReservation) GoString() string {
+ return s.String()
+}
+
+// SetAvailabilityZone sets the AvailabilityZone field's value.
+func (s *CapacityReservation) SetAvailabilityZone(v string) *CapacityReservation {
+ s.AvailabilityZone = &v
+ return s
+}
+
+// SetAvailableInstanceCount sets the AvailableInstanceCount field's value.
+func (s *CapacityReservation) SetAvailableInstanceCount(v int64) *CapacityReservation {
+ s.AvailableInstanceCount = &v
+ return s
+}
+
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *CapacityReservation) SetCapacityReservationId(v string) *CapacityReservation {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// SetCreateDate sets the CreateDate field's value.
+func (s *CapacityReservation) SetCreateDate(v time.Time) *CapacityReservation {
+ s.CreateDate = &v
+ return s
+}
+
+// SetEbsOptimized sets the EbsOptimized field's value.
+func (s *CapacityReservation) SetEbsOptimized(v bool) *CapacityReservation {
+ s.EbsOptimized = &v
+ return s
+}
+
+// SetEndDate sets the EndDate field's value.
+func (s *CapacityReservation) SetEndDate(v time.Time) *CapacityReservation {
+ s.EndDate = &v
+ return s
+}
+
+// SetEndDateType sets the EndDateType field's value.
+func (s *CapacityReservation) SetEndDateType(v string) *CapacityReservation {
+ s.EndDateType = &v
+ return s
+}
+
+// SetEphemeralStorage sets the EphemeralStorage field's value.
+func (s *CapacityReservation) SetEphemeralStorage(v bool) *CapacityReservation {
+ s.EphemeralStorage = &v
+ return s
+}
+
+// SetInstanceMatchCriteria sets the InstanceMatchCriteria field's value.
+func (s *CapacityReservation) SetInstanceMatchCriteria(v string) *CapacityReservation {
+ s.InstanceMatchCriteria = &v
+ return s
+}
+
+// SetInstancePlatform sets the InstancePlatform field's value.
+func (s *CapacityReservation) SetInstancePlatform(v string) *CapacityReservation {
+ s.InstancePlatform = &v
+ return s
+}
+
+// SetInstanceType sets the InstanceType field's value.
+func (s *CapacityReservation) SetInstanceType(v string) *CapacityReservation {
+ s.InstanceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *CapacityReservation) SetState(v string) *CapacityReservation {
+ s.State = &v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *CapacityReservation) SetTags(v []*Tag) *CapacityReservation {
+ s.Tags = v
+ return s
+}
+
+// SetTenancy sets the Tenancy field's value.
+func (s *CapacityReservation) SetTenancy(v string) *CapacityReservation {
+ s.Tenancy = &v
+ return s
+}
+
+// SetTotalInstanceCount sets the TotalInstanceCount field's value.
+func (s *CapacityReservation) SetTotalInstanceCount(v int64) *CapacityReservation {
+ s.TotalInstanceCount = &v
+ return s
+}
+
+// Describes an instance's Capacity Reservation targeting option. You can specify
+// only one parameter at a time. If you specify CapacityReservationPreference
+// and CapacityReservationTarget, the request fails.
+//
+// Use the CapacityReservationPreference parameter to configure the instance
+// to run as an On-Demand Instance or to run in any open Capacity Reservation
+// that has matching attributes (instance type, platform, Availability Zone).
+// Use the CapacityReservationTarget parameter to explicitly target a specific
+// Capacity Reservation.
+type CapacityReservationSpecification struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates the instance's Capacity Reservation preferences. Possible preferences
+ // include:
+ //
+ // * open - The instance can run in any open Capacity Reservation that has
+ // matching attributes (instance type, platform, Availability Zone).
+ //
+ // * none - The instance avoids running in a Capacity Reservation even if
+ // one is available. The instance runs as an On-Demand Instance.
+ CapacityReservationPreference *string `type:"string" enum:"CapacityReservationPreference"`
+
+ // Information about the target Capacity Reservation.
+ CapacityReservationTarget *CapacityReservationTarget `type:"structure"`
+}
+
+// String returns the string representation
+func (s CapacityReservationSpecification) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CapacityReservationSpecification) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationPreference sets the CapacityReservationPreference field's value.
+func (s *CapacityReservationSpecification) SetCapacityReservationPreference(v string) *CapacityReservationSpecification {
+ s.CapacityReservationPreference = &v
+ return s
+}
+
+// SetCapacityReservationTarget sets the CapacityReservationTarget field's value.
+func (s *CapacityReservationSpecification) SetCapacityReservationTarget(v *CapacityReservationTarget) *CapacityReservationSpecification {
+ s.CapacityReservationTarget = v
+ return s
+}
+
+// Describes the instance's Capacity Reservation targeting preferences. The
+// action returns the capacityReservationPreference response element if the
+// instance is configured to run in On-Demand capacity, or if it is configured
+// in run in any open Capacity Reservation that has matching attributes (instance
+// type, platform, Availability Zone). The action returns the capacityReservationTarget
+// response element if the instance explicily targets a specific Capacity Reservation.
+type CapacityReservationSpecificationResponse struct {
+ _ struct{} `type:"structure"`
+
+ // Describes the instance's Capacity Reservation preferences. Possible preferences
+ // include:
+ //
+ // * open - The instance can run in any open Capacity Reservation that has
+ // matching attributes (instance type, platform, Availability Zone).
+ //
+ // * none - The instance avoids running in a Capacity Reservation even if
+ // one is available. The instance runs in On-Demand capacity.
+ CapacityReservationPreference *string `locationName:"capacityReservationPreference" type:"string" enum:"CapacityReservationPreference"`
+
+ // Information about the targeted Capacity Reservation.
+ CapacityReservationTarget *CapacityReservationTargetResponse `locationName:"capacityReservationTarget" type:"structure"`
+}
+
+// String returns the string representation
+func (s CapacityReservationSpecificationResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CapacityReservationSpecificationResponse) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationPreference sets the CapacityReservationPreference field's value.
+func (s *CapacityReservationSpecificationResponse) SetCapacityReservationPreference(v string) *CapacityReservationSpecificationResponse {
+ s.CapacityReservationPreference = &v
+ return s
+}
+
+// SetCapacityReservationTarget sets the CapacityReservationTarget field's value.
+func (s *CapacityReservationSpecificationResponse) SetCapacityReservationTarget(v *CapacityReservationTargetResponse) *CapacityReservationSpecificationResponse {
+ s.CapacityReservationTarget = v
+ return s
+}
+
+// Describes a target Capacity Reservation.
+type CapacityReservationTarget struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Capacity Reservation.
+ CapacityReservationId *string `type:"string"`
+}
+
+// String returns the string representation
+func (s CapacityReservationTarget) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CapacityReservationTarget) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *CapacityReservationTarget) SetCapacityReservationId(v string) *CapacityReservationTarget {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// Describes a target Capacity Reservation.
+type CapacityReservationTargetResponse struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Capacity Reservation.
+ CapacityReservationId *string `locationName:"capacityReservationId" type:"string"`
+}
+
+// String returns the string representation
+func (s CapacityReservationTargetResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CapacityReservationTargetResponse) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *CapacityReservationTargetResponse) SetCapacityReservationId(v string) *CapacityReservationTargetResponse {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// Information about the client certificate used for authentication.
+type CertificateAuthentication struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the client certificate.
+ ClientRootCertificateChain *string `locationName:"clientRootCertificateChain" type:"string"`
+}
+
+// String returns the string representation
+func (s CertificateAuthentication) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CertificateAuthentication) GoString() string {
+ return s.String()
+}
+
+// SetClientRootCertificateChain sets the ClientRootCertificateChain field's value.
+func (s *CertificateAuthentication) SetClientRootCertificateChain(v string) *CertificateAuthentication {
+ s.ClientRootCertificateChain = &v
+ return s
+}
+
+// Information about the client certificate to be used for authentication.
+type CertificateAuthenticationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The ARN of the client certificate. The certificate must be signed by a certificate
+ // authority (CA) and it must be provisioned in AWS Certificate Manager (ACM).
+ ClientRootCertificateChainArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s CertificateAuthenticationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CertificateAuthenticationRequest) GoString() string {
+ return s.String()
+}
+
+// SetClientRootCertificateChainArn sets the ClientRootCertificateChainArn field's value.
+func (s *CertificateAuthenticationRequest) SetClientRootCertificateChainArn(v string) *CertificateAuthenticationRequest {
+ s.ClientRootCertificateChainArn = &v
+ return s
+}
+
+// Provides authorization for Amazon to bring a specific IP address range to
+// a specific AWS account using bring your own IP addresses (BYOIP).
+type CidrAuthorizationContext struct {
+ _ struct{} `type:"structure"`
+
+ // The plain-text authorization message for the prefix and account.
+ //
+ // Message is a required field
+ Message *string `type:"string" required:"true"`
+
+ // The signed authorization message for the prefix and account.
+ //
+ // Signature is a required field
+ Signature *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CidrAuthorizationContext) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CidrAuthorizationContext) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CidrAuthorizationContext) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CidrAuthorizationContext"}
+ if s.Message == nil {
+ invalidParams.Add(request.NewErrParamRequired("Message"))
+ }
+ if s.Signature == nil {
+ invalidParams.Add(request.NewErrParamRequired("Signature"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetMessage sets the Message field's value.
+func (s *CidrAuthorizationContext) SetMessage(v string) *CidrAuthorizationContext {
+ s.Message = &v
+ return s
+}
+
+// SetSignature sets the Signature field's value.
+func (s *CidrAuthorizationContext) SetSignature(v string) *CidrAuthorizationContext {
+ s.Signature = &v
+ return s
+}
+
// Describes an IPv4 CIDR block.
type CidrBlock struct {
_ struct{} `type:"structure"`
@@ -26420,9 +32034,7 @@ type ClassicLoadBalancer struct {
_ struct{} `type:"structure"`
// The name of the load balancer.
- //
- // Name is a required field
- Name *string `locationName:"name" type:"string" required:"true"`
+ Name *string `locationName:"name" type:"string"`
}
// String returns the string representation
@@ -26435,19 +32047,6 @@ func (s ClassicLoadBalancer) GoString() string {
return s.String()
}
-// Validate inspects the fields of the type to determine if they are valid.
-func (s *ClassicLoadBalancer) Validate() error {
- invalidParams := request.ErrInvalidParams{Context: "ClassicLoadBalancer"}
- if s.Name == nil {
- invalidParams.Add(request.NewErrParamRequired("Name"))
- }
-
- if invalidParams.Len() > 0 {
- return invalidParams
- }
- return nil
-}
-
// SetName sets the Name field's value.
func (s *ClassicLoadBalancer) SetName(v string) *ClassicLoadBalancer {
s.Name = &v
@@ -26460,9 +32059,7 @@ type ClassicLoadBalancersConfig struct {
_ struct{} `type:"structure"`
// One or more Classic Load Balancers.
- //
- // ClassicLoadBalancers is a required field
- ClassicLoadBalancers []*ClassicLoadBalancer `locationName:"classicLoadBalancers" locationNameList:"item" min:"1" type:"list" required:"true"`
+ ClassicLoadBalancers []*ClassicLoadBalancer `locationName:"classicLoadBalancers" locationNameList:"item" min:"1" type:"list"`
}
// String returns the string representation
@@ -26478,22 +32075,9 @@ func (s ClassicLoadBalancersConfig) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *ClassicLoadBalancersConfig) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "ClassicLoadBalancersConfig"}
- if s.ClassicLoadBalancers == nil {
- invalidParams.Add(request.NewErrParamRequired("ClassicLoadBalancers"))
- }
if s.ClassicLoadBalancers != nil && len(s.ClassicLoadBalancers) < 1 {
invalidParams.Add(request.NewErrParamMinLen("ClassicLoadBalancers", 1))
}
- if s.ClassicLoadBalancers != nil {
- for i, v := range s.ClassicLoadBalancers {
- if v == nil {
- continue
- }
- if err := v.Validate(); err != nil {
- invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ClassicLoadBalancers", i), err.(request.ErrInvalidParams))
- }
- }
- }
if invalidParams.Len() > 0 {
return invalidParams
@@ -26507,6 +32091,40 @@ func (s *ClassicLoadBalancersConfig) SetClassicLoadBalancers(v []*ClassicLoadBal
return s
}
+// Describes the state of a client certificate revocation list.
+type ClientCertificateRevocationListStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the client certificate revocation list.
+ Code *string `locationName:"code" type:"string" enum:"ClientCertificateRevocationListStatusCode"`
+
+ // A message about the status of the client certificate revocation list, if
+ // applicable.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientCertificateRevocationListStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientCertificateRevocationListStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientCertificateRevocationListStatus) SetCode(v string) *ClientCertificateRevocationListStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientCertificateRevocationListStatus) SetMessage(v string) *ClientCertificateRevocationListStatus {
+ s.Message = &v
+ return s
+}
+
// Describes the client-specific data.
type ClientData struct {
_ struct{} `type:"structure"`
@@ -26558,7 +32176,606 @@ func (s *ClientData) SetUploadStart(v time.Time) *ClientData {
return s
}
-// Contains the parameters for ConfirmProductInstance.
+// Describes the authentication methods used by a Client VPN endpoint. Client
+// VPN supports Active Directory and mutual authentication. For more information,
+// see Authentication (vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication)
+// in the AWS Client VPN Admin Guide.
+type ClientVpnAuthentication struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Active Directory, if applicable.
+ ActiveDirectory *DirectoryServiceAuthentication `locationName:"activeDirectory" type:"structure"`
+
+ // Information about the authentication certificates, if applicable.
+ MutualAuthentication *CertificateAuthentication `locationName:"mutualAuthentication" type:"structure"`
+
+ // The authentication type used.
+ Type *string `locationName:"type" type:"string" enum:"ClientVpnAuthenticationType"`
+}
+
+// String returns the string representation
+func (s ClientVpnAuthentication) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnAuthentication) GoString() string {
+ return s.String()
+}
+
+// SetActiveDirectory sets the ActiveDirectory field's value.
+func (s *ClientVpnAuthentication) SetActiveDirectory(v *DirectoryServiceAuthentication) *ClientVpnAuthentication {
+ s.ActiveDirectory = v
+ return s
+}
+
+// SetMutualAuthentication sets the MutualAuthentication field's value.
+func (s *ClientVpnAuthentication) SetMutualAuthentication(v *CertificateAuthentication) *ClientVpnAuthentication {
+ s.MutualAuthentication = v
+ return s
+}
+
+// SetType sets the Type field's value.
+func (s *ClientVpnAuthentication) SetType(v string) *ClientVpnAuthentication {
+ s.Type = &v
+ return s
+}
+
+// Describes the authentication method to be used by a Client VPN endpoint.
+// Client VPN supports Active Directory and mutual authentication. For more
+// information, see Authentication (vpn/latest/clientvpn-admin/authentication-authrization.html#client-authentication)
+// in the AWS Client VPN Admin Guide.
+type ClientVpnAuthenticationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Active Directory to be used, if applicable. You must
+ // provide this information if Type is directory-service-authentication.
+ ActiveDirectory *DirectoryServiceAuthenticationRequest `type:"structure"`
+
+ // Information about the authentication certificates to be used, if applicable.
+ // You must provide this information if Type is certificate-authentication.
+ MutualAuthentication *CertificateAuthenticationRequest `type:"structure"`
+
+ // The type of client authentication to be used. Specify certificate-authentication
+ // to use certificate-based authentication, or directory-service-authentication
+ // to use Active Directory authentication.
+ Type *string `type:"string" enum:"ClientVpnAuthenticationType"`
+}
+
+// String returns the string representation
+func (s ClientVpnAuthenticationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnAuthenticationRequest) GoString() string {
+ return s.String()
+}
+
+// SetActiveDirectory sets the ActiveDirectory field's value.
+func (s *ClientVpnAuthenticationRequest) SetActiveDirectory(v *DirectoryServiceAuthenticationRequest) *ClientVpnAuthenticationRequest {
+ s.ActiveDirectory = v
+ return s
+}
+
+// SetMutualAuthentication sets the MutualAuthentication field's value.
+func (s *ClientVpnAuthenticationRequest) SetMutualAuthentication(v *CertificateAuthenticationRequest) *ClientVpnAuthenticationRequest {
+ s.MutualAuthentication = v
+ return s
+}
+
+// SetType sets the Type field's value.
+func (s *ClientVpnAuthenticationRequest) SetType(v string) *ClientVpnAuthenticationRequest {
+ s.Type = &v
+ return s
+}
+
+// Describes the state of an authorization rule.
+type ClientVpnAuthorizationRuleStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the authorization rule.
+ Code *string `locationName:"code" type:"string" enum:"ClientVpnAuthorizationRuleStatusCode"`
+
+ // A message about the status of the authorization rule, if applicable.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnAuthorizationRuleStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnAuthorizationRuleStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientVpnAuthorizationRuleStatus) SetCode(v string) *ClientVpnAuthorizationRuleStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientVpnAuthorizationRuleStatus) SetMessage(v string) *ClientVpnAuthorizationRuleStatus {
+ s.Message = &v
+ return s
+}
+
+// Describes a client connection.
+type ClientVpnConnection struct {
+ _ struct{} `type:"structure"`
+
+ // The IP address of the client.
+ ClientIp *string `locationName:"clientIp" type:"string"`
+
+ // The ID of the Client VPN endpoint to which the client is connected.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // The common name associated with the client. This is either the name of the
+ // client certificate, or the Active Directory user name.
+ CommonName *string `locationName:"commonName" type:"string"`
+
+ // The date and time the client connection was terminated.
+ ConnectionEndTime *string `locationName:"connectionEndTime" type:"string"`
+
+ // The date and time the client connection was established.
+ ConnectionEstablishedTime *string `locationName:"connectionEstablishedTime" type:"string"`
+
+ // The ID of the client connection.
+ ConnectionId *string `locationName:"connectionId" type:"string"`
+
+ // The number of bytes received by the client.
+ EgressBytes *string `locationName:"egressBytes" type:"string"`
+
+ // The number of packets received by the client.
+ EgressPackets *string `locationName:"egressPackets" type:"string"`
+
+ // The number of bytes sent by the client.
+ IngressBytes *string `locationName:"ingressBytes" type:"string"`
+
+ // The number of packets sent by the client.
+ IngressPackets *string `locationName:"ingressPackets" type:"string"`
+
+ // The current state of the client connection.
+ Status *ClientVpnConnectionStatus `locationName:"status" type:"structure"`
+
+ // The current date and time.
+ Timestamp *string `locationName:"timestamp" type:"string"`
+
+ // The username of the client who established the client connection. This information
+ // is only provided if Active Directory client authentication is used.
+ Username *string `locationName:"username" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnConnection) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnConnection) GoString() string {
+ return s.String()
+}
+
+// SetClientIp sets the ClientIp field's value.
+func (s *ClientVpnConnection) SetClientIp(v string) *ClientVpnConnection {
+ s.ClientIp = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ClientVpnConnection) SetClientVpnEndpointId(v string) *ClientVpnConnection {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetCommonName sets the CommonName field's value.
+func (s *ClientVpnConnection) SetCommonName(v string) *ClientVpnConnection {
+ s.CommonName = &v
+ return s
+}
+
+// SetConnectionEndTime sets the ConnectionEndTime field's value.
+func (s *ClientVpnConnection) SetConnectionEndTime(v string) *ClientVpnConnection {
+ s.ConnectionEndTime = &v
+ return s
+}
+
+// SetConnectionEstablishedTime sets the ConnectionEstablishedTime field's value.
+func (s *ClientVpnConnection) SetConnectionEstablishedTime(v string) *ClientVpnConnection {
+ s.ConnectionEstablishedTime = &v
+ return s
+}
+
+// SetConnectionId sets the ConnectionId field's value.
+func (s *ClientVpnConnection) SetConnectionId(v string) *ClientVpnConnection {
+ s.ConnectionId = &v
+ return s
+}
+
+// SetEgressBytes sets the EgressBytes field's value.
+func (s *ClientVpnConnection) SetEgressBytes(v string) *ClientVpnConnection {
+ s.EgressBytes = &v
+ return s
+}
+
+// SetEgressPackets sets the EgressPackets field's value.
+func (s *ClientVpnConnection) SetEgressPackets(v string) *ClientVpnConnection {
+ s.EgressPackets = &v
+ return s
+}
+
+// SetIngressBytes sets the IngressBytes field's value.
+func (s *ClientVpnConnection) SetIngressBytes(v string) *ClientVpnConnection {
+ s.IngressBytes = &v
+ return s
+}
+
+// SetIngressPackets sets the IngressPackets field's value.
+func (s *ClientVpnConnection) SetIngressPackets(v string) *ClientVpnConnection {
+ s.IngressPackets = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *ClientVpnConnection) SetStatus(v *ClientVpnConnectionStatus) *ClientVpnConnection {
+ s.Status = v
+ return s
+}
+
+// SetTimestamp sets the Timestamp field's value.
+func (s *ClientVpnConnection) SetTimestamp(v string) *ClientVpnConnection {
+ s.Timestamp = &v
+ return s
+}
+
+// SetUsername sets the Username field's value.
+func (s *ClientVpnConnection) SetUsername(v string) *ClientVpnConnection {
+ s.Username = &v
+ return s
+}
+
+// Describes the status of a client connection.
+type ClientVpnConnectionStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the client connection.
+ Code *string `locationName:"code" type:"string" enum:"ClientVpnConnectionStatusCode"`
+
+ // A message about the status of the client connection, if applicable.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnConnectionStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnConnectionStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientVpnConnectionStatus) SetCode(v string) *ClientVpnConnectionStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientVpnConnectionStatus) SetMessage(v string) *ClientVpnConnectionStatus {
+ s.Message = &v
+ return s
+}
+
+// Describes a Client VPN endpoint.
+type ClientVpnEndpoint struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the associated target networks. A target network is a subnet
+ // in a VPC.
+ AssociatedTargetNetworks []*AssociatedTargetNetwork `locationName:"associatedTargetNetwork" locationNameList:"item" type:"list"`
+
+ // Information about the authentication method used by the Client VPN endpoint.
+ AuthenticationOptions []*ClientVpnAuthentication `locationName:"authenticationOptions" locationNameList:"item" type:"list"`
+
+ // The IPv4 address range, in CIDR notation, from which client IP addresses
+ // are assigned.
+ ClientCidrBlock *string `locationName:"clientCidrBlock" type:"string"`
+
+ // The ID of the Client VPN endpoint.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // Information about the client connection logging options for the Client VPN
+ // endpoint.
+ ConnectionLogOptions *ConnectionLogResponseOptions `locationName:"connectionLogOptions" type:"structure"`
+
+ // The date and time the Client VPN endpoint was created.
+ CreationTime *string `locationName:"creationTime" type:"string"`
+
+ // The date and time the Client VPN endpoint was deleted, if applicable. Information
+ // about deleted Client VPN endpoints is retained for 24 hours, unless a new
+ // Client VPN is created with the same name.
+ DeletionTime *string `locationName:"deletionTime" type:"string"`
+
+ // A brief description of the endpoint.
+ Description *string `locationName:"description" type:"string"`
+
+ // The DNS name to be used by clients when establishing a connection.
+ DnsName *string `locationName:"dnsName" type:"string"`
+
+ // The ARN of the server certificate.
+ ServerCertificateArn *string `locationName:"serverCertificateArn" type:"string"`
+
+ // Indicates whether VPN split tunneling is supported.
+ SplitTunnel *bool `locationName:"splitTunnel" type:"boolean"`
+
+ // The current state of the Client VPN endpoint.
+ Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"`
+
+ // The transport protocol used by the Client VPN endpoint.
+ TransportProtocol *string `locationName:"transportProtocol" type:"string" enum:"TransportProtocol"`
+
+ // The protocol used by the VPN session.
+ VpnProtocol *string `locationName:"vpnProtocol" type:"string" enum:"VpnProtocol"`
+}
+
+// String returns the string representation
+func (s ClientVpnEndpoint) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnEndpoint) GoString() string {
+ return s.String()
+}
+
+// SetAssociatedTargetNetworks sets the AssociatedTargetNetworks field's value.
+func (s *ClientVpnEndpoint) SetAssociatedTargetNetworks(v []*AssociatedTargetNetwork) *ClientVpnEndpoint {
+ s.AssociatedTargetNetworks = v
+ return s
+}
+
+// SetAuthenticationOptions sets the AuthenticationOptions field's value.
+func (s *ClientVpnEndpoint) SetAuthenticationOptions(v []*ClientVpnAuthentication) *ClientVpnEndpoint {
+ s.AuthenticationOptions = v
+ return s
+}
+
+// SetClientCidrBlock sets the ClientCidrBlock field's value.
+func (s *ClientVpnEndpoint) SetClientCidrBlock(v string) *ClientVpnEndpoint {
+ s.ClientCidrBlock = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ClientVpnEndpoint) SetClientVpnEndpointId(v string) *ClientVpnEndpoint {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetConnectionLogOptions sets the ConnectionLogOptions field's value.
+func (s *ClientVpnEndpoint) SetConnectionLogOptions(v *ConnectionLogResponseOptions) *ClientVpnEndpoint {
+ s.ConnectionLogOptions = v
+ return s
+}
+
+// SetCreationTime sets the CreationTime field's value.
+func (s *ClientVpnEndpoint) SetCreationTime(v string) *ClientVpnEndpoint {
+ s.CreationTime = &v
+ return s
+}
+
+// SetDeletionTime sets the DeletionTime field's value.
+func (s *ClientVpnEndpoint) SetDeletionTime(v string) *ClientVpnEndpoint {
+ s.DeletionTime = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *ClientVpnEndpoint) SetDescription(v string) *ClientVpnEndpoint {
+ s.Description = &v
+ return s
+}
+
+// SetDnsName sets the DnsName field's value.
+func (s *ClientVpnEndpoint) SetDnsName(v string) *ClientVpnEndpoint {
+ s.DnsName = &v
+ return s
+}
+
+// SetServerCertificateArn sets the ServerCertificateArn field's value.
+func (s *ClientVpnEndpoint) SetServerCertificateArn(v string) *ClientVpnEndpoint {
+ s.ServerCertificateArn = &v
+ return s
+}
+
+// SetSplitTunnel sets the SplitTunnel field's value.
+func (s *ClientVpnEndpoint) SetSplitTunnel(v bool) *ClientVpnEndpoint {
+ s.SplitTunnel = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *ClientVpnEndpoint) SetStatus(v *ClientVpnEndpointStatus) *ClientVpnEndpoint {
+ s.Status = v
+ return s
+}
+
+// SetTransportProtocol sets the TransportProtocol field's value.
+func (s *ClientVpnEndpoint) SetTransportProtocol(v string) *ClientVpnEndpoint {
+ s.TransportProtocol = &v
+ return s
+}
+
+// SetVpnProtocol sets the VpnProtocol field's value.
+func (s *ClientVpnEndpoint) SetVpnProtocol(v string) *ClientVpnEndpoint {
+ s.VpnProtocol = &v
+ return s
+}
+
+// Describes the state of a Client VPN endpoint.
+type ClientVpnEndpointStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the Client VPN endpoint. Possible states include:
+ //
+ // * pending-associate - The Client VPN endpoint has been created but no
+ // target networks have been associated. The Client VPN endpoint cannot accept
+ // connections.
+ //
+ // * available - The Client VPN endpoint has been created and a target network
+ // has been associated. The Client VPN endpoint can accept connections.
+ //
+ // * deleting - The Client VPN endpoint is being deleted. The Client VPN
+ // endpoint cannot accept connections.
+ //
+ // * deleted - The Client VPN endpoint has been deleted. The Client VPN endpoint
+ // cannot accept connections.
+ Code *string `locationName:"code" type:"string" enum:"ClientVpnEndpointStatusCode"`
+
+ // A message about the status of the Client VPN endpoint.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnEndpointStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnEndpointStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientVpnEndpointStatus) SetCode(v string) *ClientVpnEndpointStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientVpnEndpointStatus) SetMessage(v string) *ClientVpnEndpointStatus {
+ s.Message = &v
+ return s
+}
+
+// Information about a Client VPN endpoint route.
+type ClientVpnRoute struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint with which the route is associated.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // A brief description of the route.
+ Description *string `locationName:"description" type:"string"`
+
+ // The IPv4 address range, in CIDR notation, of the route destination.
+ DestinationCidr *string `locationName:"destinationCidr" type:"string"`
+
+ // Indicates how the route was associated with the Client VPN endpoint. associate
+ // indicates that the route was automatically added when the target network
+ // was associated with the Client VPN endpoint. add-route indicates that the
+ // route was manually added using the CreateClientVpnRoute action.
+ Origin *string `locationName:"origin" type:"string"`
+
+ // The current state of the route.
+ Status *ClientVpnRouteStatus `locationName:"status" type:"structure"`
+
+ // The ID of the subnet through which traffic is routed.
+ TargetSubnet *string `locationName:"targetSubnet" type:"string"`
+
+ // The route type.
+ Type *string `locationName:"type" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnRoute) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnRoute) GoString() string {
+ return s.String()
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ClientVpnRoute) SetClientVpnEndpointId(v string) *ClientVpnRoute {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *ClientVpnRoute) SetDescription(v string) *ClientVpnRoute {
+ s.Description = &v
+ return s
+}
+
+// SetDestinationCidr sets the DestinationCidr field's value.
+func (s *ClientVpnRoute) SetDestinationCidr(v string) *ClientVpnRoute {
+ s.DestinationCidr = &v
+ return s
+}
+
+// SetOrigin sets the Origin field's value.
+func (s *ClientVpnRoute) SetOrigin(v string) *ClientVpnRoute {
+ s.Origin = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *ClientVpnRoute) SetStatus(v *ClientVpnRouteStatus) *ClientVpnRoute {
+ s.Status = v
+ return s
+}
+
+// SetTargetSubnet sets the TargetSubnet field's value.
+func (s *ClientVpnRoute) SetTargetSubnet(v string) *ClientVpnRoute {
+ s.TargetSubnet = &v
+ return s
+}
+
+// SetType sets the Type field's value.
+func (s *ClientVpnRoute) SetType(v string) *ClientVpnRoute {
+ s.Type = &v
+ return s
+}
+
+// Describes the state of a Client VPN endpoint route.
+type ClientVpnRouteStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the Client VPN endpoint route.
+ Code *string `locationName:"code" type:"string" enum:"ClientVpnRouteStatusCode"`
+
+ // A message about the status of the Client VPN endpoint route, if applicable.
+ Message *string `locationName:"message" type:"string"`
+}
+
+// String returns the string representation
+func (s ClientVpnRouteStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ClientVpnRouteStatus) GoString() string {
+ return s.String()
+}
+
+// SetCode sets the Code field's value.
+func (s *ClientVpnRouteStatus) SetCode(v string) *ClientVpnRouteStatus {
+ s.Code = &v
+ return s
+}
+
+// SetMessage sets the Message field's value.
+func (s *ClientVpnRouteStatus) SetMessage(v string) *ClientVpnRouteStatus {
+ s.Message = &v
+ return s
+}
+
type ConfirmProductInstanceInput struct {
_ struct{} `type:"structure"`
@@ -26623,7 +32840,6 @@ func (s *ConfirmProductInstanceInput) SetProductCode(v string) *ConfirmProductIn
return s
}
-// Contains the output of ConfirmProductInstance.
type ConfirmProductInstanceOutput struct {
_ struct{} `type:"structure"`
@@ -26658,6 +32874,95 @@ func (s *ConfirmProductInstanceOutput) SetReturn(v bool) *ConfirmProductInstance
return s
}
+// Describes the client connection logging options for the Client VPN endpoint.
+type ConnectionLogOptions struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the CloudWatch Logs log group.
+ CloudwatchLogGroup *string `type:"string"`
+
+ // The name of the CloudWatch Logs log stream to which the connection data is
+ // published.
+ CloudwatchLogStream *string `type:"string"`
+
+ // Indicates whether connection logging is enabled.
+ Enabled *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ConnectionLogOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ConnectionLogOptions) GoString() string {
+ return s.String()
+}
+
+// SetCloudwatchLogGroup sets the CloudwatchLogGroup field's value.
+func (s *ConnectionLogOptions) SetCloudwatchLogGroup(v string) *ConnectionLogOptions {
+ s.CloudwatchLogGroup = &v
+ return s
+}
+
+// SetCloudwatchLogStream sets the CloudwatchLogStream field's value.
+func (s *ConnectionLogOptions) SetCloudwatchLogStream(v string) *ConnectionLogOptions {
+ s.CloudwatchLogStream = &v
+ return s
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *ConnectionLogOptions) SetEnabled(v bool) *ConnectionLogOptions {
+ s.Enabled = &v
+ return s
+}
+
+// Information about the client connection logging options for a Client VPN
+// endpoint.
+type ConnectionLogResponseOptions struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the Amazon CloudWatch Logs log group to which connection logging
+ // data is published.
+ CloudwatchLogGroup *string `type:"string"`
+
+ // The name of the Amazon CloudWatch Logs log stream to which connection logging
+ // data is published.
+ CloudwatchLogStream *string `type:"string"`
+
+ // Indicates whether client connection logging is enabled for the Client VPN
+ // endpoint.
+ Enabled *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ConnectionLogResponseOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ConnectionLogResponseOptions) GoString() string {
+ return s.String()
+}
+
+// SetCloudwatchLogGroup sets the CloudwatchLogGroup field's value.
+func (s *ConnectionLogResponseOptions) SetCloudwatchLogGroup(v string) *ConnectionLogResponseOptions {
+ s.CloudwatchLogGroup = &v
+ return s
+}
+
+// SetCloudwatchLogStream sets the CloudwatchLogStream field's value.
+func (s *ConnectionLogResponseOptions) SetCloudwatchLogStream(v string) *ConnectionLogResponseOptions {
+ s.CloudwatchLogStream = &v
+ return s
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *ConnectionLogResponseOptions) SetEnabled(v bool) *ConnectionLogResponseOptions {
+ s.Enabled = &v
+ return s
+}
+
// Describes a connection notification for a VPC endpoint or VPC endpoint service.
type ConnectionNotification struct {
_ struct{} `type:"structure"`
@@ -26822,7 +33127,7 @@ type CopyFpgaImageInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// The description for the new AFI.
@@ -26938,7 +33243,7 @@ type CopyImageInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure idempotency of the
- // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide.
ClientToken *string `type:"string"`
@@ -26956,8 +33261,8 @@ type CopyImageInput struct {
// create an unencrypted copy of an encrypted snapshot. The default CMK for
// EBS is used unless you specify a non-default AWS Key Management Service (AWS
// KMS) CMK using KmsKeyId. For more information, see Amazon EBS Encryption
- // (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) in
- // the Amazon Elastic Compute Cloud User Guide.
+ // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
Encrypted *bool `locationName:"encrypted" type:"boolean"`
// An identifier for the AWS Key Management Service (AWS KMS) customer master
@@ -27134,7 +33439,7 @@ type CopySnapshotInput struct {
// a copy of an unencrypted snapshot, but you cannot use it to create an unencrypted
// copy of an encrypted snapshot. Your default CMK for EBS is used unless you
// specify a non-default AWS Key Management Service (AWS KMS) CMK using KmsKeyId.
- // For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+ // For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
// in the Amazon Elastic Compute Cloud User Guide.
Encrypted *bool `locationName:"encrypted" type:"boolean"`
@@ -27167,14 +33472,14 @@ type CopySnapshotInput struct {
// When you copy an encrypted source snapshot using the Amazon EC2 Query API,
// you must supply a pre-signed URL. This parameter is optional for unencrypted
- // snapshots. For more information, see Query Requests (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html).
+ // snapshots. For more information, see Query Requests (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html).
//
// The PresignedUrl should use the snapshot source endpoint, the CopySnapshot
// action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion
// parameters. The PresignedUrl must be signed using AWS Signature Version 4.
// Because EBS snapshots are stored in Amazon S3, the signing algorithm for
// this parameter uses the same logic that is described in Authenticating Requests
- // by Using Query Parameters (AWS Signature Version 4) (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
+ // by Using Query Parameters (AWS Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
// in the Amazon Simple Storage Service API Reference. An invalid or improperly
// signed PresignedUrl will cause the copy operation to fail asynchronously,
// and the snapshot will move to an error state.
@@ -27358,6 +33663,554 @@ func (s *CpuOptionsRequest) SetThreadsPerCore(v int64) *CpuOptionsRequest {
return s
}
+type CreateCapacityReservationInput struct {
+ _ struct{} `type:"structure"`
+
+ // The Availability Zone in which to create the Capacity Reservation.
+ //
+ // AvailabilityZone is a required field
+ AvailabilityZone *string `type:"string" required:"true"`
+
+ // Unique, case-sensitive identifier that you provide to ensure the idempotency
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ //
+ // Constraint: Maximum 64 ASCII characters.
+ ClientToken *string `type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // Indicates whether the Capacity Reservation supports EBS-optimized instances.
+ // This optimization provides dedicated throughput to Amazon EBS and an optimized
+ // configuration stack to provide optimal I/O performance. This optimization
+ // isn't available with all instance types. Additional usage charges apply when
+ // using an EBS- optimized instance.
+ EbsOptimized *bool `type:"boolean"`
+
+ // The date and time at which the Capacity Reservation expires. When a Capacity
+ // Reservation expires, the reserved capacity is released and you can no longer
+ // launch instances into it. The Capacity Reservation's state changes to expired
+ // when it reaches its end date and time.
+ //
+ // You must provide an EndDate value if EndDateType is limited. Omit EndDate
+ // if EndDateType is unlimited.
+ //
+ // If the EndDateType is limited, the Capacity Reservation is cancelled within
+ // an hour from the specified time. For example, if you specify 5/31/2019, 13:30:55,
+ // the Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55
+ // on 5/31/2019.
+ EndDate *time.Time `type:"timestamp"`
+
+ // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation
+ // can have one of the following end types:
+ //
+ // * unlimited - The Capacity Reservation remains active until you explicitly
+ // cancel it. Do not provide an EndDate if the EndDateType is unlimited.
+ //
+ // * limited - The Capacity Reservation expires automatically at a specified
+ // date and time. You must provide an EndDate value if the EndDateType value
+ // is limited.
+ EndDateType *string `type:"string" enum:"EndDateType"`
+
+ // Indicates whether the Capacity Reservation supports instances with temporary,
+ // block-level storage.
+ EphemeralStorage *bool `type:"boolean"`
+
+ // The number of instances for which to reserve capacity.
+ //
+ // InstanceCount is a required field
+ InstanceCount *int64 `type:"integer" required:"true"`
+
+ // Indicates the type of instance launches that the Capacity Reservation accepts.
+ // The options include:
+ //
+ // * open - The Capacity Reservation automatically matches all instances
+ // that have matching attributes (instance type, platform, and Availability
+ // Zone). Instances that have matching attributes run in the Capacity Reservation
+ // automatically without specifying any additional parameters.
+ //
+ // * targeted - The Capacity Reservation only accepts instances that have
+ // matching attributes (instance type, platform, and Availability Zone),
+ // and explicitly target the Capacity Reservation. This ensures that only
+ // permitted instances can use the reserved capacity.
+ //
+ // Default: open
+ InstanceMatchCriteria *string `type:"string" enum:"InstanceMatchCriteria"`
+
+ // The type of operating system for which to reserve capacity.
+ //
+ // InstancePlatform is a required field
+ InstancePlatform *string `type:"string" required:"true" enum:"CapacityReservationInstancePlatform"`
+
+ // The instance type for which to reserve capacity. For more information, see
+ // Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ //
+ // InstanceType is a required field
+ InstanceType *string `type:"string" required:"true"`
+
+ // The tags to apply to the Capacity Reservation during launch.
+ TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"`
+
+ // Indicates the tenancy of the Capacity Reservation. A Capacity Reservation
+ // can have one of the following tenancy settings:
+ //
+ // * default - The Capacity Reservation is created on hardware that is shared
+ // with other AWS accounts.
+ //
+ // * dedicated - The Capacity Reservation is created on single-tenant hardware
+ // that is dedicated to a single AWS account.
+ Tenancy *string `type:"string" enum:"CapacityReservationTenancy"`
+}
+
+// String returns the string representation
+func (s CreateCapacityReservationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateCapacityReservationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateCapacityReservationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateCapacityReservationInput"}
+ if s.AvailabilityZone == nil {
+ invalidParams.Add(request.NewErrParamRequired("AvailabilityZone"))
+ }
+ if s.InstanceCount == nil {
+ invalidParams.Add(request.NewErrParamRequired("InstanceCount"))
+ }
+ if s.InstancePlatform == nil {
+ invalidParams.Add(request.NewErrParamRequired("InstancePlatform"))
+ }
+ if s.InstanceType == nil {
+ invalidParams.Add(request.NewErrParamRequired("InstanceType"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAvailabilityZone sets the AvailabilityZone field's value.
+func (s *CreateCapacityReservationInput) SetAvailabilityZone(v string) *CreateCapacityReservationInput {
+ s.AvailabilityZone = &v
+ return s
+}
+
+// SetClientToken sets the ClientToken field's value.
+func (s *CreateCapacityReservationInput) SetClientToken(v string) *CreateCapacityReservationInput {
+ s.ClientToken = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateCapacityReservationInput) SetDryRun(v bool) *CreateCapacityReservationInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetEbsOptimized sets the EbsOptimized field's value.
+func (s *CreateCapacityReservationInput) SetEbsOptimized(v bool) *CreateCapacityReservationInput {
+ s.EbsOptimized = &v
+ return s
+}
+
+// SetEndDate sets the EndDate field's value.
+func (s *CreateCapacityReservationInput) SetEndDate(v time.Time) *CreateCapacityReservationInput {
+ s.EndDate = &v
+ return s
+}
+
+// SetEndDateType sets the EndDateType field's value.
+func (s *CreateCapacityReservationInput) SetEndDateType(v string) *CreateCapacityReservationInput {
+ s.EndDateType = &v
+ return s
+}
+
+// SetEphemeralStorage sets the EphemeralStorage field's value.
+func (s *CreateCapacityReservationInput) SetEphemeralStorage(v bool) *CreateCapacityReservationInput {
+ s.EphemeralStorage = &v
+ return s
+}
+
+// SetInstanceCount sets the InstanceCount field's value.
+func (s *CreateCapacityReservationInput) SetInstanceCount(v int64) *CreateCapacityReservationInput {
+ s.InstanceCount = &v
+ return s
+}
+
+// SetInstanceMatchCriteria sets the InstanceMatchCriteria field's value.
+func (s *CreateCapacityReservationInput) SetInstanceMatchCriteria(v string) *CreateCapacityReservationInput {
+ s.InstanceMatchCriteria = &v
+ return s
+}
+
+// SetInstancePlatform sets the InstancePlatform field's value.
+func (s *CreateCapacityReservationInput) SetInstancePlatform(v string) *CreateCapacityReservationInput {
+ s.InstancePlatform = &v
+ return s
+}
+
+// SetInstanceType sets the InstanceType field's value.
+func (s *CreateCapacityReservationInput) SetInstanceType(v string) *CreateCapacityReservationInput {
+ s.InstanceType = &v
+ return s
+}
+
+// SetTagSpecifications sets the TagSpecifications field's value.
+func (s *CreateCapacityReservationInput) SetTagSpecifications(v []*TagSpecification) *CreateCapacityReservationInput {
+ s.TagSpecifications = v
+ return s
+}
+
+// SetTenancy sets the Tenancy field's value.
+func (s *CreateCapacityReservationInput) SetTenancy(v string) *CreateCapacityReservationInput {
+ s.Tenancy = &v
+ return s
+}
+
+type CreateCapacityReservationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Capacity Reservation.
+ CapacityReservation *CapacityReservation `locationName:"capacityReservation" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateCapacityReservationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateCapacityReservationOutput) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservation sets the CapacityReservation field's value.
+func (s *CreateCapacityReservationOutput) SetCapacityReservation(v *CapacityReservation) *CreateCapacityReservationOutput {
+ s.CapacityReservation = v
+ return s
+}
+
+type CreateClientVpnEndpointInput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the authentication method to be used to authenticate clients.
+ //
+ // AuthenticationOptions is a required field
+ AuthenticationOptions []*ClientVpnAuthenticationRequest `locationName:"Authentication" type:"list" required:"true"`
+
+ // The IPv4 address range, in CIDR notation, from which to assign client IP
+ // addresses. The address range cannot overlap with the local CIDR of the VPC
+ // in which the associated subnet is located, or the routes that you add manually.
+ // The address range cannot be changed after the Client VPN endpoint has been
+ // created. The CIDR block should be /22 or greater.
+ //
+ // ClientCidrBlock is a required field
+ ClientCidrBlock *string `type:"string" required:"true"`
+
+ // Unique, case-sensitive identifier you provide to ensure the idempotency of
+ // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ ClientToken *string `type:"string" idempotencyToken:"true"`
+
+ // Information about the client connection logging options.
+ //
+ // If you enable client connection logging, data about client connections is
+ // sent to a Cloudwatch Logs log stream. The following information is logged:
+ //
+ // * Client connection requests
+ //
+ // * Client connection results (successful and unsuccessful)
+ //
+ // * Reasons for unsuccessful client connection requests
+ //
+ // * Client connection termination time
+ //
+ // ConnectionLogOptions is a required field
+ ConnectionLogOptions *ConnectionLogOptions `type:"structure" required:"true"`
+
+ // A brief description of the Client VPN endpoint.
+ Description *string `type:"string"`
+
+ // Information about the DNS servers to be used for DNS resolution. A Client
+ // VPN endpoint can have up to two DNS servers. If no DNS server is specified,
+ // the DNS address of the VPC that is to be associated with Client VPN endpoint
+ // is used as the DNS server.
+ DnsServers []*string `locationNameList:"item" type:"list"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ARN of the server certificate. For more information, see the AWS Certificate
+ // Manager User Guide (acm/latest/userguide/acm-overview.html) .
+ //
+ // ServerCertificateArn is a required field
+ ServerCertificateArn *string `type:"string" required:"true"`
+
+ // The transport protocol to be used by the VPN session.
+ //
+ // Default value: udp
+ TransportProtocol *string `type:"string" enum:"TransportProtocol"`
+}
+
+// String returns the string representation
+func (s CreateClientVpnEndpointInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateClientVpnEndpointInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateClientVpnEndpointInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateClientVpnEndpointInput"}
+ if s.AuthenticationOptions == nil {
+ invalidParams.Add(request.NewErrParamRequired("AuthenticationOptions"))
+ }
+ if s.ClientCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientCidrBlock"))
+ }
+ if s.ConnectionLogOptions == nil {
+ invalidParams.Add(request.NewErrParamRequired("ConnectionLogOptions"))
+ }
+ if s.ServerCertificateArn == nil {
+ invalidParams.Add(request.NewErrParamRequired("ServerCertificateArn"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAuthenticationOptions sets the AuthenticationOptions field's value.
+func (s *CreateClientVpnEndpointInput) SetAuthenticationOptions(v []*ClientVpnAuthenticationRequest) *CreateClientVpnEndpointInput {
+ s.AuthenticationOptions = v
+ return s
+}
+
+// SetClientCidrBlock sets the ClientCidrBlock field's value.
+func (s *CreateClientVpnEndpointInput) SetClientCidrBlock(v string) *CreateClientVpnEndpointInput {
+ s.ClientCidrBlock = &v
+ return s
+}
+
+// SetClientToken sets the ClientToken field's value.
+func (s *CreateClientVpnEndpointInput) SetClientToken(v string) *CreateClientVpnEndpointInput {
+ s.ClientToken = &v
+ return s
+}
+
+// SetConnectionLogOptions sets the ConnectionLogOptions field's value.
+func (s *CreateClientVpnEndpointInput) SetConnectionLogOptions(v *ConnectionLogOptions) *CreateClientVpnEndpointInput {
+ s.ConnectionLogOptions = v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *CreateClientVpnEndpointInput) SetDescription(v string) *CreateClientVpnEndpointInput {
+ s.Description = &v
+ return s
+}
+
+// SetDnsServers sets the DnsServers field's value.
+func (s *CreateClientVpnEndpointInput) SetDnsServers(v []*string) *CreateClientVpnEndpointInput {
+ s.DnsServers = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateClientVpnEndpointInput) SetDryRun(v bool) *CreateClientVpnEndpointInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetServerCertificateArn sets the ServerCertificateArn field's value.
+func (s *CreateClientVpnEndpointInput) SetServerCertificateArn(v string) *CreateClientVpnEndpointInput {
+ s.ServerCertificateArn = &v
+ return s
+}
+
+// SetTransportProtocol sets the TransportProtocol field's value.
+func (s *CreateClientVpnEndpointInput) SetTransportProtocol(v string) *CreateClientVpnEndpointInput {
+ s.TransportProtocol = &v
+ return s
+}
+
+type CreateClientVpnEndpointOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // The DNS name to be used by clients when establishing their VPN session.
+ DnsName *string `locationName:"dnsName" type:"string"`
+
+ // The current state of the Client VPN endpoint.
+ Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateClientVpnEndpointOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateClientVpnEndpointOutput) GoString() string {
+ return s.String()
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *CreateClientVpnEndpointOutput) SetClientVpnEndpointId(v string) *CreateClientVpnEndpointOutput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDnsName sets the DnsName field's value.
+func (s *CreateClientVpnEndpointOutput) SetDnsName(v string) *CreateClientVpnEndpointOutput {
+ s.DnsName = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *CreateClientVpnEndpointOutput) SetStatus(v *ClientVpnEndpointStatus) *CreateClientVpnEndpointOutput {
+ s.Status = v
+ return s
+}
+
+type CreateClientVpnRouteInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint to which to add the route.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // A brief description of the route.
+ Description *string `type:"string"`
+
+ // The IPv4 address range, in CIDR notation, of the route destination. For example:
+ //
+ // * To add a route for Internet access, enter 0.0.0.0/0
+ //
+ // * To add a route for a peered VPC, enter the peered VPC's IPv4 CIDR range
+ //
+ // * To add a route for an on-premises network, enter the AWS Site-to-Site
+ // VPN connection's IPv4 CIDR range
+ //
+ // Route address ranges cannot overlap with the CIDR range specified for client
+ // allocation.
+ //
+ // DestinationCidrBlock is a required field
+ DestinationCidrBlock *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the subnet through which you want to route traffic. The specified
+ // subnet must be an existing target network of the Client VPN endpoint.
+ //
+ // TargetVpcSubnetId is a required field
+ TargetVpcSubnetId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CreateClientVpnRouteInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateClientVpnRouteInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateClientVpnRouteInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateClientVpnRouteInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.DestinationCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock"))
+ }
+ if s.TargetVpcSubnetId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TargetVpcSubnetId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *CreateClientVpnRouteInput) SetClientVpnEndpointId(v string) *CreateClientVpnRouteInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *CreateClientVpnRouteInput) SetDescription(v string) *CreateClientVpnRouteInput {
+ s.Description = &v
+ return s
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *CreateClientVpnRouteInput) SetDestinationCidrBlock(v string) *CreateClientVpnRouteInput {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateClientVpnRouteInput) SetDryRun(v bool) *CreateClientVpnRouteInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTargetVpcSubnetId sets the TargetVpcSubnetId field's value.
+func (s *CreateClientVpnRouteInput) SetTargetVpcSubnetId(v string) *CreateClientVpnRouteInput {
+ s.TargetVpcSubnetId = &v
+ return s
+}
+
+type CreateClientVpnRouteOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The current state of the route.
+ Status *ClientVpnRouteStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateClientVpnRouteOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateClientVpnRouteOutput) GoString() string {
+ return s.String()
+}
+
+// SetStatus sets the Status field's value.
+func (s *CreateClientVpnRouteOutput) SetStatus(v *ClientVpnRouteStatus) *CreateClientVpnRouteOutput {
+ s.Status = v
+ return s
+}
+
// Contains the parameters for CreateCustomerGateway.
type CreateCustomerGatewayInput struct {
_ struct{} `type:"structure"`
@@ -27663,7 +34516,7 @@ type CreateEgressOnlyInternetGatewayInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -27752,11 +34605,67 @@ func (s *CreateEgressOnlyInternetGatewayOutput) SetEgressOnlyInternetGateway(v *
return s
}
+// Describes the instances that could not be launched by the fleet.
+type CreateFleetError struct {
+ _ struct{} `type:"structure"`
+
+ // The error code that indicates why the instance could not be launched. For
+ // more information about error codes, see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html).
+ ErrorCode *string `locationName:"errorCode" type:"string"`
+
+ // The error message that describes why the instance could not be launched.
+ // For more information about error messages, see ee Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html).
+ ErrorMessage *string `locationName:"errorMessage" type:"string"`
+
+ // The launch templates and overrides that were used for launching the instances.
+ // Any parameters that you specify in the Overrides override the same parameters
+ // in the launch template.
+ LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"`
+
+ // Indicates if the instance that could not be launched was a Spot Instance
+ // or On-Demand Instance.
+ Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"`
+}
+
+// String returns the string representation
+func (s CreateFleetError) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateFleetError) GoString() string {
+ return s.String()
+}
+
+// SetErrorCode sets the ErrorCode field's value.
+func (s *CreateFleetError) SetErrorCode(v string) *CreateFleetError {
+ s.ErrorCode = &v
+ return s
+}
+
+// SetErrorMessage sets the ErrorMessage field's value.
+func (s *CreateFleetError) SetErrorMessage(v string) *CreateFleetError {
+ s.ErrorMessage = &v
+ return s
+}
+
+// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value.
+func (s *CreateFleetError) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *CreateFleetError {
+ s.LaunchTemplateAndOverrides = v
+ return s
+}
+
+// SetLifecycle sets the Lifecycle field's value.
+func (s *CreateFleetError) SetLifecycle(v string) *CreateFleetError {
+ s.Lifecycle = &v
+ return s
+}
+
type CreateFleetInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -27786,8 +34695,8 @@ type CreateFleetInput struct {
// The key-value pair for tagging the EC2 Fleet request on creation. The value
// for ResourceType must be fleet, otherwise the fleet request fails. To tag
- // instances at launch, specify the tags in the launch template (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template).
- // For information about tagging after launch, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources).
+ // instances at launch, specify the tags in the launch template (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template).
+ // For information about tagging after launch, see Tagging Your Resources (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources).
TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
// The TotalTargetCapacity, OnDemandTargetCapacity, SpotTargetCapacity, and
@@ -27800,14 +34709,14 @@ type CreateFleetInput struct {
// expires.
TerminateInstancesWithExpiration *bool `type:"boolean"`
- // The type of request. Indicates whether the EC2 Fleet only requests the target
- // capacity, or also attempts to maintain it. If you request a certain target
- // capacity, EC2 Fleet only places the required requests. It does not attempt
- // to replenish instances if capacity is diminished, and does not submit requests
- // in alternative capacity pools if capacity is unavailable. To maintain a certain
- // target capacity, EC2 Fleet places the required requests to meet this target
- // capacity. It also automatically replenishes any interrupted Spot Instances.
- // Default: maintain.
+ // The type of the request. By default, the EC2 Fleet places an asynchronous
+ // request for your desired capacity, and maintains it by replenishing interrupted
+ // Spot Instances (maintain). A value of instant places a synchronous one-time
+ // request, and returns errors for any instances that could not be launched.
+ // A value of request places an asynchronous one-time request without maintaining
+ // capacity or submitting requests in alternative capacity pools if capacity
+ // is unavailable. For more information, see EC2 Fleet Request Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-request-type)
+ // in the Amazon Elastic Compute Cloud User Guide.
Type *string `type:"string" enum:"FleetType"`
// The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
@@ -27939,11 +34848,82 @@ func (s *CreateFleetInput) SetValidUntil(v time.Time) *CreateFleetInput {
return s
}
+// Describes the instances that were launched by the fleet.
+type CreateFleetInstance struct {
+ _ struct{} `type:"structure"`
+
+ // The IDs of the instances.
+ InstanceIds []*string `locationName:"instanceIds" locationNameList:"item" type:"list"`
+
+ // The instance type.
+ InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
+
+ // The launch templates and overrides that were used for launching the instances.
+ // Any parameters that you specify in the Overrides override the same parameters
+ // in the launch template.
+ LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"`
+
+ // Indicates if the instance that was launched is a Spot Instance or On-Demand
+ // Instance.
+ Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"`
+
+ // The value is Windows for Windows instances; otherwise blank.
+ Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"`
+}
+
+// String returns the string representation
+func (s CreateFleetInstance) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateFleetInstance) GoString() string {
+ return s.String()
+}
+
+// SetInstanceIds sets the InstanceIds field's value.
+func (s *CreateFleetInstance) SetInstanceIds(v []*string) *CreateFleetInstance {
+ s.InstanceIds = v
+ return s
+}
+
+// SetInstanceType sets the InstanceType field's value.
+func (s *CreateFleetInstance) SetInstanceType(v string) *CreateFleetInstance {
+ s.InstanceType = &v
+ return s
+}
+
+// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value.
+func (s *CreateFleetInstance) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *CreateFleetInstance {
+ s.LaunchTemplateAndOverrides = v
+ return s
+}
+
+// SetLifecycle sets the Lifecycle field's value.
+func (s *CreateFleetInstance) SetLifecycle(v string) *CreateFleetInstance {
+ s.Lifecycle = &v
+ return s
+}
+
+// SetPlatform sets the Platform field's value.
+func (s *CreateFleetInstance) SetPlatform(v string) *CreateFleetInstance {
+ s.Platform = &v
+ return s
+}
+
type CreateFleetOutput struct {
_ struct{} `type:"structure"`
+ // Information about the instances that could not be launched by the fleet.
+ // Valid only when Type is set to instant.
+ Errors []*CreateFleetError `locationName:"errorSet" locationNameList:"item" type:"list"`
+
// The ID of the EC2 Fleet.
FleetId *string `locationName:"fleetId" type:"string"`
+
+ // Information about the instances that were launched by the fleet. Valid only
+ // when Type is set to instant.
+ Instances []*CreateFleetInstance `locationName:"fleetInstanceSet" locationNameList:"item" type:"list"`
}
// String returns the string representation
@@ -27956,17 +34936,29 @@ func (s CreateFleetOutput) GoString() string {
return s.String()
}
+// SetErrors sets the Errors field's value.
+func (s *CreateFleetOutput) SetErrors(v []*CreateFleetError) *CreateFleetOutput {
+ s.Errors = v
+ return s
+}
+
// SetFleetId sets the FleetId field's value.
func (s *CreateFleetOutput) SetFleetId(v string) *CreateFleetOutput {
s.FleetId = &v
return s
}
+// SetInstances sets the Instances field's value.
+func (s *CreateFleetOutput) SetInstances(v []*CreateFleetInstance) *CreateFleetOutput {
+ s.Instances = v
+ return s
+}
+
type CreateFlowLogsInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// The ARN for the IAM role that's used to post flow logs to a log group.
@@ -27990,7 +34982,8 @@ type CreateFlowLogsInput struct {
// can also specify a subfolder in the bucket. To specify a subfolder in the
// bucket, use the following ARN format: bucket_ARN/subfolder_name/. For example,
// to specify a subfolder named my-logs in a bucket named my-bucket, use the
- // following ARN: arn:aws:s3:::my-bucket/my-logs/.
+ // following ARN: arn:aws:s3:::my-bucket/my-logs/. You cannot use AWSLogs as
+ // a subfolder name. This is a reserved term.
LogDestination *string `type:"string"`
// Specifies the type of destination to which the flow log data is to be published.
@@ -28151,7 +35144,7 @@ type CreateFpgaImageInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// A description for the AFI.
@@ -28271,7 +35264,9 @@ func (s *CreateFpgaImageOutput) SetFpgaImageId(v string) *CreateFpgaImageOutput
type CreateImageInput struct {
_ struct{} `type:"structure"`
- // Information about one or more block device mappings.
+ // Information about one or more block device mappings. This parameter cannot
+ // be used to modify the encryption status of existing volumes or snapshots.
+ // To create an AMI with encrypted snapshots, use the CopyImage action.
BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
// A description for the new image.
@@ -28628,7 +35623,7 @@ type CreateLaunchTemplateInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -28742,7 +35737,7 @@ type CreateLaunchTemplateVersionInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -28880,7 +35875,7 @@ type CreateNatGatewayInput struct {
AllocationId *string `type:"string" required:"true"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
//
// Constraint: Maximum 64 ASCII characters.
ClientToken *string `type:"string"`
@@ -28986,8 +35981,8 @@ type CreateNetworkAclEntryInput struct {
// Egress is a required field
Egress *bool `locationName:"egress" type:"boolean" required:"true"`
- // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying the
- // ICMP protocol, or protocol 58 (ICMPv6) with an IPv6 CIDR block.
+ // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying protocol
+ // 1 (ICMP) or protocol 58 (ICMPv6) with an IPv6 CIDR block.
IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"`
// The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64).
@@ -28998,16 +35993,17 @@ type CreateNetworkAclEntryInput struct {
// NetworkAclId is a required field
NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
- // TCP or UDP protocols: The range of ports the rule applies to.
+ // TCP or UDP protocols: The range of ports the rule applies to. Required if
+ // specifying protocol 6 (TCP) or 17 (UDP).
PortRange *PortRange `locationName:"portRange" type:"structure"`
- // The protocol. A value of -1 or all means all protocols. If you specify all,
- // -1, or a protocol number other than 6 (tcp), 17 (udp), or 1 (icmp), traffic
- // on all ports is allowed, regardless of any ports or ICMP types or codes that
- // you specify. If you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR
- // block, traffic for all ICMP types and codes allowed, regardless of any that
- // you specify. If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR
- // block, you must specify an ICMP type and code.
+ // The protocol number. A value of "-1" means all protocols. If you specify
+ // "-1" or a protocol number other than "6" (TCP), "17" (UDP), or "1" (ICMP),
+ // traffic on all ports is allowed, regardless of any ports or ICMP types or
+ // codes that you specify. If you specify protocol "58" (ICMPv6) and specify
+ // an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless
+ // of any that you specify. If you specify protocol "58" (ICMPv6) and specify
+ // an IPv6 CIDR block, you must specify an ICMP type and code.
//
// Protocol is a required field
Protocol *string `locationName:"protocol" type:"string" required:"true"`
@@ -29253,7 +36249,7 @@ type CreateNetworkInterfaceInput struct {
//
// The number of IP addresses you can assign to a network interface varies by
// instance type. For more information, see IP Addresses Per ENI Per Instance
- // Type (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)
+ // Type (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)
// in the Amazon Virtual Private Cloud User Guide.
SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"`
@@ -29471,7 +36467,6 @@ func (s *CreateNetworkInterfacePermissionOutput) SetInterfacePermission(v *Netwo
return s
}
-// Contains the parameters for CreatePlacementGroup.
type CreatePlacementGroupInput struct {
_ struct{} `type:"structure"`
@@ -29482,17 +36477,16 @@ type CreatePlacementGroupInput struct {
DryRun *bool `locationName:"dryRun" type:"boolean"`
// A name for the placement group. Must be unique within the scope of your account
- // for the region.
+ // for the Region.
//
// Constraints: Up to 255 ASCII characters
- //
- // GroupName is a required field
- GroupName *string `locationName:"groupName" type:"string" required:"true"`
+ GroupName *string `locationName:"groupName" type:"string"`
+
+ // The number of partitions. Valid only when Strategy is set to partition.
+ PartitionCount *int64 `type:"integer"`
// The placement strategy.
- //
- // Strategy is a required field
- Strategy *string `locationName:"strategy" type:"string" required:"true" enum:"PlacementStrategy"`
+ Strategy *string `locationName:"strategy" type:"string" enum:"PlacementStrategy"`
}
// String returns the string representation
@@ -29505,22 +36499,6 @@ func (s CreatePlacementGroupInput) GoString() string {
return s.String()
}
-// Validate inspects the fields of the type to determine if they are valid.
-func (s *CreatePlacementGroupInput) Validate() error {
- invalidParams := request.ErrInvalidParams{Context: "CreatePlacementGroupInput"}
- if s.GroupName == nil {
- invalidParams.Add(request.NewErrParamRequired("GroupName"))
- }
- if s.Strategy == nil {
- invalidParams.Add(request.NewErrParamRequired("Strategy"))
- }
-
- if invalidParams.Len() > 0 {
- return invalidParams
- }
- return nil
-}
-
// SetDryRun sets the DryRun field's value.
func (s *CreatePlacementGroupInput) SetDryRun(v bool) *CreatePlacementGroupInput {
s.DryRun = &v
@@ -29533,6 +36511,12 @@ func (s *CreatePlacementGroupInput) SetGroupName(v string) *CreatePlacementGroup
return s
}
+// SetPartitionCount sets the PartitionCount field's value.
+func (s *CreatePlacementGroupInput) SetPartitionCount(v int64) *CreatePlacementGroupInput {
+ s.PartitionCount = &v
+ return s
+}
+
// SetStrategy sets the Strategy field's value.
func (s *CreatePlacementGroupInput) SetStrategy(v string) *CreatePlacementGroupInput {
s.Strategy = &v
@@ -29559,7 +36543,7 @@ type CreateReservedInstancesListingInput struct {
// Unique, case-sensitive identifier you provide to ensure idempotency of your
// listings. This helps avoid duplicate listings. For more information, see
- // Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
//
// ClientToken is a required field
ClientToken *string `locationName:"clientToken" type:"string" required:"true"`
@@ -29703,6 +36687,9 @@ type CreateRouteInput struct {
// RouteTableId is a required field
RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
+ // The ID of a transit gateway.
+ TransitGatewayId *string `type:"string"`
+
// The ID of a VPC peering connection.
VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
}
@@ -29784,6 +36771,12 @@ func (s *CreateRouteInput) SetRouteTableId(v string) *CreateRouteInput {
return s
}
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *CreateRouteInput) SetTransitGatewayId(v string) *CreateRouteInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *CreateRouteInput) SetVpcPeeringConnectionId(v string) *CreateRouteInput {
s.VpcPeeringConnectionId = &v
@@ -30156,6 +37149,9 @@ type CreateSubnetInput struct {
// VPC, we may not necessarily select a different zone for each subnet.
AvailabilityZone *string `type:"string"`
+ // The AZ ID of the subnet.
+ AvailabilityZoneId *string `type:"string"`
+
// The IPv4 network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.
//
// CidrBlock is a required field
@@ -30209,6 +37205,12 @@ func (s *CreateSubnetInput) SetAvailabilityZone(v string) *CreateSubnetInput {
return s
}
+// SetAvailabilityZoneId sets the AvailabilityZoneId field's value.
+func (s *CreateSubnetInput) SetAvailabilityZoneId(v string) *CreateSubnetInput {
+ s.AvailabilityZoneId = &v
+ return s
+}
+
// SetCidrBlock sets the CidrBlock field's value.
func (s *CreateSubnetInput) SetCidrBlock(v string) *CreateSubnetInput {
s.CidrBlock = &v
@@ -30265,7 +37267,10 @@ type CreateTagsInput struct {
// it is UnauthorizedOperation.
DryRun *bool `locationName:"dryRun" type:"boolean"`
- // The IDs of one or more resources to tag. For example, ami-1a2b3c4d.
+ // The IDs of one or more resources, separated by spaces.
+ //
+ // Constraints: Up to 1000 resource IDs. We recommend breaking up this request
+ // into smaller batches.
//
// Resources is a required field
Resources []*string `locationName:"ResourceId" type:"list" required:"true"`
@@ -30336,6 +37341,425 @@ func (s CreateTagsOutput) GoString() string {
return s.String()
}
+type CreateTransitGatewayInput struct {
+ _ struct{} `type:"structure"`
+
+ // A description of the transit gateway.
+ Description *string `type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The transit gateway options.
+ Options *TransitGatewayRequestOptions `type:"structure"`
+
+ // The tags to apply to the transit gateway.
+ TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayInput) GoString() string {
+ return s.String()
+}
+
+// SetDescription sets the Description field's value.
+func (s *CreateTransitGatewayInput) SetDescription(v string) *CreateTransitGatewayInput {
+ s.Description = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateTransitGatewayInput) SetDryRun(v bool) *CreateTransitGatewayInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetOptions sets the Options field's value.
+func (s *CreateTransitGatewayInput) SetOptions(v *TransitGatewayRequestOptions) *CreateTransitGatewayInput {
+ s.Options = v
+ return s
+}
+
+// SetTagSpecifications sets the TagSpecifications field's value.
+func (s *CreateTransitGatewayInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayInput {
+ s.TagSpecifications = v
+ return s
+}
+
+type CreateTransitGatewayOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the transit gateway.
+ TransitGateway *TransitGateway `locationName:"transitGateway" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGateway sets the TransitGateway field's value.
+func (s *CreateTransitGatewayOutput) SetTransitGateway(v *TransitGateway) *CreateTransitGatewayOutput {
+ s.TransitGateway = v
+ return s
+}
+
+type CreateTransitGatewayRouteInput struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether traffic matching this route is to be dropped.
+ Blackhole *bool `type:"boolean"`
+
+ // The CIDR range used for destination matches. Routing decisions are based
+ // on the most specific match.
+ //
+ // DestinationCidrBlock is a required field
+ DestinationCidrBlock *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `type:"string"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayRouteInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayRouteInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateTransitGatewayRouteInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayRouteInput"}
+ if s.DestinationCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBlackhole sets the Blackhole field's value.
+func (s *CreateTransitGatewayRouteInput) SetBlackhole(v bool) *CreateTransitGatewayRouteInput {
+ s.Blackhole = &v
+ return s
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *CreateTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *CreateTransitGatewayRouteInput {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateTransitGatewayRouteInput) SetDryRun(v bool) *CreateTransitGatewayRouteInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *CreateTransitGatewayRouteInput) SetTransitGatewayAttachmentId(v string) *CreateTransitGatewayRouteInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *CreateTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *CreateTransitGatewayRouteInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type CreateTransitGatewayRouteOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the route.
+ Route *TransitGatewayRoute `locationName:"route" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayRouteOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayRouteOutput) GoString() string {
+ return s.String()
+}
+
+// SetRoute sets the Route field's value.
+func (s *CreateTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *CreateTransitGatewayRouteOutput {
+ s.Route = v
+ return s
+}
+
+type CreateTransitGatewayRouteTableInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The tags to apply to the transit gateway route table.
+ TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"`
+
+ // The ID of the transit gateway.
+ //
+ // TransitGatewayId is a required field
+ TransitGatewayId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayRouteTableInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayRouteTableInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateTransitGatewayRouteTableInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayRouteTableInput"}
+ if s.TransitGatewayId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateTransitGatewayRouteTableInput) SetDryRun(v bool) *CreateTransitGatewayRouteTableInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTagSpecifications sets the TagSpecifications field's value.
+func (s *CreateTransitGatewayRouteTableInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayRouteTableInput {
+ s.TagSpecifications = v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *CreateTransitGatewayRouteTableInput) SetTransitGatewayId(v string) *CreateTransitGatewayRouteTableInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
+type CreateTransitGatewayRouteTableOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the transit gateway route table.
+ TransitGatewayRouteTable *TransitGatewayRouteTable `locationName:"transitGatewayRouteTable" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayRouteTableOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayRouteTableOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayRouteTable sets the TransitGatewayRouteTable field's value.
+func (s *CreateTransitGatewayRouteTableOutput) SetTransitGatewayRouteTable(v *TransitGatewayRouteTable) *CreateTransitGatewayRouteTableOutput {
+ s.TransitGatewayRouteTable = v
+ return s
+}
+
+type CreateTransitGatewayVpcAttachmentInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The VPC attachment options.
+ Options *CreateTransitGatewayVpcAttachmentRequestOptions `type:"structure"`
+
+ // The IDs of one or more subnets. You can specify only one subnet per Availability
+ // Zone. You must specify at least one subnet, but we recommend that you specify
+ // two subnets for better availability. The transit gateway uses one IP address
+ // from each specified subnet.
+ //
+ // SubnetIds is a required field
+ SubnetIds []*string `locationNameList:"item" type:"list" required:"true"`
+
+ // The tags to apply to the VPC attachment.
+ TagSpecifications []*TagSpecification `locationNameList:"item" type:"list"`
+
+ // The ID of the transit gateway.
+ //
+ // TransitGatewayId is a required field
+ TransitGatewayId *string `type:"string" required:"true"`
+
+ // The ID of the VPC.
+ //
+ // VpcId is a required field
+ VpcId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayVpcAttachmentInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayVpcAttachmentInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateTransitGatewayVpcAttachmentInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayVpcAttachmentInput"}
+ if s.SubnetIds == nil {
+ invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
+ }
+ if s.TransitGatewayId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayId"))
+ }
+ if s.VpcId == nil {
+ invalidParams.Add(request.NewErrParamRequired("VpcId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *CreateTransitGatewayVpcAttachmentInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetOptions sets the Options field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetOptions(v *CreateTransitGatewayVpcAttachmentRequestOptions) *CreateTransitGatewayVpcAttachmentInput {
+ s.Options = v
+ return s
+}
+
+// SetSubnetIds sets the SubnetIds field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetSubnetIds(v []*string) *CreateTransitGatewayVpcAttachmentInput {
+ s.SubnetIds = v
+ return s
+}
+
+// SetTagSpecifications sets the TagSpecifications field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayVpcAttachmentInput {
+ s.TagSpecifications = v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetTransitGatewayId(v string) *CreateTransitGatewayVpcAttachmentInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
+// SetVpcId sets the VpcId field's value.
+func (s *CreateTransitGatewayVpcAttachmentInput) SetVpcId(v string) *CreateTransitGatewayVpcAttachmentInput {
+ s.VpcId = &v
+ return s
+}
+
+type CreateTransitGatewayVpcAttachmentOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the VPC attachment.
+ TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayVpcAttachmentOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayVpcAttachmentOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value.
+func (s *CreateTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *CreateTransitGatewayVpcAttachmentOutput {
+ s.TransitGatewayVpcAttachment = v
+ return s
+}
+
+// Describes the options for a VPC attachment.
+type CreateTransitGatewayVpcAttachmentRequestOptions struct {
+ _ struct{} `type:"structure"`
+
+ // Enable or disable DNS support. The default is enable.
+ DnsSupport *string `type:"string" enum:"DnsSupportValue"`
+
+ // Enable or disable IPv6 support. The default is enable.
+ Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"`
+}
+
+// String returns the string representation
+func (s CreateTransitGatewayVpcAttachmentRequestOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CreateTransitGatewayVpcAttachmentRequestOptions) GoString() string {
+ return s.String()
+}
+
+// SetDnsSupport sets the DnsSupport field's value.
+func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *CreateTransitGatewayVpcAttachmentRequestOptions {
+ s.DnsSupport = &v
+ return s
+}
+
+// SetIpv6Support sets the Ipv6Support field's value.
+func (s *CreateTransitGatewayVpcAttachmentRequestOptions) SetIpv6Support(v string) *CreateTransitGatewayVpcAttachmentRequestOptions {
+ s.Ipv6Support = &v
+ return s
+}
+
// Contains the parameters for CreateVolume.
type CreateVolumeInput struct {
_ struct{} `type:"structure"`
@@ -30357,13 +37781,16 @@ type CreateVolumeInput struct {
// that are created from encrypted snapshots are automatically encrypted. There
// is no way to create an encrypted volume from an unencrypted snapshot or vice
// versa. If your AMI uses encrypted volumes, you can only launch it on supported
- // instance types. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+ // instance types. For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
// in the Amazon Elastic Compute Cloud User Guide.
Encrypted *bool `locationName:"encrypted" type:"boolean"`
// The number of I/O operations per second (IOPS) to provision for the volume,
- // with a maximum ratio of 50 IOPS/GiB. Range is 100 to 32000 IOPS for volumes
- // in most regions. For exceptions, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // with a maximum ratio of 50 IOPS/GiB. Range is 100 to 64,000 IOPS for volumes
+ // in most regions. Maximum IOPS of 64,000 is guaranteed only on Nitro-based
+ // instances (AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances).
+ // Other instance families guarantee performance up to 32,000 IOPS. For more
+ // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// This parameter is valid only for Provisioned IOPS SSD (io1) volumes.
@@ -30398,15 +37825,19 @@ type CreateVolumeInput struct {
// The size of the volume, in GiBs.
//
- // Constraints: 1-16384 for gp2, 4-16384 for io1, 500-16384 for st1, 500-16384
- // for sc1, and 1-1024 for standard. If you specify a snapshot, the volume size
- // must be equal to or larger than the snapshot size.
+ // Constraints: 1-16,384 for gp2, 4-16,384 for io1, 500-16,384 for st1, 500-16,384
+ // for sc1, and 1-1,024 for standard. If you specify a snapshot, the volume
+ // size must be equal to or larger than the snapshot size.
//
// Default: If you're creating the volume from a snapshot and don't specify
// a volume size, the default is the snapshot size.
+ //
+ // At least one of Size or SnapshotId are required.
Size *int64 `type:"integer"`
// The snapshot from which to create the volume.
+ //
+ // At least one of Size or SnapshotId are required.
SnapshotId *string `type:"string"`
// The tags to apply to the volume during creation.
@@ -30575,7 +38006,7 @@ type CreateVpcEndpointConnectionNotificationInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// One or more endpoint events for which to receive notifications. Valid values
@@ -30702,7 +38133,7 @@ type CreateVpcEndpointInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -30888,7 +38319,7 @@ type CreateVpcEndpointServiceConfigurationInput struct {
AcceptanceRequired *bool `type:"boolean"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
+ // the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -31195,15 +38626,18 @@ type CreateVpnConnectionInput struct {
// The options for the VPN connection.
Options *VpnConnectionOptionsSpecification `locationName:"options" type:"structure"`
+ // The ID of the transit gateway. If you specify a transit gateway, you cannot
+ // specify a virtual private gateway.
+ TransitGatewayId *string `type:"string"`
+
// The type of VPN connection (ipsec.1).
//
// Type is a required field
Type *string `type:"string" required:"true"`
- // The ID of the virtual private gateway.
- //
- // VpnGatewayId is a required field
- VpnGatewayId *string `type:"string" required:"true"`
+ // The ID of the virtual private gateway. If you specify a virtual private gateway,
+ // you cannot specify a transit gateway.
+ VpnGatewayId *string `type:"string"`
}
// String returns the string representation
@@ -31225,9 +38659,6 @@ func (s *CreateVpnConnectionInput) Validate() error {
if s.Type == nil {
invalidParams.Add(request.NewErrParamRequired("Type"))
}
- if s.VpnGatewayId == nil {
- invalidParams.Add(request.NewErrParamRequired("VpnGatewayId"))
- }
if invalidParams.Len() > 0 {
return invalidParams
@@ -31253,6 +38684,12 @@ func (s *CreateVpnConnectionInput) SetOptions(v *VpnConnectionOptionsSpecificati
return s
}
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *CreateVpnConnectionInput) SetTransitGatewayId(v string) *CreateVpnConnectionInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
// SetType sets the Type field's value.
func (s *CreateVpnConnectionInput) SetType(v string) *CreateVpnConnectionInput {
s.Type = &v
@@ -31589,6 +39026,175 @@ func (s *CustomerGateway) SetType(v string) *CustomerGateway {
return s
}
+type DeleteClientVpnEndpointInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN to be deleted.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s DeleteClientVpnEndpointInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteClientVpnEndpointInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteClientVpnEndpointInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteClientVpnEndpointInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DeleteClientVpnEndpointInput) SetClientVpnEndpointId(v string) *DeleteClientVpnEndpointInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteClientVpnEndpointInput) SetDryRun(v bool) *DeleteClientVpnEndpointInput {
+ s.DryRun = &v
+ return s
+}
+
+type DeleteClientVpnEndpointOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The current state of the Client VPN endpoint.
+ Status *ClientVpnEndpointStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteClientVpnEndpointOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteClientVpnEndpointOutput) GoString() string {
+ return s.String()
+}
+
+// SetStatus sets the Status field's value.
+func (s *DeleteClientVpnEndpointOutput) SetStatus(v *ClientVpnEndpointStatus) *DeleteClientVpnEndpointOutput {
+ s.Status = v
+ return s
+}
+
+type DeleteClientVpnRouteInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint from which the route is to be deleted.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // The IPv4 address range, in CIDR notation, of the route to be deleted.
+ //
+ // DestinationCidrBlock is a required field
+ DestinationCidrBlock *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the target subnet used by the route.
+ TargetVpcSubnetId *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DeleteClientVpnRouteInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteClientVpnRouteInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteClientVpnRouteInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteClientVpnRouteInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.DestinationCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DeleteClientVpnRouteInput) SetClientVpnEndpointId(v string) *DeleteClientVpnRouteInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *DeleteClientVpnRouteInput) SetDestinationCidrBlock(v string) *DeleteClientVpnRouteInput {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteClientVpnRouteInput) SetDryRun(v bool) *DeleteClientVpnRouteInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTargetVpcSubnetId sets the TargetVpcSubnetId field's value.
+func (s *DeleteClientVpnRouteInput) SetTargetVpcSubnetId(v string) *DeleteClientVpnRouteInput {
+ s.TargetVpcSubnetId = &v
+ return s
+}
+
+type DeleteClientVpnRouteOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The current state of the route.
+ Status *ClientVpnRouteStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteClientVpnRouteOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteClientVpnRouteOutput) GoString() string {
+ return s.String()
+}
+
+// SetStatus sets the Status field's value.
+func (s *DeleteClientVpnRouteOutput) SetStatus(v *ClientVpnRouteStatus) *DeleteClientVpnRouteOutput {
+ s.Status = v
+ return s
+}
+
// Contains the parameters for DeleteCustomerGateway.
type DeleteCustomerGatewayInput struct {
_ struct{} `type:"structure"`
@@ -32917,7 +40523,6 @@ func (s *DeleteNetworkInterfacePermissionOutput) SetReturn(v bool) *DeleteNetwor
return s
}
-// Contains the parameters for DeletePlacementGroup.
type DeletePlacementGroupInput struct {
_ struct{} `type:"structure"`
@@ -33368,7 +40973,10 @@ type DeleteTagsInput struct {
// it is UnauthorizedOperation.
DryRun *bool `locationName:"dryRun" type:"boolean"`
- // The IDs of one or more resources.
+ // The IDs of one or more resources, separated by spaces.
+ //
+ // Constraints: Up to 1000 resource IDs. We recommend breaking up this request
+ // into smaller batches.
//
// Resources is a required field
Resources []*string `locationName:"resourceId" type:"list" required:"true"`
@@ -33439,6 +41047,312 @@ func (s DeleteTagsOutput) GoString() string {
return s.String()
}
+type DeleteTransitGatewayInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the transit gateway.
+ //
+ // TransitGatewayId is a required field
+ TransitGatewayId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteTransitGatewayInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayInput"}
+ if s.TransitGatewayId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteTransitGatewayInput) SetDryRun(v bool) *DeleteTransitGatewayInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *DeleteTransitGatewayInput) SetTransitGatewayId(v string) *DeleteTransitGatewayInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
+type DeleteTransitGatewayOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the deleted transit gateway.
+ TransitGateway *TransitGateway `locationName:"transitGateway" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGateway sets the TransitGateway field's value.
+func (s *DeleteTransitGatewayOutput) SetTransitGateway(v *TransitGateway) *DeleteTransitGatewayOutput {
+ s.TransitGateway = v
+ return s
+}
+
+type DeleteTransitGatewayRouteInput struct {
+ _ struct{} `type:"structure"`
+
+ // The CIDR range for the route. This must match the CIDR for the route exactly.
+ //
+ // DestinationCidrBlock is a required field
+ DestinationCidrBlock *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayRouteInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayRouteInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteTransitGatewayRouteInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayRouteInput"}
+ if s.DestinationCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *DeleteTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *DeleteTransitGatewayRouteInput {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteTransitGatewayRouteInput) SetDryRun(v bool) *DeleteTransitGatewayRouteInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *DeleteTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *DeleteTransitGatewayRouteInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type DeleteTransitGatewayRouteOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the route.
+ Route *TransitGatewayRoute `locationName:"route" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayRouteOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayRouteOutput) GoString() string {
+ return s.String()
+}
+
+// SetRoute sets the Route field's value.
+func (s *DeleteTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *DeleteTransitGatewayRouteOutput {
+ s.Route = v
+ return s
+}
+
+type DeleteTransitGatewayRouteTableInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayRouteTableInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayRouteTableInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteTransitGatewayRouteTableInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayRouteTableInput"}
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteTransitGatewayRouteTableInput) SetDryRun(v bool) *DeleteTransitGatewayRouteTableInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *DeleteTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *DeleteTransitGatewayRouteTableInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type DeleteTransitGatewayRouteTableOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the deleted transit gateway route table.
+ TransitGatewayRouteTable *TransitGatewayRouteTable `locationName:"transitGatewayRouteTable" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayRouteTableOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayRouteTableOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayRouteTable sets the TransitGatewayRouteTable field's value.
+func (s *DeleteTransitGatewayRouteTableOutput) SetTransitGatewayRouteTable(v *TransitGatewayRouteTable) *DeleteTransitGatewayRouteTableOutput {
+ s.TransitGatewayRouteTable = v
+ return s
+}
+
+type DeleteTransitGatewayVpcAttachmentInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayVpcAttachmentInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayVpcAttachmentInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteTransitGatewayVpcAttachmentInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayVpcAttachmentInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeleteTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *DeleteTransitGatewayVpcAttachmentInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *DeleteTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *DeleteTransitGatewayVpcAttachmentInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+type DeleteTransitGatewayVpcAttachmentOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the deleted VPC attachment.
+ TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeleteTransitGatewayVpcAttachmentOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeleteTransitGatewayVpcAttachmentOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value.
+func (s *DeleteTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *DeleteTransitGatewayVpcAttachmentOutput {
+ s.TransitGatewayVpcAttachment = v
+ return s
+}
+
// Contains the parameters for DeleteVolume.
type DeleteVolumeInput struct {
_ struct{} `type:"structure"`
@@ -34059,6 +41973,80 @@ func (s DeleteVpnGatewayOutput) GoString() string {
return s.String()
}
+type DeprovisionByoipCidrInput struct {
+ _ struct{} `type:"structure"`
+
+ // The public IPv4 address range, in CIDR notation. The prefix must be the same
+ // prefix that you specified when you provisioned the address range.
+ //
+ // Cidr is a required field
+ Cidr *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s DeprovisionByoipCidrInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeprovisionByoipCidrInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeprovisionByoipCidrInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DeprovisionByoipCidrInput"}
+ if s.Cidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("Cidr"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCidr sets the Cidr field's value.
+func (s *DeprovisionByoipCidrInput) SetCidr(v string) *DeprovisionByoipCidrInput {
+ s.Cidr = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DeprovisionByoipCidrInput) SetDryRun(v bool) *DeprovisionByoipCidrInput {
+ s.DryRun = &v
+ return s
+}
+
+type DeprovisionByoipCidrOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the address range.
+ ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"`
+}
+
+// String returns the string representation
+func (s DeprovisionByoipCidrOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeprovisionByoipCidrOutput) GoString() string {
+ return s.String()
+}
+
+// SetByoipCidr sets the ByoipCidr field's value.
+func (s *DeprovisionByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *DeprovisionByoipCidrOutput {
+ s.ByoipCidr = v
+ return s
+}
+
// Contains the parameters for DeregisterImage.
type DeregisterImageInput struct {
_ struct{} `type:"structure"`
@@ -34124,7 +42112,6 @@ func (s DeregisterImageOutput) GoString() string {
return s.String()
}
-// Contains the parameters for DescribeAccountAttributes.
type DescribeAccountAttributesInput struct {
_ struct{} `type:"structure"`
@@ -34160,7 +42147,6 @@ func (s *DescribeAccountAttributesInput) SetDryRun(v bool) *DescribeAccountAttri
return s
}
-// Contains the output of DescribeAccountAttributes.
type DescribeAccountAttributesOutput struct {
_ struct{} `type:"structure"`
@@ -34184,7 +42170,6 @@ func (s *DescribeAccountAttributesOutput) SetAccountAttributes(v []*AccountAttri
return s
}
-// Contains the parameters for DescribeAddresses.
type DescribeAddressesInput struct {
_ struct{} `type:"structure"`
@@ -34232,7 +42217,7 @@ type DescribeAddressesInput struct {
// the tag value.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
- // [EC2-Classic] One or more Elastic IP addresses.
+ // One or more Elastic IP addresses.
//
// Default: Describes all your Elastic IP addresses.
PublicIps []*string `locationName:"PublicIp" locationNameList:"PublicIp" type:"list"`
@@ -34272,7 +42257,6 @@ func (s *DescribeAddressesInput) SetPublicIps(v []*string) *DescribeAddressesInp
return s
}
-// Contains the output of DescribeAddresses.
type DescribeAddressesOutput struct {
_ struct{} `type:"structure"`
@@ -34356,7 +42340,6 @@ func (s *DescribeAggregateIdFormatOutput) SetUseLongIdsAggregated(v bool) *Descr
return s
}
-// Contains the parameters for DescribeAvailabilityZones.
type DescribeAvailabilityZonesInput struct {
_ struct{} `type:"structure"`
@@ -34376,9 +42359,14 @@ type DescribeAvailabilityZonesInput struct {
// * state - The state of the Availability Zone (available | information
// | impaired | unavailable).
//
+ // * zone-id - The ID of the Availability Zone (for example, use1-az1).
+ //
// * zone-name - The name of the Availability Zone (for example, us-east-1a).
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+ // The IDs of one or more Availability Zones.
+ ZoneIds []*string `locationName:"ZoneId" locationNameList:"ZoneId" type:"list"`
+
// The names of one or more Availability Zones.
ZoneNames []*string `locationName:"ZoneName" locationNameList:"ZoneName" type:"list"`
}
@@ -34405,13 +42393,18 @@ func (s *DescribeAvailabilityZonesInput) SetFilters(v []*Filter) *DescribeAvaila
return s
}
+// SetZoneIds sets the ZoneIds field's value.
+func (s *DescribeAvailabilityZonesInput) SetZoneIds(v []*string) *DescribeAvailabilityZonesInput {
+ s.ZoneIds = v
+ return s
+}
+
// SetZoneNames sets the ZoneNames field's value.
func (s *DescribeAvailabilityZonesInput) SetZoneNames(v []*string) *DescribeAvailabilityZonesInput {
s.ZoneNames = v
return s
}
-// Contains the output of DescribeAvailabiltyZones.
type DescribeAvailabilityZonesOutput struct {
_ struct{} `type:"structure"`
@@ -34528,6 +42521,202 @@ func (s *DescribeBundleTasksOutput) SetBundleTasks(v []*BundleTask) *DescribeBun
return s
}
+type DescribeByoipCidrsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ //
+ // MaxResults is a required field
+ MaxResults *int64 `min:"5" type:"integer" required:"true"`
+
+ // The token for the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeByoipCidrsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeByoipCidrsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeByoipCidrsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeByoipCidrsInput"}
+ if s.MaxResults == nil {
+ invalidParams.Add(request.NewErrParamRequired("MaxResults"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeByoipCidrsInput) SetDryRun(v bool) *DescribeByoipCidrsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeByoipCidrsInput) SetMaxResults(v int64) *DescribeByoipCidrsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeByoipCidrsInput) SetNextToken(v string) *DescribeByoipCidrsInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeByoipCidrsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about your address ranges.
+ ByoipCidrs []*ByoipCidr `locationName:"byoipCidrSet" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeByoipCidrsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeByoipCidrsOutput) GoString() string {
+ return s.String()
+}
+
+// SetByoipCidrs sets the ByoipCidrs field's value.
+func (s *DescribeByoipCidrsOutput) SetByoipCidrs(v []*ByoipCidr) *DescribeByoipCidrsOutput {
+ s.ByoipCidrs = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeByoipCidrsOutput) SetNextToken(v string) *DescribeByoipCidrsOutput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeCapacityReservationsInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Capacity Reservation.
+ CapacityReservationIds []*string `locationName:"CapacityReservationId" locationNameList:"item" type:"list"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the returned
+ // nextToken value.
+ MaxResults *int64 `type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeCapacityReservationsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeCapacityReservationsInput) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationIds sets the CapacityReservationIds field's value.
+func (s *DescribeCapacityReservationsInput) SetCapacityReservationIds(v []*string) *DescribeCapacityReservationsInput {
+ s.CapacityReservationIds = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeCapacityReservationsInput) SetDryRun(v bool) *DescribeCapacityReservationsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeCapacityReservationsInput) SetFilters(v []*Filter) *DescribeCapacityReservationsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeCapacityReservationsInput) SetMaxResults(v int64) *DescribeCapacityReservationsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeCapacityReservationsInput) SetNextToken(v string) *DescribeCapacityReservationsInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeCapacityReservationsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Capacity Reservations.
+ CapacityReservations []*CapacityReservation `locationName:"capacityReservationSet" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeCapacityReservationsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeCapacityReservationsOutput) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservations sets the CapacityReservations field's value.
+func (s *DescribeCapacityReservationsOutput) SetCapacityReservations(v []*CapacityReservation) *DescribeCapacityReservationsOutput {
+ s.CapacityReservations = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeCapacityReservationsOutput) SetNextToken(v string) *DescribeCapacityReservationsOutput {
+ s.NextToken = &v
+ return s
+}
+
type DescribeClassicLinkInstancesInput struct {
_ struct{} `type:"structure"`
@@ -34649,6 +42838,600 @@ func (s *DescribeClassicLinkInstancesOutput) SetNextToken(v string) *DescribeCla
return s
}
+type DescribeClientVpnAuthorizationRulesInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. Filter names and values are case-sensitive.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the nextToken
+ // value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnAuthorizationRulesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnAuthorizationRulesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeClientVpnAuthorizationRulesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnAuthorizationRulesInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DescribeClientVpnAuthorizationRulesInput) SetClientVpnEndpointId(v string) *DescribeClientVpnAuthorizationRulesInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeClientVpnAuthorizationRulesInput) SetDryRun(v bool) *DescribeClientVpnAuthorizationRulesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeClientVpnAuthorizationRulesInput) SetFilters(v []*Filter) *DescribeClientVpnAuthorizationRulesInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeClientVpnAuthorizationRulesInput) SetMaxResults(v int64) *DescribeClientVpnAuthorizationRulesInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnAuthorizationRulesInput) SetNextToken(v string) *DescribeClientVpnAuthorizationRulesInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnAuthorizationRulesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the authorization rules.
+ AuthorizationRules []*AuthorizationRule `locationName:"authorizationRule" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnAuthorizationRulesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnAuthorizationRulesOutput) GoString() string {
+ return s.String()
+}
+
+// SetAuthorizationRules sets the AuthorizationRules field's value.
+func (s *DescribeClientVpnAuthorizationRulesOutput) SetAuthorizationRules(v []*AuthorizationRule) *DescribeClientVpnAuthorizationRulesOutput {
+ s.AuthorizationRules = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnAuthorizationRulesOutput) SetNextToken(v string) *DescribeClientVpnAuthorizationRulesOutput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnConnectionsInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. Filter names and values are case-sensitive.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the nextToken
+ // value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnConnectionsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnConnectionsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeClientVpnConnectionsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnConnectionsInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DescribeClientVpnConnectionsInput) SetClientVpnEndpointId(v string) *DescribeClientVpnConnectionsInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeClientVpnConnectionsInput) SetDryRun(v bool) *DescribeClientVpnConnectionsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeClientVpnConnectionsInput) SetFilters(v []*Filter) *DescribeClientVpnConnectionsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeClientVpnConnectionsInput) SetMaxResults(v int64) *DescribeClientVpnConnectionsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnConnectionsInput) SetNextToken(v string) *DescribeClientVpnConnectionsInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnConnectionsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the active and terminated client connections.
+ Connections []*ClientVpnConnection `locationName:"connections" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnConnectionsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnConnectionsOutput) GoString() string {
+ return s.String()
+}
+
+// SetConnections sets the Connections field's value.
+func (s *DescribeClientVpnConnectionsOutput) SetConnections(v []*ClientVpnConnection) *DescribeClientVpnConnectionsOutput {
+ s.Connections = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnConnectionsOutput) SetNextToken(v string) *DescribeClientVpnConnectionsOutput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnEndpointsInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ ClientVpnEndpointIds []*string `locationName:"ClientVpnEndpointId" locationNameList:"item" type:"list"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. Filter names and values are case-sensitive.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the nextToken
+ // value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnEndpointsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnEndpointsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeClientVpnEndpointsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnEndpointsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointIds sets the ClientVpnEndpointIds field's value.
+func (s *DescribeClientVpnEndpointsInput) SetClientVpnEndpointIds(v []*string) *DescribeClientVpnEndpointsInput {
+ s.ClientVpnEndpointIds = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeClientVpnEndpointsInput) SetDryRun(v bool) *DescribeClientVpnEndpointsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeClientVpnEndpointsInput) SetFilters(v []*Filter) *DescribeClientVpnEndpointsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeClientVpnEndpointsInput) SetMaxResults(v int64) *DescribeClientVpnEndpointsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnEndpointsInput) SetNextToken(v string) *DescribeClientVpnEndpointsInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnEndpointsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Client VPN endpoints.
+ ClientVpnEndpoints []*ClientVpnEndpoint `locationName:"clientVpnEndpoint" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnEndpointsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnEndpointsOutput) GoString() string {
+ return s.String()
+}
+
+// SetClientVpnEndpoints sets the ClientVpnEndpoints field's value.
+func (s *DescribeClientVpnEndpointsOutput) SetClientVpnEndpoints(v []*ClientVpnEndpoint) *DescribeClientVpnEndpointsOutput {
+ s.ClientVpnEndpoints = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnEndpointsOutput) SetNextToken(v string) *DescribeClientVpnEndpointsOutput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnRoutesInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. Filter names and values are case-sensitive.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the nextToken
+ // value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnRoutesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnRoutesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeClientVpnRoutesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnRoutesInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DescribeClientVpnRoutesInput) SetClientVpnEndpointId(v string) *DescribeClientVpnRoutesInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeClientVpnRoutesInput) SetDryRun(v bool) *DescribeClientVpnRoutesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeClientVpnRoutesInput) SetFilters(v []*Filter) *DescribeClientVpnRoutesInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeClientVpnRoutesInput) SetMaxResults(v int64) *DescribeClientVpnRoutesInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnRoutesInput) SetNextToken(v string) *DescribeClientVpnRoutesInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnRoutesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" min:"1" type:"string"`
+
+ // Information about the Client VPN endpoint routes.
+ Routes []*ClientVpnRoute `locationName:"routes" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnRoutesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnRoutesOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnRoutesOutput) SetNextToken(v string) *DescribeClientVpnRoutesOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetRoutes sets the Routes field's value.
+func (s *DescribeClientVpnRoutesOutput) SetRoutes(v []*ClientVpnRoute) *DescribeClientVpnRoutesOutput {
+ s.Routes = v
+ return s
+}
+
+type DescribeClientVpnTargetNetworksInput struct {
+ _ struct{} `type:"structure"`
+
+ // The IDs of the target network associations.
+ AssociationIds []*string `locationNameList:"item" type:"list"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. Filter names and values are case-sensitive.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return for the request in a single page.
+ // The remaining results can be seen by sending another request with the nextToken
+ // value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnTargetNetworksInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnTargetNetworksInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeClientVpnTargetNetworksInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeClientVpnTargetNetworksInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAssociationIds sets the AssociationIds field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetAssociationIds(v []*string) *DescribeClientVpnTargetNetworksInput {
+ s.AssociationIds = v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetClientVpnEndpointId(v string) *DescribeClientVpnTargetNetworksInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetDryRun(v bool) *DescribeClientVpnTargetNetworksInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetFilters(v []*Filter) *DescribeClientVpnTargetNetworksInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetMaxResults(v int64) *DescribeClientVpnTargetNetworksInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnTargetNetworksInput) SetNextToken(v string) *DescribeClientVpnTargetNetworksInput {
+ s.NextToken = &v
+ return s
+}
+
+type DescribeClientVpnTargetNetworksOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the associated target networks.
+ ClientVpnTargetNetworks []*TargetNetwork `locationName:"clientVpnTargetNetworks" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClientVpnTargetNetworksOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClientVpnTargetNetworksOutput) GoString() string {
+ return s.String()
+}
+
+// SetClientVpnTargetNetworks sets the ClientVpnTargetNetworks field's value.
+func (s *DescribeClientVpnTargetNetworksOutput) SetClientVpnTargetNetworks(v []*TargetNetwork) *DescribeClientVpnTargetNetworksOutput {
+ s.ClientVpnTargetNetworks = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeClientVpnTargetNetworksOutput) SetNextToken(v string) *DescribeClientVpnTargetNetworksOutput {
+ s.NextToken = &v
+ return s
+}
+
// Contains the parameters for DescribeConversionTasks.
type DescribeConversionTasksInput struct {
_ struct{} `type:"structure"`
@@ -34820,12 +43603,14 @@ type DescribeDhcpOptionsInput struct {
// One or more filters.
//
- // * dhcp-options-id - The ID of a set of DHCP options.
+ // * dhcp-options-id - The ID of a DHCP options set.
//
// * key - The key for one of the options (for example, domain-name).
//
// * value - The value for one of the options.
//
+ // * owner-id - The ID of the AWS account that owns the DHCP options set.
+ //
// * tag:<key> - The key/value combination of a tag assigned to the resource.
// Use the tag key in the filter name and the tag value as the filter value.
// For example, to find all resources that have a tag with the key Owner
@@ -34986,20 +43771,24 @@ type DescribeElasticGpusInput struct {
// it is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
- // One or more Elastic GPU IDs.
+ // One or more Elastic Graphics accelerator IDs.
ElasticGpuIds []*string `locationName:"ElasticGpuId" locationNameList:"item" type:"list"`
// One or more filters.
//
- // * availability-zone - The Availability Zone in which the Elastic GPU resides.
+ // * availability-zone - The Availability Zone in which the Elastic Graphics
+ // accelerator resides.
//
- // * elastic-gpu-health - The status of the Elastic GPU (OK | IMPAIRED).
+ // * elastic-gpu-health - The status of the Elastic Graphics accelerator
+ // (OK | IMPAIRED).
//
- // * elastic-gpu-state - The state of the Elastic GPU (ATTACHED).
+ // * elastic-gpu-state - The state of the Elastic Graphics accelerator (ATTACHED).
//
- // * elastic-gpu-type - The type of Elastic GPU; for example, eg1.medium.
+ // * elastic-gpu-type - The type of Elastic Graphics accelerator; for example,
+ // eg1.medium.
//
- // * instance-id - The ID of the instance to which the Elastic GPU is associated.
+ // * instance-id - The ID of the instance to which the Elastic Graphics accelerator
+ // is associated.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
// The maximum number of results to return in a single call. To retrieve the
@@ -35054,7 +43843,7 @@ func (s *DescribeElasticGpusInput) SetNextToken(v string) *DescribeElasticGpusIn
type DescribeElasticGpusOutput struct {
_ struct{} `type:"structure"`
- // Information about the Elastic GPUs.
+ // Information about the Elastic Graphics accelerators.
ElasticGpuSet []*ElasticGpus `locationName:"elasticGpuSet" locationNameList:"item" type:"list"`
// The total number of items to return. If the total number of items available
@@ -35143,6 +43932,62 @@ func (s *DescribeExportTasksOutput) SetExportTasks(v []*ExportTask) *DescribeExp
return s
}
+// Describes the instances that could not be launched by the fleet.
+type DescribeFleetError struct {
+ _ struct{} `type:"structure"`
+
+ // The error code that indicates why the instance could not be launched. For
+ // more information about error codes, see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html).
+ ErrorCode *string `locationName:"errorCode" type:"string"`
+
+ // The error message that describes why the instance could not be launched.
+ // For more information about error messages, see ee Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html).
+ ErrorMessage *string `locationName:"errorMessage" type:"string"`
+
+ // The launch templates and overrides that were used for launching the instances.
+ // Any parameters that you specify in the Overrides override the same parameters
+ // in the launch template.
+ LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"`
+
+ // Indicates if the instance that could not be launched was a Spot Instance
+ // or On-Demand Instance.
+ Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"`
+}
+
+// String returns the string representation
+func (s DescribeFleetError) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeFleetError) GoString() string {
+ return s.String()
+}
+
+// SetErrorCode sets the ErrorCode field's value.
+func (s *DescribeFleetError) SetErrorCode(v string) *DescribeFleetError {
+ s.ErrorCode = &v
+ return s
+}
+
+// SetErrorMessage sets the ErrorMessage field's value.
+func (s *DescribeFleetError) SetErrorMessage(v string) *DescribeFleetError {
+ s.ErrorMessage = &v
+ return s
+}
+
+// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value.
+func (s *DescribeFleetError) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *DescribeFleetError {
+ s.LaunchTemplateAndOverrides = v
+ return s
+}
+
+// SetLifecycle sets the Lifecycle field's value.
+func (s *DescribeFleetError) SetLifecycle(v string) *DescribeFleetError {
+ s.Lifecycle = &v
+ return s
+}
+
type DescribeFleetHistoryInput struct {
_ struct{} `type:"structure"`
@@ -35445,7 +44290,7 @@ type DescribeFleetsInput struct {
// * replace-unhealthy-instances - Indicates whether EC2 Fleet should replace
// unhealthy instances (true | false).
//
- // * type - The type of request (request | maintain).
+ // * type - The type of request (instant | request | maintain).
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
// The ID of the EC2 Fleets.
@@ -35500,6 +44345,69 @@ func (s *DescribeFleetsInput) SetNextToken(v string) *DescribeFleetsInput {
return s
}
+// Describes the instances that were launched by the fleet.
+type DescribeFleetsInstances struct {
+ _ struct{} `type:"structure"`
+
+ // The IDs of the instances.
+ InstanceIds []*string `locationName:"instanceIds" locationNameList:"item" type:"list"`
+
+ // The instance type.
+ InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
+
+ // The launch templates and overrides that were used for launching the instances.
+ // Any parameters that you specify in the Overrides override the same parameters
+ // in the launch template.
+ LaunchTemplateAndOverrides *LaunchTemplateAndOverridesResponse `locationName:"launchTemplateAndOverrides" type:"structure"`
+
+ // Indicates if the instance that was launched is a Spot Instance or On-Demand
+ // Instance.
+ Lifecycle *string `locationName:"lifecycle" type:"string" enum:"InstanceLifecycle"`
+
+ // The value is Windows for Windows instances; otherwise blank.
+ Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"`
+}
+
+// String returns the string representation
+func (s DescribeFleetsInstances) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeFleetsInstances) GoString() string {
+ return s.String()
+}
+
+// SetInstanceIds sets the InstanceIds field's value.
+func (s *DescribeFleetsInstances) SetInstanceIds(v []*string) *DescribeFleetsInstances {
+ s.InstanceIds = v
+ return s
+}
+
+// SetInstanceType sets the InstanceType field's value.
+func (s *DescribeFleetsInstances) SetInstanceType(v string) *DescribeFleetsInstances {
+ s.InstanceType = &v
+ return s
+}
+
+// SetLaunchTemplateAndOverrides sets the LaunchTemplateAndOverrides field's value.
+func (s *DescribeFleetsInstances) SetLaunchTemplateAndOverrides(v *LaunchTemplateAndOverridesResponse) *DescribeFleetsInstances {
+ s.LaunchTemplateAndOverrides = v
+ return s
+}
+
+// SetLifecycle sets the Lifecycle field's value.
+func (s *DescribeFleetsInstances) SetLifecycle(v string) *DescribeFleetsInstances {
+ s.Lifecycle = &v
+ return s
+}
+
+// SetPlatform sets the Platform field's value.
+func (s *DescribeFleetsInstances) SetPlatform(v string) *DescribeFleetsInstances {
+ s.Platform = &v
+ return s
+}
+
type DescribeFleetsOutput struct {
_ struct{} `type:"structure"`
@@ -36304,7 +45212,6 @@ func (s *DescribeIamInstanceProfileAssociationsOutput) SetNextToken(v string) *D
return s
}
-// Contains the parameters for DescribeIdFormat.
type DescribeIdFormatInput struct {
_ struct{} `type:"structure"`
@@ -36334,7 +45241,6 @@ func (s *DescribeIdFormatInput) SetResource(v string) *DescribeIdFormatInput {
return s
}
-// Contains the output of DescribeIdFormat.
type DescribeIdFormatOutput struct {
_ struct{} `type:"structure"`
@@ -36358,7 +45264,6 @@ func (s *DescribeIdFormatOutput) SetStatuses(v []*IdFormat) *DescribeIdFormatOut
return s
}
-// Contains the parameters for DescribeIdentityIdFormat.
type DescribeIdentityIdFormatInput struct {
_ struct{} `type:"structure"`
@@ -36413,7 +45318,6 @@ func (s *DescribeIdentityIdFormatInput) SetResource(v string) *DescribeIdentityI
return s
}
-// Contains the output of DescribeIdentityIdFormat.
type DescribeIdentityIdFormatOutput struct {
_ struct{} `type:"structure"`
@@ -36962,7 +45866,6 @@ func (s *DescribeImportSnapshotTasksOutput) SetNextToken(v string) *DescribeImpo
return s
}
-// Contains the parameters for DescribeInstanceAttribute.
type DescribeInstanceAttributeInput struct {
_ struct{} `type:"structure"`
@@ -37288,7 +46191,6 @@ func (s *DescribeInstanceCreditSpecificationsOutput) SetNextToken(v string) *Des
return s
}
-// Contains the parameters for DescribeInstanceStatus.
type DescribeInstanceStatusInput struct {
_ struct{} `type:"structure"`
@@ -37404,7 +46306,6 @@ func (s *DescribeInstanceStatusInput) SetNextToken(v string) *DescribeInstanceSt
return s
}
-// Contains the output of DescribeInstanceStatus.
type DescribeInstanceStatusOutput struct {
_ struct{} `type:"structure"`
@@ -37438,7 +46339,6 @@ func (s *DescribeInstanceStatusOutput) SetNextToken(v string) *DescribeInstanceS
return s
}
-// Contains the parameters for DescribeInstances.
type DescribeInstancesInput struct {
_ struct{} `type:"structure"`
@@ -37482,6 +46382,10 @@ type DescribeInstancesInput struct {
// * group-name - The name of the security group for the instance. EC2-Classic
// only.
//
+ // * hibernation-options.configured - A Boolean that indicates whether the
+ // instance is enabled for hibernation. A value of true means that the instance
+ // is enabled for hibernation.
+ //
// * host-id - The ID of the Dedicated Host on which the instance is running,
// if applicable.
//
@@ -37618,6 +46522,9 @@ type DescribeInstancesInput struct {
//
// * placement-group-name - The name of the placement group for the instance.
//
+ // * placement-partition-number - The partition in which the instance is
+ // located.
+ //
// * platform - The platform. Use windows if you have Windows instances;
// otherwise, leave blank.
//
@@ -37738,7 +46645,6 @@ func (s *DescribeInstancesInput) SetNextToken(v string) *DescribeInstancesInput
return s
}
-// Contains the output of DescribeInstances.
type DescribeInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -37790,6 +46696,8 @@ type DescribeInternetGatewaysInput struct {
//
// * internet-gateway-id - The ID of the Internet gateway.
//
+ // * owner-id - The ID of the AWS account that owns the internet gateway.
+ //
// * tag:<key> - The key/value combination of a tag assigned to the resource.
// Use the tag key in the filter name and the tag value as the filter value.
// For example, to find all resources that have a tag with the key Owner
@@ -38131,7 +47039,7 @@ type DescribeLaunchTemplatesInput struct {
// The maximum number of results to return in a single call. To retrieve the
// remaining results, make another call with the returned NextToken value. This
- // value can be between 5 and 1000.
+ // value can be between 1 and 200.
MaxResults *int64 `type:"integer"`
// The token to request the next page of results.
@@ -38217,7 +47125,6 @@ func (s *DescribeLaunchTemplatesOutput) SetNextToken(v string) *DescribeLaunchTe
return s
}
-// Contains the parameters for DescribeMovingAddresses.
type DescribeMovingAddressesInput struct {
_ struct{} `type:"structure"`
@@ -38241,7 +47148,7 @@ type DescribeMovingAddressesInput struct {
// Default: If no value is provided, the default is 1000.
MaxResults *int64 `locationName:"maxResults" type:"integer"`
- // The token to use to retrieve the next page of results.
+ // The token for the next page of results.
NextToken *string `locationName:"nextToken" type:"string"`
// One or more Elastic IP addresses.
@@ -38288,7 +47195,6 @@ func (s *DescribeMovingAddressesInput) SetPublicIps(v []*string) *DescribeMoving
return s
}
-// Contains the output of DescribeMovingAddresses.
type DescribeMovingAddressesOutput struct {
_ struct{} `type:"structure"`
@@ -38474,6 +47380,8 @@ type DescribeNetworkAclsInput struct {
//
// * network-acl-id - The ID of the network ACL.
//
+ // * owner-id - The ID of the AWS account that owns the network ACL.
+ //
// * tag:<key> - The key/value combination of a tag assigned to the resource.
// Use the tag key in the filter name and the tag value as the filter value.
// For example, to find all resources that have a tag with the key Owner
@@ -38968,7 +47876,6 @@ func (s *DescribeNetworkInterfacesOutput) SetNextToken(v string) *DescribeNetwor
return s
}
-// Contains the parameters for DescribePlacementGroups.
type DescribePlacementGroupsInput struct {
_ struct{} `type:"structure"`
@@ -38985,7 +47892,7 @@ type DescribePlacementGroupsInput struct {
// * state - The state of the placement group (pending | available | deleting
// | deleted).
//
- // * strategy - The strategy of the placement group (cluster | spread).
+ // * strategy - The strategy of the placement group (cluster | spread | partition).
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
// One or more placement group names.
@@ -39022,7 +47929,6 @@ func (s *DescribePlacementGroupsInput) SetGroupNames(v []*string) *DescribePlace
return s
}
-// Contains the output of DescribePlacementGroups.
type DescribePlacementGroupsOutput struct {
_ struct{} `type:"structure"`
@@ -39244,7 +48150,97 @@ func (s *DescribePrincipalIdFormatOutput) SetPrincipals(v []*PrincipalIdFormat)
return s
}
-// Contains the parameters for DescribeRegions.
+type DescribePublicIpv4PoolsInput struct {
+ _ struct{} `type:"structure"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"1" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `min:"1" type:"string"`
+
+ // The IDs of the address pools.
+ PoolIds []*string `locationName:"PoolId" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribePublicIpv4PoolsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribePublicIpv4PoolsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribePublicIpv4PoolsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribePublicIpv4PoolsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 1 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
+ }
+ if s.NextToken != nil && len(*s.NextToken) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribePublicIpv4PoolsInput) SetMaxResults(v int64) *DescribePublicIpv4PoolsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribePublicIpv4PoolsInput) SetNextToken(v string) *DescribePublicIpv4PoolsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetPoolIds sets the PoolIds field's value.
+func (s *DescribePublicIpv4PoolsInput) SetPoolIds(v []*string) *DescribePublicIpv4PoolsInput {
+ s.PoolIds = v
+ return s
+}
+
+type DescribePublicIpv4PoolsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the address pools.
+ PublicIpv4Pools []*PublicIpv4Pool `locationName:"publicIpv4PoolSet" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribePublicIpv4PoolsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribePublicIpv4PoolsOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribePublicIpv4PoolsOutput) SetNextToken(v string) *DescribePublicIpv4PoolsOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetPublicIpv4Pools sets the PublicIpv4Pools field's value.
+func (s *DescribePublicIpv4PoolsOutput) SetPublicIpv4Pools(v []*PublicIpv4Pool) *DescribePublicIpv4PoolsOutput {
+ s.PublicIpv4Pools = v
+ return s
+}
+
type DescribeRegionsInput struct {
_ struct{} `type:"structure"`
@@ -39293,7 +48289,6 @@ func (s *DescribeRegionsInput) SetRegionNames(v []*string) *DescribeRegionsInput
return s
}
-// Contains the output of DescribeRegions.
type DescribeRegionsOutput struct {
_ struct{} `type:"structure"`
@@ -39678,7 +48673,7 @@ type DescribeReservedInstancesOfferingsInput struct {
InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
// The instance type that the reservation will cover (for example, m1.small).
- // For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
+ // For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
// in the Amazon Elastic Compute Cloud User Guide.
InstanceType *string `type:"string" enum:"InstanceType"`
@@ -39904,6 +48899,8 @@ type DescribeRouteTablesInput struct {
// table for the VPC (true | false). Route tables that do not have an association
// ID are not returned in the response.
//
+ // * owner-id - The ID of the AWS account that owns the route table.
+ //
// * route-table-id - The ID of the route table.
//
// * route.destination-cidr-block - The IPv4 CIDR range specified in a route
@@ -39925,6 +48922,8 @@ type DescribeRouteTablesInput struct {
//
// * route.nat-gateway-id - The ID of a NAT gateway.
//
+ // * route.transit-gateway-id - The ID of a transit gateway.
+ //
// * route.origin - Describes how the route was created. CreateRouteTable
// indicates that the route was automatically created when the route table
// was created; CreateRoute indicates that the route was manually added to
@@ -39949,9 +48948,19 @@ type DescribeRouteTablesInput struct {
// to find all resources assigned a tag with a specific key, regardless of
// the tag value.
//
+ // * transit-gateway-id - The ID of a transit gateway.
+ //
// * vpc-id - The ID of the VPC for the route table.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+ // The maximum number of results to return in a single call. To retrieve the
+ // remaining results, make another call with the returned NextToken value. This
+ // value can be between 5 and 100.
+ MaxResults *int64 `type:"integer"`
+
+ // The token to retrieve the next page of results.
+ NextToken *string `type:"string"`
+
// One or more route table IDs.
//
// Default: Describes all your route tables.
@@ -39980,15 +48989,32 @@ func (s *DescribeRouteTablesInput) SetFilters(v []*Filter) *DescribeRouteTablesI
return s
}
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeRouteTablesInput) SetMaxResults(v int64) *DescribeRouteTablesInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeRouteTablesInput) SetNextToken(v string) *DescribeRouteTablesInput {
+ s.NextToken = &v
+ return s
+}
+
// SetRouteTableIds sets the RouteTableIds field's value.
func (s *DescribeRouteTablesInput) SetRouteTableIds(v []*string) *DescribeRouteTablesInput {
s.RouteTableIds = v
return s
}
+// Contains the output of DescribeRouteTables.
type DescribeRouteTablesOutput struct {
_ struct{} `type:"structure"`
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
// Information about one or more route tables.
RouteTables []*RouteTable `locationName:"routeTableSet" locationNameList:"item" type:"list"`
}
@@ -40003,6 +49029,12 @@ func (s DescribeRouteTablesOutput) GoString() string {
return s.String()
}
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeRouteTablesOutput) SetNextToken(v string) *DescribeRouteTablesOutput {
+ s.NextToken = &v
+ return s
+}
+
// SetRouteTables sets the RouteTables field's value.
func (s *DescribeRouteTablesOutput) SetRouteTables(v []*RouteTable) *DescribeRouteTablesOutput {
s.RouteTables = v
@@ -40950,18 +49982,14 @@ type DescribeSpotFleetInstancesOutput struct {
// The running instances. This list is refreshed periodically and might be out
// of date.
- //
- // ActiveInstances is a required field
- ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list" required:"true"`
+ ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list"`
// The token required to retrieve the next set of results. This value is null
// when there are no more results to return.
NextToken *string `locationName:"nextToken" type:"string"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
}
// String returns the string representation
@@ -41091,31 +50119,23 @@ type DescribeSpotFleetRequestHistoryOutput struct {
_ struct{} `type:"structure"`
// Information about the events in the history of the Spot Fleet request.
- //
- // HistoryRecords is a required field
- HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list" required:"true"`
+ HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list"`
// The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
// All records up to this time were retrieved.
//
// If nextToken indicates that there are more results, this value is not present.
- //
- // LastEvaluatedTime is a required field
- LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp" required:"true"`
+ LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp"`
// The token required to retrieve the next set of results. This value is null
// when there are no more results to return.
NextToken *string `locationName:"nextToken" type:"string"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
// The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
- //
- // StartTime is a required field
- StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`
+ StartTime *time.Time `locationName:"startTime" type:"timestamp"`
}
// String returns the string representation
@@ -41223,9 +50243,7 @@ type DescribeSpotFleetRequestsOutput struct {
NextToken *string `locationName:"nextToken" type:"string"`
// Information about the configuration of your Spot Fleet.
- //
- // SpotFleetRequestConfigs is a required field
- SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list" required:"true"`
+ SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list"`
}
// String returns the string representation
@@ -41342,7 +50360,7 @@ type DescribeSpotInstanceRequestsInput struct {
// * state - The state of the Spot Instance request (open | active | closed
// | cancelled | failed). Spot request status information can help you track
// your Amazon EC2 Spot Instance requests. For more information, see Spot
- // Request Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
+ // Request Status (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
// in the Amazon EC2 User Guide for Linux Instances.
//
// * status-code - The short code describing the most recent evaluation of
@@ -41368,6 +50386,15 @@ type DescribeSpotInstanceRequestsInput struct {
// * valid-until - The end date of the request.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+ // The maximum number of results to return in a single call. Specify a value
+ // between 5 and 1000. To retrieve the remaining results, make another call
+ // with the returned NextToken value.
+ MaxResults *int64 `type:"integer"`
+
+ // The token to request the next set of results. This value is null when there
+ // are no more results to return.
+ NextToken *string `type:"string"`
+
// One or more Spot Instance request IDs.
SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list"`
}
@@ -41394,6 +50421,18 @@ func (s *DescribeSpotInstanceRequestsInput) SetFilters(v []*Filter) *DescribeSpo
return s
}
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeSpotInstanceRequestsInput) SetMaxResults(v int64) *DescribeSpotInstanceRequestsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeSpotInstanceRequestsInput) SetNextToken(v string) *DescribeSpotInstanceRequestsInput {
+ s.NextToken = &v
+ return s
+}
+
// SetSpotInstanceRequestIds sets the SpotInstanceRequestIds field's value.
func (s *DescribeSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*string) *DescribeSpotInstanceRequestsInput {
s.SpotInstanceRequestIds = v
@@ -41404,6 +50443,10 @@ func (s *DescribeSpotInstanceRequestsInput) SetSpotInstanceRequestIds(v []*strin
type DescribeSpotInstanceRequestsOutput struct {
_ struct{} `type:"structure"`
+ // The token to use to retrieve the next set of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
// One or more Spot Instance requests.
SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"`
}
@@ -41418,6 +50461,12 @@ func (s DescribeSpotInstanceRequestsOutput) GoString() string {
return s.String()
}
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeSpotInstanceRequestsOutput) SetNextToken(v string) *DescribeSpotInstanceRequestsOutput {
+ s.NextToken = &v
+ return s
+}
+
// SetSpotInstanceRequests sets the SpotInstanceRequests field's value.
func (s *DescribeSpotInstanceRequestsOutput) SetSpotInstanceRequests(v []*SpotInstanceRequest) *DescribeSpotInstanceRequestsOutput {
s.SpotInstanceRequests = v
@@ -41698,18 +50747,21 @@ type DescribeSubnetsInput struct {
// One or more filters.
//
- // * availabilityZone - The Availability Zone for the subnet. You can also
- // use availability-zone as the filter name.
+ // * availability-zone - The Availability Zone for the subnet. You can also
+ // use availabilityZone as the filter name.
+ //
+ // * availability-zone-id - The ID of the Availability Zone for the subnet.
+ // You can also use availabilityZoneId as the filter name.
//
// * available-ip-address-count - The number of IPv4 addresses in the subnet
// that are available.
//
- // * cidrBlock - The IPv4 CIDR block of the subnet. The CIDR block you specify
+ // * cidr-block - The IPv4 CIDR block of the subnet. The CIDR block you specify
// must exactly match the subnet's CIDR block for information to be returned
- // for the subnet. You can also use cidr or cidr-block as the filter names.
+ // for the subnet. You can also use cidr or cidrBlock as the filter names.
//
- // * defaultForAz - Indicates whether this is the default subnet for the
- // Availability Zone. You can also use default-for-az as the filter name.
+ // * default-for-az - Indicates whether this is the default subnet for the
+ // Availability Zone. You can also use defaultForAz as the filter name.
//
// * ipv6-cidr-block-association.ipv6-cidr-block - An IPv6 CIDR block associated
// with the subnet.
@@ -41720,8 +50772,12 @@ type DescribeSubnetsInput struct {
// * ipv6-cidr-block-association.state - The state of an IPv6 CIDR block
// associated with the subnet.
//
+ // * owner-id - The ID of the AWS account that owns the subnet.
+ //
// * state - The state of the subnet (pending | available).
//
+ // * subnet-arn - The Amazon Resource Name (ARN) of the subnet.
+ //
// * subnet-id - The ID of the subnet.
//
// * tag:<key> - The key/value combination of a tag assigned to the resource.
@@ -41898,6 +50954,524 @@ func (s *DescribeTagsOutput) SetTags(v []*TagDescription) *DescribeTagsOutput {
return s
}
+type DescribeTransitGatewayAttachmentsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * association.state - The state of the association (associating | associated
+ // | disassociating).
+ //
+ // * association.transit-gateway-route-table-id - The ID of the route table
+ // for the transit gateway.
+ //
+ // * resource-id - The ID of the resource.
+ //
+ // * resource-owner-id - The ID of the AWS account that owns the resource.
+ //
+ // * resource-type - The resource type (vpc | vpn).
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * transit-gateway-attachment-id - The ID of the attachment.
+ //
+ // * transit-gateway-id - The ID of the transit gateway.
+ //
+ // * transit-gateway-owner-id - The ID of the AWS account that owns the transit
+ // gateway.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The IDs of the attachments.
+ TransitGatewayAttachmentIds []*string `type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayAttachmentsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayAttachmentsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeTransitGatewayAttachmentsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayAttachmentsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeTransitGatewayAttachmentsInput) SetDryRun(v bool) *DescribeTransitGatewayAttachmentsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeTransitGatewayAttachmentsInput) SetFilters(v []*Filter) *DescribeTransitGatewayAttachmentsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeTransitGatewayAttachmentsInput) SetMaxResults(v int64) *DescribeTransitGatewayAttachmentsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayAttachmentsInput) SetNextToken(v string) *DescribeTransitGatewayAttachmentsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentIds sets the TransitGatewayAttachmentIds field's value.
+func (s *DescribeTransitGatewayAttachmentsInput) SetTransitGatewayAttachmentIds(v []*string) *DescribeTransitGatewayAttachmentsInput {
+ s.TransitGatewayAttachmentIds = v
+ return s
+}
+
+type DescribeTransitGatewayAttachmentsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the attachments.
+ TransitGatewayAttachments []*TransitGatewayAttachment `locationName:"transitGatewayAttachments" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayAttachmentsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayAttachmentsOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayAttachmentsOutput) SetNextToken(v string) *DescribeTransitGatewayAttachmentsOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayAttachments sets the TransitGatewayAttachments field's value.
+func (s *DescribeTransitGatewayAttachmentsOutput) SetTransitGatewayAttachments(v []*TransitGatewayAttachment) *DescribeTransitGatewayAttachmentsOutput {
+ s.TransitGatewayAttachments = v
+ return s
+}
+
+type DescribeTransitGatewayRouteTablesInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * default-association-route-table - Indicates whether this is the default
+ // association route table for the transit gateway (true | false).
+ //
+ // * default-propagation-route-table - Indicates whether this is the default
+ // propagation route table for the transit gateway (true | false).
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * transit-gateway-id - The ID of the transit gateway.
+ //
+ // * transit-gateway-route-table-id - The ID of the transit gateway route
+ // table.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The IDs of the transit gateway route tables.
+ TransitGatewayRouteTableIds []*string `locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayRouteTablesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayRouteTablesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeTransitGatewayRouteTablesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayRouteTablesInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeTransitGatewayRouteTablesInput) SetDryRun(v bool) *DescribeTransitGatewayRouteTablesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeTransitGatewayRouteTablesInput) SetFilters(v []*Filter) *DescribeTransitGatewayRouteTablesInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeTransitGatewayRouteTablesInput) SetMaxResults(v int64) *DescribeTransitGatewayRouteTablesInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayRouteTablesInput) SetNextToken(v string) *DescribeTransitGatewayRouteTablesInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableIds sets the TransitGatewayRouteTableIds field's value.
+func (s *DescribeTransitGatewayRouteTablesInput) SetTransitGatewayRouteTableIds(v []*string) *DescribeTransitGatewayRouteTablesInput {
+ s.TransitGatewayRouteTableIds = v
+ return s
+}
+
+type DescribeTransitGatewayRouteTablesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the transit gateway route tables.
+ TransitGatewayRouteTables []*TransitGatewayRouteTable `locationName:"transitGatewayRouteTables" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayRouteTablesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayRouteTablesOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayRouteTablesOutput) SetNextToken(v string) *DescribeTransitGatewayRouteTablesOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayRouteTables sets the TransitGatewayRouteTables field's value.
+func (s *DescribeTransitGatewayRouteTablesOutput) SetTransitGatewayRouteTables(v []*TransitGatewayRouteTable) *DescribeTransitGatewayRouteTablesOutput {
+ s.TransitGatewayRouteTables = v
+ return s
+}
+
+type DescribeTransitGatewayVpcAttachmentsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * transit-gateway-attachment-id - The ID of the attachment.
+ //
+ // * transit-gateway-id - The ID of the transit gateway.
+ //
+ // * vpc-id - The ID of the VPC.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The IDs of the attachments.
+ TransitGatewayAttachmentIds []*string `type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayVpcAttachmentsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayVpcAttachmentsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayVpcAttachmentsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) SetDryRun(v bool) *DescribeTransitGatewayVpcAttachmentsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) SetFilters(v []*Filter) *DescribeTransitGatewayVpcAttachmentsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) SetMaxResults(v int64) *DescribeTransitGatewayVpcAttachmentsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) SetNextToken(v string) *DescribeTransitGatewayVpcAttachmentsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentIds sets the TransitGatewayAttachmentIds field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsInput) SetTransitGatewayAttachmentIds(v []*string) *DescribeTransitGatewayVpcAttachmentsInput {
+ s.TransitGatewayAttachmentIds = v
+ return s
+}
+
+type DescribeTransitGatewayVpcAttachmentsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the VPC attachments.
+ TransitGatewayVpcAttachments []*TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachments" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewayVpcAttachmentsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewayVpcAttachmentsOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsOutput) SetNextToken(v string) *DescribeTransitGatewayVpcAttachmentsOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayVpcAttachments sets the TransitGatewayVpcAttachments field's value.
+func (s *DescribeTransitGatewayVpcAttachmentsOutput) SetTransitGatewayVpcAttachments(v []*TransitGatewayVpcAttachment) *DescribeTransitGatewayVpcAttachmentsOutput {
+ s.TransitGatewayVpcAttachments = v
+ return s
+}
+
+type DescribeTransitGatewaysInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * options.propagation-default-route-table-id - The ID of the default propagation
+ // route table.
+ //
+ // * options.amazon-side-asn - The private ASN for the Amazon side of a BGP
+ // session.
+ //
+ // * options.association-default-route-table-id - The ID of the default association
+ // route table.
+ //
+ // * options.auto-accept-shared-attachments - Indicates whether there is
+ // automatic acceptance of attachment requests (enable | disable).
+ //
+ // * options.default-route-table-association - Indicates whether resource
+ // attachments are automatically associated with the default association
+ // route table (enable | disable).
+ //
+ // * options.default-route-table-propagation - Indicates whether resource
+ // attachments automatically propagate routes to the default propagation
+ // route table (enable | disable).
+ //
+ // * options.dns-support - Indicates whether DNS support is enabled (enable
+ // | disable).
+ //
+ // * options.vpn-ecmp-support - Indicates whether Equal Cost Multipath Protocol
+ // support is enabled (enable | disable).
+ //
+ // * owner-id - The ID of the AWS account that owns the transit gateway.
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * transit-gateway-id - The ID of the transit gateway.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The IDs of the transit gateways.
+ TransitGatewayIds []*string `locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewaysInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewaysInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeTransitGatewaysInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewaysInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DescribeTransitGatewaysInput) SetDryRun(v bool) *DescribeTransitGatewaysInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeTransitGatewaysInput) SetFilters(v []*Filter) *DescribeTransitGatewaysInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeTransitGatewaysInput) SetMaxResults(v int64) *DescribeTransitGatewaysInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewaysInput) SetNextToken(v string) *DescribeTransitGatewaysInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayIds sets the TransitGatewayIds field's value.
+func (s *DescribeTransitGatewaysInput) SetTransitGatewayIds(v []*string) *DescribeTransitGatewaysInput {
+ s.TransitGatewayIds = v
+ return s
+}
+
+type DescribeTransitGatewaysOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the transit gateways.
+ TransitGateways []*TransitGateway `locationName:"transitGatewaySet" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeTransitGatewaysOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeTransitGatewaysOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeTransitGatewaysOutput) SetNextToken(v string) *DescribeTransitGatewaysOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGateways sets the TransitGateways field's value.
+func (s *DescribeTransitGatewaysOutput) SetTransitGateways(v []*TransitGateway) *DescribeTransitGatewaysOutput {
+ s.TransitGateways = v
+ return s
+}
+
// Contains the parameters for DescribeVolumeAttribute.
type DescribeVolumeAttributeInput struct {
_ struct{} `type:"structure"`
@@ -43378,6 +52952,15 @@ type DescribeVpcPeeringConnectionsInput struct {
// * vpc-peering-connection-id - The ID of the VPC peering connection.
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+ // The maximum number of results to return for this request. The request returns
+ // a token that you can specify in a subsequent call to get the next set of
+ // results.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token to request the next page of results. (You received this token from
+ // a prior call.)
+ NextToken *string `type:"string"`
+
// One or more VPC peering connection IDs.
//
// Default: Describes all your VPC peering connections.
@@ -43394,6 +52977,19 @@ func (s DescribeVpcPeeringConnectionsInput) GoString() string {
return s.String()
}
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeVpcPeeringConnectionsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeVpcPeeringConnectionsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
// SetDryRun sets the DryRun field's value.
func (s *DescribeVpcPeeringConnectionsInput) SetDryRun(v bool) *DescribeVpcPeeringConnectionsInput {
s.DryRun = &v
@@ -43406,6 +53002,18 @@ func (s *DescribeVpcPeeringConnectionsInput) SetFilters(v []*Filter) *DescribeVp
return s
}
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeVpcPeeringConnectionsInput) SetMaxResults(v int64) *DescribeVpcPeeringConnectionsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeVpcPeeringConnectionsInput) SetNextToken(v string) *DescribeVpcPeeringConnectionsInput {
+ s.NextToken = &v
+ return s
+}
+
// SetVpcPeeringConnectionIds sets the VpcPeeringConnectionIds field's value.
func (s *DescribeVpcPeeringConnectionsInput) SetVpcPeeringConnectionIds(v []*string) *DescribeVpcPeeringConnectionsInput {
s.VpcPeeringConnectionIds = v
@@ -43415,6 +53023,10 @@ func (s *DescribeVpcPeeringConnectionsInput) SetVpcPeeringConnectionIds(v []*str
type DescribeVpcPeeringConnectionsOutput struct {
_ struct{} `type:"structure"`
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
// Information about the VPC peering connections.
VpcPeeringConnections []*VpcPeeringConnection `locationName:"vpcPeeringConnectionSet" locationNameList:"item" type:"list"`
}
@@ -43429,6 +53041,12 @@ func (s DescribeVpcPeeringConnectionsOutput) GoString() string {
return s.String()
}
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeVpcPeeringConnectionsOutput) SetNextToken(v string) *DescribeVpcPeeringConnectionsOutput {
+ s.NextToken = &v
+ return s
+}
+
// SetVpcPeeringConnections sets the VpcPeeringConnections field's value.
func (s *DescribeVpcPeeringConnectionsOutput) SetVpcPeeringConnections(v []*VpcPeeringConnection) *DescribeVpcPeeringConnectionsOutput {
s.VpcPeeringConnections = v
@@ -43473,6 +53091,8 @@ type DescribeVpcsInput struct {
//
// * isDefault - Indicates whether the VPC is the default VPC.
//
+ // * owner-id - The ID of the AWS account that owns the VPC.
+ //
// * state - The state of the VPC (pending | available).
//
// * tag:<key> - The key/value combination of a tag assigned to the resource.
@@ -44198,6 +53818,9 @@ type DhcpOptions struct {
// The ID of the set of DHCP options.
DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"`
+ // The ID of the AWS account that owns the DHCP options set.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// Any tags assigned to the DHCP options set.
Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
}
@@ -44224,12 +53847,153 @@ func (s *DhcpOptions) SetDhcpOptionsId(v string) *DhcpOptions {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *DhcpOptions) SetOwnerId(v string) *DhcpOptions {
+ s.OwnerId = &v
+ return s
+}
+
// SetTags sets the Tags field's value.
func (s *DhcpOptions) SetTags(v []*Tag) *DhcpOptions {
s.Tags = v
return s
}
+// Describes an Active Directory.
+type DirectoryServiceAuthentication struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Active Directory used for authentication.
+ DirectoryId *string `locationName:"directoryId" type:"string"`
+}
+
+// String returns the string representation
+func (s DirectoryServiceAuthentication) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DirectoryServiceAuthentication) GoString() string {
+ return s.String()
+}
+
+// SetDirectoryId sets the DirectoryId field's value.
+func (s *DirectoryServiceAuthentication) SetDirectoryId(v string) *DirectoryServiceAuthentication {
+ s.DirectoryId = &v
+ return s
+}
+
+// Describes the Active Directory to be used for client authentication.
+type DirectoryServiceAuthenticationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Active Directory to be used for authentication.
+ DirectoryId *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DirectoryServiceAuthenticationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DirectoryServiceAuthenticationRequest) GoString() string {
+ return s.String()
+}
+
+// SetDirectoryId sets the DirectoryId field's value.
+func (s *DirectoryServiceAuthenticationRequest) SetDirectoryId(v string) *DirectoryServiceAuthenticationRequest {
+ s.DirectoryId = &v
+ return s
+}
+
+type DisableTransitGatewayRouteTablePropagationInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+
+ // The ID of the propagation route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DisableTransitGatewayRouteTablePropagationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisableTransitGatewayRouteTablePropagationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DisableTransitGatewayRouteTablePropagationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DisableTransitGatewayRouteTablePropagationInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DisableTransitGatewayRouteTablePropagationInput) SetDryRun(v bool) *DisableTransitGatewayRouteTablePropagationInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *DisableTransitGatewayRouteTablePropagationInput) SetTransitGatewayAttachmentId(v string) *DisableTransitGatewayRouteTablePropagationInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *DisableTransitGatewayRouteTablePropagationInput) SetTransitGatewayRouteTableId(v string) *DisableTransitGatewayRouteTablePropagationInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type DisableTransitGatewayRouteTablePropagationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about route propagation.
+ Propagation *TransitGatewayPropagation `locationName:"propagation" type:"structure"`
+}
+
+// String returns the string representation
+func (s DisableTransitGatewayRouteTablePropagationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisableTransitGatewayRouteTablePropagationOutput) GoString() string {
+ return s.String()
+}
+
+// SetPropagation sets the Propagation field's value.
+func (s *DisableTransitGatewayRouteTablePropagationOutput) SetPropagation(v *TransitGatewayPropagation) *DisableTransitGatewayRouteTablePropagationOutput {
+ s.Propagation = v
+ return s
+}
+
// Contains the parameters for DisableVgwRoutePropagation.
type DisableVgwRoutePropagationInput struct {
_ struct{} `type:"structure"`
@@ -44416,7 +54180,6 @@ func (s *DisableVpcClassicLinkOutput) SetReturn(v bool) *DisableVpcClassicLinkOu
return s
}
-// Contains the parameters for DisassociateAddress.
type DisassociateAddressInput struct {
_ struct{} `type:"structure"`
@@ -44475,6 +54238,102 @@ func (s DisassociateAddressOutput) GoString() string {
return s.String()
}
+type DisassociateClientVpnTargetNetworkInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the target network association.
+ //
+ // AssociationId is a required field
+ AssociationId *string `type:"string" required:"true"`
+
+ // The ID of the Client VPN endpoint from which to disassociate the target network.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s DisassociateClientVpnTargetNetworkInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateClientVpnTargetNetworkInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DisassociateClientVpnTargetNetworkInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DisassociateClientVpnTargetNetworkInput"}
+ if s.AssociationId == nil {
+ invalidParams.Add(request.NewErrParamRequired("AssociationId"))
+ }
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAssociationId sets the AssociationId field's value.
+func (s *DisassociateClientVpnTargetNetworkInput) SetAssociationId(v string) *DisassociateClientVpnTargetNetworkInput {
+ s.AssociationId = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *DisassociateClientVpnTargetNetworkInput) SetClientVpnEndpointId(v string) *DisassociateClientVpnTargetNetworkInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DisassociateClientVpnTargetNetworkInput) SetDryRun(v bool) *DisassociateClientVpnTargetNetworkInput {
+ s.DryRun = &v
+ return s
+}
+
+type DisassociateClientVpnTargetNetworkOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the target network association.
+ AssociationId *string `locationName:"associationId" type:"string"`
+
+ // The current state of the target network association.
+ Status *AssociationStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s DisassociateClientVpnTargetNetworkOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateClientVpnTargetNetworkOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociationId sets the AssociationId field's value.
+func (s *DisassociateClientVpnTargetNetworkOutput) SetAssociationId(v string) *DisassociateClientVpnTargetNetworkOutput {
+ s.AssociationId = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *DisassociateClientVpnTargetNetworkOutput) SetStatus(v *AssociationStatus) *DisassociateClientVpnTargetNetworkOutput {
+ s.Status = v
+ return s
+}
+
type DisassociateIamInstanceProfileInput struct {
_ struct{} `type:"structure"`
@@ -44671,6 +54530,93 @@ func (s *DisassociateSubnetCidrBlockOutput) SetSubnetId(v string) *DisassociateS
return s
}
+type DisassociateTransitGatewayRouteTableInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DisassociateTransitGatewayRouteTableInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateTransitGatewayRouteTableInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DisassociateTransitGatewayRouteTableInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DisassociateTransitGatewayRouteTableInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *DisassociateTransitGatewayRouteTableInput) SetDryRun(v bool) *DisassociateTransitGatewayRouteTableInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *DisassociateTransitGatewayRouteTableInput) SetTransitGatewayAttachmentId(v string) *DisassociateTransitGatewayRouteTableInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *DisassociateTransitGatewayRouteTableInput) SetTransitGatewayRouteTableId(v string) *DisassociateTransitGatewayRouteTableInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type DisassociateTransitGatewayRouteTableOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the association.
+ Association *TransitGatewayAssociation `locationName:"association" type:"structure"`
+}
+
+// String returns the string representation
+func (s DisassociateTransitGatewayRouteTableOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateTransitGatewayRouteTableOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociation sets the Association field's value.
+func (s *DisassociateTransitGatewayRouteTableOutput) SetAssociation(v *TransitGatewayAssociation) *DisassociateTransitGatewayRouteTableOutput {
+ s.Association = v
+ return s
+}
+
type DisassociateVpcCidrBlockInput struct {
_ struct{} `type:"structure"`
@@ -44825,11 +54771,11 @@ type DiskImageDescription struct {
// A presigned URL for the import manifest stored in Amazon S3. For information
// about creating a presigned URL for an Amazon S3 object, read the "Query String
// Request Authentication Alternative" section of the Authenticating REST Requests
- // (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
+ // (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
// topic in the Amazon Simple Storage Service Developer Guide.
//
// For information about the import manifest referenced by this API action,
- // see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
+ // see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
ImportManifestUrl *string `locationName:"importManifestUrl" type:"string"`
// The size of the disk image, in GiB.
@@ -44887,11 +54833,11 @@ type DiskImageDetail struct {
// A presigned URL for the import manifest stored in Amazon S3 and presented
// here as an Amazon S3 presigned URL. For information about creating a presigned
// URL for an Amazon S3 object, read the "Query String Request Authentication
- // Alternative" section of the Authenticating REST Requests (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
+ // Alternative" section of the Authenticating REST Requests (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
// topic in the Amazon Simple Storage Service Developer Guide.
//
// For information about the import manifest referenced by this API action,
- // see VM Import Manifest (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
+ // see VM Import Manifest (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/manifest.html).
//
// ImportManifestUrl is a required field
ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"`
@@ -45010,6 +54956,42 @@ func (s *DnsEntry) SetHostedZoneId(v string) *DnsEntry {
return s
}
+// Information about the DNS server to be used.
+type DnsServersOptionsModifyStructure struct {
+ _ struct{} `type:"structure"`
+
+ // The IPv4 address range, in CIDR notation, of the DNS servers to be used.
+ // You can specify up to two DNS servers. Ensure that the DNS servers can be
+ // reached by the clients. The specified values overwrite the existing values.
+ CustomDnsServers []*string `locationNameList:"item" type:"list"`
+
+ // Indicates whether DNS servers should be used. Specify False to delete the
+ // existing DNS servers.
+ Enabled *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s DnsServersOptionsModifyStructure) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DnsServersOptionsModifyStructure) GoString() string {
+ return s.String()
+}
+
+// SetCustomDnsServers sets the CustomDnsServers field's value.
+func (s *DnsServersOptionsModifyStructure) SetCustomDnsServers(v []*string) *DnsServersOptionsModifyStructure {
+ s.CustomDnsServers = v
+ return s
+}
+
+// SetEnabled sets the Enabled field's value.
+func (s *DnsServersOptionsModifyStructure) SetEnabled(v bool) *DnsServersOptionsModifyStructure {
+ s.Enabled = &v
+ return s
+}
+
// Describes a block device for an EBS volume.
type EbsBlockDevice struct {
_ struct{} `type:"structure"`
@@ -45018,9 +55000,14 @@ type EbsBlockDevice struct {
DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"`
// Indicates whether the EBS volume is encrypted. Encrypted volumes can only
- // be attached to instances that support Amazon EBS encryption. If you are creating
- // a volume from a snapshot, you can't specify an encryption value. This is
- // because only blank volumes can be encrypted on creation.
+ // be attached to instances that support Amazon EBS encryption.
+ //
+ // If you are creating a volume from a snapshot, you cannot specify an encryption
+ // value. This is because only blank volumes can be encrypted on creation. If
+ // you are creating a snapshot from an existing EBS volume, you cannot specify
+ // an encryption value that differs from that of the EBS volume. We recommend
+ // that you omit the encryption value from the block device mappings when creating
+ // an image from an instance.
Encrypted *bool `locationName:"encrypted" type:"boolean"`
// The number of I/O operations per second (IOPS) that the volume supports.
@@ -45028,11 +55015,15 @@ type EbsBlockDevice struct {
// volume. For gp2, this represents the baseline performance of the volume and
// the rate at which the volume accumulates I/O credits for bursting. For more
// information about General Purpose SSD baseline performance, I/O credits,
- // and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // and bursting, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
- // Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for
- // gp2 volumes.
+ // Constraints: Range is 100-16,000 IOPS for gp2 volumes and 100 to 64,000IOPS
+ // for io1 volumes in most Regions. Maximum io1IOPS of 64,000 is guaranteed
+ // only on Nitro-based instances (AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances).
+ // Other instance families guarantee performance up to 32,000 IOPS. For more
+ // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
//
// Condition: This parameter is required for requests to create io1 volumes;
// it is not used in requests to create gp2, st1, sc1, or standard volumes.
@@ -45042,9 +55033,9 @@ type EbsBlockDevice struct {
// under which the EBS volume is encrypted.
//
// This parameter is only supported on BlockDeviceMapping objects called by
- // RunInstances (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html),
- // RequestSpotFleet (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html),
- // and RequestSpotInstances (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html).
+ // RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html),
+ // RequestSpotFleet (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html),
+ // and RequestSpotInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html).
KmsKeyId *string `type:"string"`
// The ID of the snapshot.
@@ -45238,20 +55229,21 @@ func (s *EgressOnlyInternetGateway) SetEgressOnlyInternetGatewayId(v string) *Eg
return s
}
-// Describes the association between an instance and an Elastic GPU.
+// Describes the association between an instance and an Elastic Graphics accelerator.
type ElasticGpuAssociation struct {
_ struct{} `type:"structure"`
// The ID of the association.
ElasticGpuAssociationId *string `locationName:"elasticGpuAssociationId" type:"string"`
- // The state of the association between the instance and the Elastic GPU.
+ // The state of the association between the instance and the Elastic Graphics
+ // accelerator.
ElasticGpuAssociationState *string `locationName:"elasticGpuAssociationState" type:"string"`
- // The time the Elastic GPU was associated with the instance.
+ // The time the Elastic Graphics accelerator was associated with the instance.
ElasticGpuAssociationTime *string `locationName:"elasticGpuAssociationTime" type:"string"`
- // The ID of the Elastic GPU.
+ // The ID of the Elastic Graphics accelerator.
ElasticGpuId *string `locationName:"elasticGpuId" type:"string"`
}
@@ -45289,7 +55281,7 @@ func (s *ElasticGpuAssociation) SetElasticGpuId(v string) *ElasticGpuAssociation
return s
}
-// Describes the status of an Elastic GPU.
+// Describes the status of an Elastic Graphics accelerator.
type ElasticGpuHealth struct {
_ struct{} `type:"structure"`
@@ -45313,11 +55305,11 @@ func (s *ElasticGpuHealth) SetStatus(v string) *ElasticGpuHealth {
return s
}
-// A specification for an Elastic GPU.
+// A specification for an Elastic Graphics accelerator.
type ElasticGpuSpecification struct {
_ struct{} `type:"structure"`
- // The type of Elastic GPU.
+ // The type of Elastic Graphics accelerator.
//
// Type is a required field
Type *string `type:"string" required:"true"`
@@ -45376,26 +55368,26 @@ func (s *ElasticGpuSpecificationResponse) SetType(v string) *ElasticGpuSpecifica
return s
}
-// Describes an Elastic GPU.
+// Describes an Elastic Graphics accelerator.
type ElasticGpus struct {
_ struct{} `type:"structure"`
- // The Availability Zone in the which the Elastic GPU resides.
+ // The Availability Zone in the which the Elastic Graphics accelerator resides.
AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
- // The status of the Elastic GPU.
+ // The status of the Elastic Graphics accelerator.
ElasticGpuHealth *ElasticGpuHealth `locationName:"elasticGpuHealth" type:"structure"`
- // The ID of the Elastic GPU.
+ // The ID of the Elastic Graphics accelerator.
ElasticGpuId *string `locationName:"elasticGpuId" type:"string"`
- // The state of the Elastic GPU.
+ // The state of the Elastic Graphics accelerator.
ElasticGpuState *string `locationName:"elasticGpuState" type:"string" enum:"ElasticGpuState"`
- // The type of Elastic GPU.
+ // The type of Elastic Graphics accelerator.
ElasticGpuType *string `locationName:"elasticGpuType" type:"string"`
- // The ID of the instance to which the Elastic GPU is attached.
+ // The ID of the instance to which the Elastic Graphics accelerator is attached.
InstanceId *string `locationName:"instanceId" type:"string"`
}
@@ -45445,6 +55437,185 @@ func (s *ElasticGpus) SetInstanceId(v string) *ElasticGpus {
return s
}
+// Describes an elastic inference accelerator.
+type ElasticInferenceAccelerator struct {
+ _ struct{} `type:"structure"`
+
+ // The type of elastic inference accelerator. The possible values are eia1.small,
+ // eia1.medium, and eia1.large.
+ //
+ // Type is a required field
+ Type *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ElasticInferenceAccelerator) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ElasticInferenceAccelerator) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ElasticInferenceAccelerator) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ElasticInferenceAccelerator"}
+ if s.Type == nil {
+ invalidParams.Add(request.NewErrParamRequired("Type"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetType sets the Type field's value.
+func (s *ElasticInferenceAccelerator) SetType(v string) *ElasticInferenceAccelerator {
+ s.Type = &v
+ return s
+}
+
+// Describes the association between an instance and an elastic inference accelerator.
+type ElasticInferenceAcceleratorAssociation struct {
+ _ struct{} `type:"structure"`
+
+ // The Amazon Resource Name (ARN) of the elastic inference accelerator.
+ ElasticInferenceAcceleratorArn *string `locationName:"elasticInferenceAcceleratorArn" type:"string"`
+
+ // The ID of the association.
+ ElasticInferenceAcceleratorAssociationId *string `locationName:"elasticInferenceAcceleratorAssociationId" type:"string"`
+
+ // The state of the elastic inference accelerator.
+ ElasticInferenceAcceleratorAssociationState *string `locationName:"elasticInferenceAcceleratorAssociationState" type:"string"`
+
+ // The time at which the elastic inference accelerator is associated with an
+ // instance.
+ ElasticInferenceAcceleratorAssociationTime *time.Time `locationName:"elasticInferenceAcceleratorAssociationTime" type:"timestamp"`
+}
+
+// String returns the string representation
+func (s ElasticInferenceAcceleratorAssociation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ElasticInferenceAcceleratorAssociation) GoString() string {
+ return s.String()
+}
+
+// SetElasticInferenceAcceleratorArn sets the ElasticInferenceAcceleratorArn field's value.
+func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorArn(v string) *ElasticInferenceAcceleratorAssociation {
+ s.ElasticInferenceAcceleratorArn = &v
+ return s
+}
+
+// SetElasticInferenceAcceleratorAssociationId sets the ElasticInferenceAcceleratorAssociationId field's value.
+func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationId(v string) *ElasticInferenceAcceleratorAssociation {
+ s.ElasticInferenceAcceleratorAssociationId = &v
+ return s
+}
+
+// SetElasticInferenceAcceleratorAssociationState sets the ElasticInferenceAcceleratorAssociationState field's value.
+func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationState(v string) *ElasticInferenceAcceleratorAssociation {
+ s.ElasticInferenceAcceleratorAssociationState = &v
+ return s
+}
+
+// SetElasticInferenceAcceleratorAssociationTime sets the ElasticInferenceAcceleratorAssociationTime field's value.
+func (s *ElasticInferenceAcceleratorAssociation) SetElasticInferenceAcceleratorAssociationTime(v time.Time) *ElasticInferenceAcceleratorAssociation {
+ s.ElasticInferenceAcceleratorAssociationTime = &v
+ return s
+}
+
+type EnableTransitGatewayRouteTablePropagationInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+
+ // The ID of the propagation route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s EnableTransitGatewayRouteTablePropagationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s EnableTransitGatewayRouteTablePropagationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *EnableTransitGatewayRouteTablePropagationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "EnableTransitGatewayRouteTablePropagationInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *EnableTransitGatewayRouteTablePropagationInput) SetDryRun(v bool) *EnableTransitGatewayRouteTablePropagationInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *EnableTransitGatewayRouteTablePropagationInput) SetTransitGatewayAttachmentId(v string) *EnableTransitGatewayRouteTablePropagationInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *EnableTransitGatewayRouteTablePropagationInput) SetTransitGatewayRouteTableId(v string) *EnableTransitGatewayRouteTablePropagationInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type EnableTransitGatewayRouteTablePropagationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about route propagation.
+ Propagation *TransitGatewayPropagation `locationName:"propagation" type:"structure"`
+}
+
+// String returns the string representation
+func (s EnableTransitGatewayRouteTablePropagationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s EnableTransitGatewayRouteTablePropagationOutput) GoString() string {
+ return s.String()
+}
+
+// SetPropagation sets the Propagation field's value.
+func (s *EnableTransitGatewayRouteTablePropagationOutput) SetPropagation(v *TransitGatewayPropagation) *EnableTransitGatewayRouteTablePropagationOutput {
+ s.Propagation = v
+ return s
+}
+
// Contains the parameters for EnableVgwRoutePropagation.
type EnableVgwRoutePropagationInput struct {
_ struct{} `type:"structure"`
@@ -45799,6 +55970,161 @@ func (s *EventInformation) SetInstanceId(v string) *EventInformation {
return s
}
+type ExportClientVpnClientCertificateRevocationListInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ExportClientVpnClientCertificateRevocationListInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportClientVpnClientCertificateRevocationListInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ExportClientVpnClientCertificateRevocationListInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ExportClientVpnClientCertificateRevocationListInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ExportClientVpnClientCertificateRevocationListInput) SetClientVpnEndpointId(v string) *ExportClientVpnClientCertificateRevocationListInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ExportClientVpnClientCertificateRevocationListInput) SetDryRun(v bool) *ExportClientVpnClientCertificateRevocationListInput {
+ s.DryRun = &v
+ return s
+}
+
+type ExportClientVpnClientCertificateRevocationListOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the client certificate revocation list.
+ CertificateRevocationList *string `locationName:"certificateRevocationList" type:"string"`
+
+ // The current state of the client certificate revocation list.
+ Status *ClientCertificateRevocationListStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s ExportClientVpnClientCertificateRevocationListOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportClientVpnClientCertificateRevocationListOutput) GoString() string {
+ return s.String()
+}
+
+// SetCertificateRevocationList sets the CertificateRevocationList field's value.
+func (s *ExportClientVpnClientCertificateRevocationListOutput) SetCertificateRevocationList(v string) *ExportClientVpnClientCertificateRevocationListOutput {
+ s.CertificateRevocationList = &v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *ExportClientVpnClientCertificateRevocationListOutput) SetStatus(v *ClientCertificateRevocationListStatus) *ExportClientVpnClientCertificateRevocationListOutput {
+ s.Status = v
+ return s
+}
+
+type ExportClientVpnClientConfigurationInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ExportClientVpnClientConfigurationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportClientVpnClientConfigurationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ExportClientVpnClientConfigurationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ExportClientVpnClientConfigurationInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ExportClientVpnClientConfigurationInput) SetClientVpnEndpointId(v string) *ExportClientVpnClientConfigurationInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ExportClientVpnClientConfigurationInput) SetDryRun(v bool) *ExportClientVpnClientConfigurationInput {
+ s.DryRun = &v
+ return s
+}
+
+type ExportClientVpnClientConfigurationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The contents of the Client VPN endpoint configuration file.
+ ClientConfiguration *string `locationName:"clientConfiguration" type:"string"`
+}
+
+// String returns the string representation
+func (s ExportClientVpnClientConfigurationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportClientVpnClientConfigurationOutput) GoString() string {
+ return s.String()
+}
+
+// SetClientConfiguration sets the ClientConfiguration field's value.
+func (s *ExportClientVpnClientConfigurationOutput) SetClientConfiguration(v string) *ExportClientVpnClientConfigurationOutput {
+ s.ClientConfiguration = &v
+ return s
+}
+
// Describes an instance export task.
type ExportTask struct {
_ struct{} `type:"structure"`
@@ -45975,6 +56301,128 @@ func (s *ExportToS3TaskSpecification) SetS3Prefix(v string) *ExportToS3TaskSpeci
return s
}
+type ExportTransitGatewayRoutesInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * attachment.transit-gateway-attachment-id- The id of the transit gateway
+ // attachment.
+ //
+ // * attachment.resource-id - The resource id of the transit gateway attachment.
+ //
+ // * route-search.exact-match - The exact match of the specified filter.
+ //
+ // * route-search.longest-prefix-match - The longest prefix that matches
+ // the route.
+ //
+ // * route-search.subnet-of-match - The routes with a subnet that match the
+ // specified CIDR filter.
+ //
+ // * route-search.supernet-of-match - The routes with a CIDR that encompass
+ // the CIDR filter. For example, if you have 10.0.1.0/29 and 10.0.1.0/31
+ // routes in your route table and you specify supernet-of-match as 10.0.1.0/30,
+ // then the result returns 10.0.1.0/29.
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * transit-gateway-route-destination-cidr-block - The CIDR range.
+ //
+ // * type - The type of roue (active | blackhole).
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The name of the S3 bucket.
+ //
+ // S3Bucket is a required field
+ S3Bucket *string `type:"string" required:"true"`
+
+ // The ID of the route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ExportTransitGatewayRoutesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportTransitGatewayRoutesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ExportTransitGatewayRoutesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ExportTransitGatewayRoutesInput"}
+ if s.S3Bucket == nil {
+ invalidParams.Add(request.NewErrParamRequired("S3Bucket"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ExportTransitGatewayRoutesInput) SetDryRun(v bool) *ExportTransitGatewayRoutesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *ExportTransitGatewayRoutesInput) SetFilters(v []*Filter) *ExportTransitGatewayRoutesInput {
+ s.Filters = v
+ return s
+}
+
+// SetS3Bucket sets the S3Bucket field's value.
+func (s *ExportTransitGatewayRoutesInput) SetS3Bucket(v string) *ExportTransitGatewayRoutesInput {
+ s.S3Bucket = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *ExportTransitGatewayRoutesInput) SetTransitGatewayRouteTableId(v string) *ExportTransitGatewayRoutesInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type ExportTransitGatewayRoutesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The URL of the exported file in Amazon S3. For example, s3://bucket_name/VPCTransitGateway/TransitGatewayRouteTables/file_name.
+ S3Location *string `locationName:"s3Location" type:"string"`
+}
+
+// String returns the string representation
+func (s ExportTransitGatewayRoutesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExportTransitGatewayRoutesOutput) GoString() string {
+ return s.String()
+}
+
+// SetS3Location sets the S3Location field's value.
+func (s *ExportTransitGatewayRoutesOutput) SetS3Location(v string) *ExportTransitGatewayRoutesOutput {
+ s.S3Location = &v
+ return s
+}
+
// A filter name and value pair that is used to return a more specific list
// of results from a describe operation. Filters can be used to match a set
// of resources by specific criteria, such as tags, attributes, or IDs. The
@@ -46044,7 +56492,7 @@ type FleetData struct {
ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"FleetActivityStatus"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
//
// Constraints: Maximum 64 ASCII characters
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -46052,6 +56500,10 @@ type FleetData struct {
// The creation date and time of the EC2 Fleet.
CreateTime *time.Time `locationName:"createTime" type:"timestamp"`
+ // Information about the instances that could not be launched by the fleet.
+ // Valid only when Type is set to instant.
+ Errors []*DescribeFleetError `locationName:"errorSet" locationNameList:"item" type:"list"`
+
// Indicates whether running instances should be terminated if the target capacity
// of the EC2 Fleet is decreased below the current size of the EC2 Fleet.
ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"FleetExcessCapacityTerminationPolicy"`
@@ -46070,6 +56522,10 @@ type FleetData struct {
// On-Demand capacity.
FulfilledOnDemandCapacity *float64 `locationName:"fulfilledOnDemandCapacity" type:"double"`
+ // Information about the instances that were launched by the fleet. Valid only
+ // when Type is set to instant.
+ Instances []*DescribeFleetsInstances `locationName:"fleetInstanceSet" locationNameList:"item" type:"list"`
+
// The launch template and overrides.
LaunchTemplateConfigs []*FleetLaunchTemplateConfig `locationName:"launchTemplateConfigs" locationNameList:"item" type:"list"`
@@ -46144,6 +56600,12 @@ func (s *FleetData) SetCreateTime(v time.Time) *FleetData {
return s
}
+// SetErrors sets the Errors field's value.
+func (s *FleetData) SetErrors(v []*DescribeFleetError) *FleetData {
+ s.Errors = v
+ return s
+}
+
// SetExcessCapacityTerminationPolicy sets the ExcessCapacityTerminationPolicy field's value.
func (s *FleetData) SetExcessCapacityTerminationPolicy(v string) *FleetData {
s.ExcessCapacityTerminationPolicy = &v
@@ -46174,6 +56636,12 @@ func (s *FleetData) SetFulfilledOnDemandCapacity(v float64) *FleetData {
return s
}
+// SetInstances sets the Instances field's value.
+func (s *FleetData) SetInstances(v []*DescribeFleetsInstances) *FleetData {
+ s.Instances = v
+ return s
+}
+
// SetLaunchTemplateConfigs sets the LaunchTemplateConfigs field's value.
func (s *FleetData) SetLaunchTemplateConfigs(v []*FleetLaunchTemplateConfig) *FleetData {
s.LaunchTemplateConfigs = v
@@ -46331,6 +56799,9 @@ type FleetLaunchTemplateOverrides struct {
// The maximum price per unit hour that you are willing to pay for a Spot Instance.
MaxPrice *string `locationName:"maxPrice" type:"string"`
+ // The location where the instance launched, if applicable.
+ Placement *PlacementResponse `locationName:"placement" type:"structure"`
+
// The priority for the launch template override. If AllocationStrategy is set
// to prioritized, EC2 Fleet uses priority to determine which launch template
// override to use first in fulfilling On-Demand capacity. The highest priority
@@ -46374,6 +56845,12 @@ func (s *FleetLaunchTemplateOverrides) SetMaxPrice(v string) *FleetLaunchTemplat
return s
}
+// SetPlacement sets the Placement field's value.
+func (s *FleetLaunchTemplateOverrides) SetPlacement(v *PlacementResponse) *FleetLaunchTemplateOverrides {
+ s.Placement = v
+ return s
+}
+
// SetPriority sets the Priority field's value.
func (s *FleetLaunchTemplateOverrides) SetPriority(v float64) *FleetLaunchTemplateOverrides {
s.Priority = &v
@@ -46405,6 +56882,9 @@ type FleetLaunchTemplateOverridesRequest struct {
// The maximum price per unit hour that you are willing to pay for a Spot Instance.
MaxPrice *string `type:"string"`
+ // The location where the instance launched, if applicable.
+ Placement *Placement `type:"structure"`
+
// The priority for the launch template override. If AllocationStrategy is set
// to prioritized, EC2 Fleet uses priority to determine which launch template
// override to use first in fulfilling On-Demand capacity. The highest priority
@@ -46448,6 +56928,12 @@ func (s *FleetLaunchTemplateOverridesRequest) SetMaxPrice(v string) *FleetLaunch
return s
}
+// SetPlacement sets the Placement field's value.
+func (s *FleetLaunchTemplateOverridesRequest) SetPlacement(v *Placement) *FleetLaunchTemplateOverridesRequest {
+ s.Placement = v
+ return s
+}
+
// SetPriority sets the Priority field's value.
func (s *FleetLaunchTemplateOverridesRequest) SetPriority(v float64) *FleetLaunchTemplateOverridesRequest {
s.Priority = &v
@@ -46947,7 +57433,6 @@ func (s *FpgaImageState) SetMessage(v string) *FpgaImageState {
return s
}
-// Contains the parameters for GetConsoleOutput.
type GetConsoleOutputInput struct {
_ struct{} `type:"structure"`
@@ -47009,7 +57494,6 @@ func (s *GetConsoleOutputInput) SetLatest(v bool) *GetConsoleOutputInput {
return s
}
-// Contains the output of GetConsoleOutput.
type GetConsoleOutputOutput struct {
_ struct{} `type:"structure"`
@@ -47052,7 +57536,6 @@ func (s *GetConsoleOutputOutput) SetTimestamp(v time.Time) *GetConsoleOutputOutp
return s
}
-// Contains the parameters for the request.
type GetConsoleScreenshotInput struct {
_ struct{} `type:"structure"`
@@ -47113,7 +57596,6 @@ func (s *GetConsoleScreenshotInput) SetWakeUp(v bool) *GetConsoleScreenshotInput
return s
}
-// Contains the output of the request.
type GetConsoleScreenshotOutput struct {
_ struct{} `type:"structure"`
@@ -47323,7 +57805,6 @@ func (s *GetLaunchTemplateDataOutput) SetLaunchTemplateData(v *ResponseLaunchTem
return s
}
-// Contains the parameters for GetPasswordData.
type GetPasswordDataInput struct {
_ struct{} `type:"structure"`
@@ -47374,7 +57855,6 @@ func (s *GetPasswordDataInput) SetInstanceId(v string) *GetPasswordDataInput {
return s
}
-// Contains the output of GetPasswordData.
type GetPasswordDataOutput struct {
_ struct{} `type:"structure"`
@@ -47584,6 +58064,363 @@ func (s *GetReservedInstancesExchangeQuoteOutput) SetValidationFailureReason(v s
return s
}
+type GetTransitGatewayAttachmentPropagationsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * transit-gateway-route-table-id - The ID of the transit gateway route
+ // table.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayAttachmentPropagationsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayAttachmentPropagationsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetTransitGatewayAttachmentPropagationsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayAttachmentPropagationsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *GetTransitGatewayAttachmentPropagationsInput) SetDryRun(v bool) *GetTransitGatewayAttachmentPropagationsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *GetTransitGatewayAttachmentPropagationsInput) SetFilters(v []*Filter) *GetTransitGatewayAttachmentPropagationsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *GetTransitGatewayAttachmentPropagationsInput) SetMaxResults(v int64) *GetTransitGatewayAttachmentPropagationsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayAttachmentPropagationsInput) SetNextToken(v string) *GetTransitGatewayAttachmentPropagationsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *GetTransitGatewayAttachmentPropagationsInput) SetTransitGatewayAttachmentId(v string) *GetTransitGatewayAttachmentPropagationsInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+type GetTransitGatewayAttachmentPropagationsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the propagation route tables.
+ TransitGatewayAttachmentPropagations []*TransitGatewayAttachmentPropagation `locationName:"transitGatewayAttachmentPropagations" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayAttachmentPropagationsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayAttachmentPropagationsOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayAttachmentPropagationsOutput) SetNextToken(v string) *GetTransitGatewayAttachmentPropagationsOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentPropagations sets the TransitGatewayAttachmentPropagations field's value.
+func (s *GetTransitGatewayAttachmentPropagationsOutput) SetTransitGatewayAttachmentPropagations(v []*TransitGatewayAttachmentPropagation) *GetTransitGatewayAttachmentPropagationsOutput {
+ s.TransitGatewayAttachmentPropagations = v
+ return s
+}
+
+type GetTransitGatewayRouteTableAssociationsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * resource-id - The ID of the resource.
+ //
+ // * resource-type - The resource type (vpc | vpn).
+ //
+ // * transit-gateway-attachment-id - The ID of the attachment.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayRouteTableAssociationsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayRouteTableAssociationsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetTransitGatewayRouteTableAssociationsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayRouteTableAssociationsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *GetTransitGatewayRouteTableAssociationsInput) SetDryRun(v bool) *GetTransitGatewayRouteTableAssociationsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *GetTransitGatewayRouteTableAssociationsInput) SetFilters(v []*Filter) *GetTransitGatewayRouteTableAssociationsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *GetTransitGatewayRouteTableAssociationsInput) SetMaxResults(v int64) *GetTransitGatewayRouteTableAssociationsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayRouteTableAssociationsInput) SetNextToken(v string) *GetTransitGatewayRouteTableAssociationsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *GetTransitGatewayRouteTableAssociationsInput) SetTransitGatewayRouteTableId(v string) *GetTransitGatewayRouteTableAssociationsInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type GetTransitGatewayRouteTableAssociationsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the associations.
+ Associations []*TransitGatewayRouteTableAssociation `locationName:"associations" locationNameList:"item" type:"list"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayRouteTableAssociationsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayRouteTableAssociationsOutput) GoString() string {
+ return s.String()
+}
+
+// SetAssociations sets the Associations field's value.
+func (s *GetTransitGatewayRouteTableAssociationsOutput) SetAssociations(v []*TransitGatewayRouteTableAssociation) *GetTransitGatewayRouteTableAssociationsOutput {
+ s.Associations = v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayRouteTableAssociationsOutput) SetNextToken(v string) *GetTransitGatewayRouteTableAssociationsOutput {
+ s.NextToken = &v
+ return s
+}
+
+type GetTransitGatewayRouteTablePropagationsInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * resource-id - The ID of the resource.
+ //
+ // * resource-type - The resource type (vpc | vpn).
+ //
+ // * transit-gateway-attachment-id - The ID of the attachment.
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
+
+ // The maximum number of results to return with a single call. To retrieve the
+ // remaining results, make another call with the returned nextToken value.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The token for the next page of results.
+ NextToken *string `type:"string"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayRouteTablePropagationsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayRouteTablePropagationsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetTransitGatewayRouteTablePropagationsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "GetTransitGatewayRouteTablePropagationsInput"}
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *GetTransitGatewayRouteTablePropagationsInput) SetDryRun(v bool) *GetTransitGatewayRouteTablePropagationsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *GetTransitGatewayRouteTablePropagationsInput) SetFilters(v []*Filter) *GetTransitGatewayRouteTablePropagationsInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *GetTransitGatewayRouteTablePropagationsInput) SetMaxResults(v int64) *GetTransitGatewayRouteTablePropagationsInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayRouteTablePropagationsInput) SetNextToken(v string) *GetTransitGatewayRouteTablePropagationsInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *GetTransitGatewayRouteTablePropagationsInput) SetTransitGatewayRouteTableId(v string) *GetTransitGatewayRouteTablePropagationsInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type GetTransitGatewayRouteTablePropagationsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token to use to retrieve the next page of results. This value is null
+ // when there are no more results to return.
+ NextToken *string `locationName:"nextToken" type:"string"`
+
+ // Information about the route table propagations.
+ TransitGatewayRouteTablePropagations []*TransitGatewayRouteTablePropagation `locationName:"transitGatewayRouteTablePropagations" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s GetTransitGatewayRouteTablePropagationsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s GetTransitGatewayRouteTablePropagationsOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *GetTransitGatewayRouteTablePropagationsOutput) SetNextToken(v string) *GetTransitGatewayRouteTablePropagationsOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetTransitGatewayRouteTablePropagations sets the TransitGatewayRouteTablePropagations field's value.
+func (s *GetTransitGatewayRouteTablePropagationsOutput) SetTransitGatewayRouteTablePropagations(v []*TransitGatewayRouteTablePropagation) *GetTransitGatewayRouteTablePropagationsOutput {
+ s.TransitGatewayRouteTablePropagations = v
+ return s
+}
+
// Describes a security group.
type GroupIdentifier struct {
_ struct{} `type:"structure"`
@@ -47617,14 +58454,71 @@ func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier {
return s
}
+// Indicates whether your instance is configured for hibernation. This parameter
+// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
+// Hibernation is currently supported only for Amazon Linux. For more information,
+// see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+type HibernationOptions struct {
+ _ struct{} `type:"structure"`
+
+ // If this parameter is set to true, your instance is enabled for hibernation;
+ // otherwise, it is not enabled for hibernation.
+ Configured *bool `locationName:"configured" type:"boolean"`
+}
+
+// String returns the string representation
+func (s HibernationOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s HibernationOptions) GoString() string {
+ return s.String()
+}
+
+// SetConfigured sets the Configured field's value.
+func (s *HibernationOptions) SetConfigured(v bool) *HibernationOptions {
+ s.Configured = &v
+ return s
+}
+
+// Indicates whether your instance is configured for hibernation. This parameter
+// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
+// Hibernation is currently supported only for Amazon Linux. For more information,
+// see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+// in the Amazon Elastic Compute Cloud User Guide.
+type HibernationOptionsRequest struct {
+ _ struct{} `type:"structure"`
+
+ // If you set this parameter to true, your instance is enabled for hibernation.
+ //
+ // Default: false
+ Configured *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s HibernationOptionsRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s HibernationOptionsRequest) GoString() string {
+ return s.String()
+}
+
+// SetConfigured sets the Configured field's value.
+func (s *HibernationOptionsRequest) SetConfigured(v bool) *HibernationOptionsRequest {
+ s.Configured = &v
+ return s
+}
+
// Describes an event in the history of the Spot Fleet request.
type HistoryRecord struct {
_ struct{} `type:"structure"`
// Information about the event.
- //
- // EventInformation is a required field
- EventInformation *EventInformation `locationName:"eventInformation" type:"structure" required:"true"`
+ EventInformation *EventInformation `locationName:"eventInformation" type:"structure"`
// The event type.
//
@@ -47636,14 +58530,10 @@ type HistoryRecord struct {
// * instanceChange - An instance was launched or terminated.
//
// * Information - An informational event.
- //
- // EventType is a required field
- EventType *string `locationName:"eventType" type:"string" required:"true" enum:"EventType"`
+ EventType *string `locationName:"eventType" type:"string" enum:"EventType"`
// The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
- //
- // Timestamp is a required field
- Timestamp *time.Time `locationName:"timestamp" type:"timestamp" required:"true"`
+ Timestamp *time.Time `locationName:"timestamp" type:"timestamp"`
}
// String returns the string representation
@@ -47733,7 +58623,7 @@ type Host struct {
AvailableCapacity *AvailableCapacity `locationName:"availableCapacity" type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide.
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -48655,6 +59545,96 @@ func (s *ImageDiskContainer) SetUserBucket(v *UserBucket) *ImageDiskContainer {
return s
}
+type ImportClientVpnClientCertificateRevocationListInput struct {
+ _ struct{} `type:"structure"`
+
+ // The client certificate revocation list file. For more information, see Generate
+ // a Client Certificate Revocation List (vpn/latest/clientvpn-admin/cvpn-working-certificates.html#cvpn-working-certificates-generate)
+ // in the AWS Client VPN Admin Guide.
+ //
+ // CertificateRevocationList is a required field
+ CertificateRevocationList *string `type:"string" required:"true"`
+
+ // The ID of the Client VPN endpoint to which the client certificate revocation
+ // list applies.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ImportClientVpnClientCertificateRevocationListInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ImportClientVpnClientCertificateRevocationListInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ImportClientVpnClientCertificateRevocationListInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ImportClientVpnClientCertificateRevocationListInput"}
+ if s.CertificateRevocationList == nil {
+ invalidParams.Add(request.NewErrParamRequired("CertificateRevocationList"))
+ }
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCertificateRevocationList sets the CertificateRevocationList field's value.
+func (s *ImportClientVpnClientCertificateRevocationListInput) SetCertificateRevocationList(v string) *ImportClientVpnClientCertificateRevocationListInput {
+ s.CertificateRevocationList = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ImportClientVpnClientCertificateRevocationListInput) SetClientVpnEndpointId(v string) *ImportClientVpnClientCertificateRevocationListInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ImportClientVpnClientCertificateRevocationListInput) SetDryRun(v bool) *ImportClientVpnClientCertificateRevocationListInput {
+ s.DryRun = &v
+ return s
+}
+
+type ImportClientVpnClientCertificateRevocationListOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Returns true if the request succeeds; otherwise, it returns an error.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s ImportClientVpnClientCertificateRevocationListOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ImportClientVpnClientCertificateRevocationListOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *ImportClientVpnClientCertificateRevocationListOutput) SetReturn(v bool) *ImportClientVpnClientCertificateRevocationListOutput {
+ s.Return = &v
+ return s
+}
+
// Contains the parameters for ImportImage.
type ImportImageInput struct {
_ struct{} `type:"structure"`
@@ -48682,16 +59662,51 @@ type ImportImageInput struct {
// it is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
+ // Specifies whether the destination AMI of the imported image should be encrypted.
+ // The default CMK for EBS is used unless you specify a non-default AWS Key
+ // Management Service (AWS KMS) CMK using KmsKeyId. For more information, see
+ // Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ Encrypted *bool `type:"boolean"`
+
// The target hypervisor platform.
//
// Valid values: xen
Hypervisor *string `type:"string"`
+ // An identifier for the AWS Key Management Service (AWS KMS) customer master
+ // key (CMK) to use when creating the encrypted AMI. This parameter is only
+ // required if you want to use a non-default CMK; if this parameter is not specified,
+ // the default CMK for EBS is used. If a KmsKeyId is specified, the Encrypted
+ // flag must also be set.
+ //
+ // The CMK identifier may be provided in any of the following formats:
+ //
+ // * Key ID
+ //
+ // * Key alias, in the form alias/ExampleAlias
+ //
+ // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed
+ // by the region of the CMK, the AWS account ID of the CMK owner, the key
+ // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
+ //
+ // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace,
+ // followed by the region of the CMK, the AWS account ID of the CMK owner,
+ // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
+ //
+ //
+ // AWS parses KmsKeyId asynchronously, meaning that the action you call may
+ // appear to complete even though you provided an invalid identifier. This action
+ // will eventually report failure.
+ //
+ // The specified CMK must exist in the region that the AMI is being copied to.
+ KmsKeyId *string `type:"string"`
+
// The license type to be used for the Amazon Machine Image (AMI) after importing.
//
// Note: You may only use BYOL if you have existing licenses with rights to
// use these licenses in a third party cloud like AWS. For more information,
- // see Prerequisites (http://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html#prerequisites-image)
+ // see Prerequisites (https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html#prerequisites-image)
// in the VM Import/Export User Guide.
//
// Valid values: AWS | BYOL
@@ -48752,12 +59767,24 @@ func (s *ImportImageInput) SetDryRun(v bool) *ImportImageInput {
return s
}
+// SetEncrypted sets the Encrypted field's value.
+func (s *ImportImageInput) SetEncrypted(v bool) *ImportImageInput {
+ s.Encrypted = &v
+ return s
+}
+
// SetHypervisor sets the Hypervisor field's value.
func (s *ImportImageInput) SetHypervisor(v string) *ImportImageInput {
s.Hypervisor = &v
return s
}
+// SetKmsKeyId sets the KmsKeyId field's value.
+func (s *ImportImageInput) SetKmsKeyId(v string) *ImportImageInput {
+ s.KmsKeyId = &v
+ return s
+}
+
// SetLicenseType sets the LicenseType field's value.
func (s *ImportImageInput) SetLicenseType(v string) *ImportImageInput {
s.LicenseType = &v
@@ -48786,6 +59813,9 @@ type ImportImageOutput struct {
// A description of the import task.
Description *string `locationName:"description" type:"string"`
+ // Indicates whether the AMI is encypted.
+ Encrypted *bool `locationName:"encrypted" type:"boolean"`
+
// The target hypervisor of the import task.
Hypervisor *string `locationName:"hypervisor" type:"string"`
@@ -48795,6 +59825,10 @@ type ImportImageOutput struct {
// The task ID of the import image task.
ImportTaskId *string `locationName:"importTaskId" type:"string"`
+ // The identifier for the AWS Key Management Service (AWS KMS) customer master
+ // key (CMK) that was used to create the encrypted AMI.
+ KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
+
// The license type of the virtual machine.
LicenseType *string `locationName:"licenseType" type:"string"`
@@ -48836,6 +59870,12 @@ func (s *ImportImageOutput) SetDescription(v string) *ImportImageOutput {
return s
}
+// SetEncrypted sets the Encrypted field's value.
+func (s *ImportImageOutput) SetEncrypted(v bool) *ImportImageOutput {
+ s.Encrypted = &v
+ return s
+}
+
// SetHypervisor sets the Hypervisor field's value.
func (s *ImportImageOutput) SetHypervisor(v string) *ImportImageOutput {
s.Hypervisor = &v
@@ -48854,6 +59894,12 @@ func (s *ImportImageOutput) SetImportTaskId(v string) *ImportImageOutput {
return s
}
+// SetKmsKeyId sets the KmsKeyId field's value.
+func (s *ImportImageOutput) SetKmsKeyId(v string) *ImportImageOutput {
+ s.KmsKeyId = &v
+ return s
+}
+
// SetLicenseType sets the LicenseType field's value.
func (s *ImportImageOutput) SetLicenseType(v string) *ImportImageOutput {
s.LicenseType = &v
@@ -48902,6 +59948,9 @@ type ImportImageTask struct {
// A description of the import task.
Description *string `locationName:"description" type:"string"`
+ // Indicates whether the image is encrypted.
+ Encrypted *bool `locationName:"encrypted" type:"boolean"`
+
// The target hypervisor for the import task.
//
// Valid values: xen
@@ -48913,6 +59962,10 @@ type ImportImageTask struct {
// The ID of the import image task.
ImportTaskId *string `locationName:"importTaskId" type:"string"`
+ // The identifier for the AWS Key Management Service (AWS KMS) customer master
+ // key (CMK) that was used to create the encrypted image.
+ KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
+
// The license type of the virtual machine.
LicenseType *string `locationName:"licenseType" type:"string"`
@@ -48954,6 +60007,12 @@ func (s *ImportImageTask) SetDescription(v string) *ImportImageTask {
return s
}
+// SetEncrypted sets the Encrypted field's value.
+func (s *ImportImageTask) SetEncrypted(v bool) *ImportImageTask {
+ s.Encrypted = &v
+ return s
+}
+
// SetHypervisor sets the Hypervisor field's value.
func (s *ImportImageTask) SetHypervisor(v string) *ImportImageTask {
s.Hypervisor = &v
@@ -48972,6 +60031,12 @@ func (s *ImportImageTask) SetImportTaskId(v string) *ImportImageTask {
return s
}
+// SetKmsKeyId sets the KmsKeyId field's value.
+func (s *ImportImageTask) SetKmsKeyId(v string) *ImportImageTask {
+ s.KmsKeyId = &v
+ return s
+}
+
// SetLicenseType sets the LicenseType field's value.
func (s *ImportImageTask) SetLicenseType(v string) *ImportImageTask {
s.LicenseType = &v
@@ -49117,7 +60182,7 @@ type ImportInstanceLaunchSpecification struct {
InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"`
// The instance type. For more information about the instance types that you
- // can import, see Instance Types (http://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-instance-types)
+ // can import, see Instance Types (https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-instance-types)
// in the VM Import/Export User Guide.
InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"`
@@ -49293,35 +60358,25 @@ type ImportInstanceVolumeDetailItem struct {
_ struct{} `type:"structure"`
// The Availability Zone where the resulting instance will reside.
- //
- // AvailabilityZone is a required field
- AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"`
+ AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
// The number of bytes converted so far.
- //
- // BytesConverted is a required field
- BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"`
+ BytesConverted *int64 `locationName:"bytesConverted" type:"long"`
// A description of the task.
Description *string `locationName:"description" type:"string"`
// The image.
- //
- // Image is a required field
- Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"`
+ Image *DiskImageDescription `locationName:"image" type:"structure"`
// The status of the import of this particular disk image.
- //
- // Status is a required field
- Status *string `locationName:"status" type:"string" required:"true"`
+ Status *string `locationName:"status" type:"string"`
// The status information or errors related to the disk image.
StatusMessage *string `locationName:"statusMessage" type:"string"`
// The volume.
- //
- // Volume is a required field
- Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"`
+ Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure"`
}
// String returns the string representation
@@ -49497,6 +60552,42 @@ type ImportSnapshotInput struct {
// it is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
+ // Specifies whether the destination snapshot of the imported image should be
+ // encrypted. The default CMK for EBS is used unless you specify a non-default
+ // AWS Key Management Service (AWS KMS) CMK using KmsKeyId. For more information,
+ // see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ Encrypted *bool `type:"boolean"`
+
+ // An identifier for the AWS Key Management Service (AWS KMS) customer master
+ // key (CMK) to use when creating the encrypted snapshot. This parameter is
+ // only required if you want to use a non-default CMK; if this parameter is
+ // not specified, the default CMK for EBS is used. If a KmsKeyId is specified,
+ // the Encrypted flag must also be set.
+ //
+ // The CMK identifier may be provided in any of the following formats:
+ //
+ // * Key ID
+ //
+ // * Key alias, in the form alias/ExampleAlias
+ //
+ // * ARN using key ID. The ID ARN contains the arn:aws:kms namespace, followed
+ // by the region of the CMK, the AWS account ID of the CMK owner, the key
+ // namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
+ //
+ // * ARN using key alias. The alias ARN contains the arn:aws:kms namespace,
+ // followed by the region of the CMK, the AWS account ID of the CMK owner,
+ // the alias namespace, and then the CMK alias. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.
+ //
+ //
+ // AWS parses KmsKeyId asynchronously, meaning that the action you call may
+ // appear to complete even though you provided an invalid identifier. This action
+ // will eventually report failure.
+ //
+ // The specified CMK must exist in the region that the snapshot is being copied
+ // to.
+ KmsKeyId *string `type:"string"`
+
// The name of the role to use when not using the default role, 'vmimport'.
RoleName *string `type:"string"`
}
@@ -49541,6 +60632,18 @@ func (s *ImportSnapshotInput) SetDryRun(v bool) *ImportSnapshotInput {
return s
}
+// SetEncrypted sets the Encrypted field's value.
+func (s *ImportSnapshotInput) SetEncrypted(v bool) *ImportSnapshotInput {
+ s.Encrypted = &v
+ return s
+}
+
+// SetKmsKeyId sets the KmsKeyId field's value.
+func (s *ImportSnapshotInput) SetKmsKeyId(v string) *ImportSnapshotInput {
+ s.KmsKeyId = &v
+ return s
+}
+
// SetRoleName sets the RoleName field's value.
func (s *ImportSnapshotInput) SetRoleName(v string) *ImportSnapshotInput {
s.RoleName = &v
@@ -49827,6 +60930,12 @@ type Instance struct {
// Any block device mapping entries for the instance.
BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
+ // The ID of the Capacity Reservation.
+ CapacityReservationId *string `locationName:"capacityReservationId" type:"string"`
+
+ // Information about the Capacity Reservation targeting option.
+ CapacityReservationSpecification *CapacityReservationSpecificationResponse `locationName:"capacityReservationSpecification" type:"structure"`
+
// The idempotency token you provided when you launched the instance, if applicable.
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -49843,9 +60952,15 @@ type Instance struct {
// The Elastic GPU associated with the instance.
ElasticGpuAssociations []*ElasticGpuAssociation `locationName:"elasticGpuAssociationSet" locationNameList:"item" type:"list"`
+ // The elastic inference accelerator associated with the instance.
+ ElasticInferenceAcceleratorAssociations []*ElasticInferenceAcceleratorAssociation `locationName:"elasticInferenceAcceleratorAssociationSet" locationNameList:"item" type:"list"`
+
// Specifies whether enhanced networking with ENA is enabled.
EnaSupport *bool `locationName:"enaSupport" type:"boolean"`
+ // Indicates whether the instance is enabled for hibernation.
+ HibernationOptions *HibernationOptions `locationName:"hibernationOptions" type:"structure"`
+
// The hypervisor type of the instance.
Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"`
@@ -49874,6 +60989,9 @@ type Instance struct {
// The time the instance was launched.
LaunchTime *time.Time `locationName:"launchTime" type:"timestamp"`
+ // The license configurations.
+ Licenses []*LicenseConfiguration `locationName:"licenseSet" locationNameList:"item" type:"list"`
+
// The monitoring for the instance.
Monitoring *Monitoring `locationName:"monitoring" type:"structure"`
@@ -49927,7 +61045,7 @@ type Instance struct {
// This controls whether source/destination checking is enabled on the instance.
// A value of true means that checking is enabled, and false means that checking
// is disabled. The value must be false for the instance to perform NAT. For
- // more information, see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
+ // more information, see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
// in the Amazon Virtual Private Cloud User Guide.
SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"`
@@ -49988,6 +61106,18 @@ func (s *Instance) SetBlockDeviceMappings(v []*InstanceBlockDeviceMapping) *Inst
return s
}
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *Instance) SetCapacityReservationId(v string) *Instance {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
+func (s *Instance) SetCapacityReservationSpecification(v *CapacityReservationSpecificationResponse) *Instance {
+ s.CapacityReservationSpecification = v
+ return s
+}
+
// SetClientToken sets the ClientToken field's value.
func (s *Instance) SetClientToken(v string) *Instance {
s.ClientToken = &v
@@ -50012,12 +61142,24 @@ func (s *Instance) SetElasticGpuAssociations(v []*ElasticGpuAssociation) *Instan
return s
}
+// SetElasticInferenceAcceleratorAssociations sets the ElasticInferenceAcceleratorAssociations field's value.
+func (s *Instance) SetElasticInferenceAcceleratorAssociations(v []*ElasticInferenceAcceleratorAssociation) *Instance {
+ s.ElasticInferenceAcceleratorAssociations = v
+ return s
+}
+
// SetEnaSupport sets the EnaSupport field's value.
func (s *Instance) SetEnaSupport(v bool) *Instance {
s.EnaSupport = &v
return s
}
+// SetHibernationOptions sets the HibernationOptions field's value.
+func (s *Instance) SetHibernationOptions(v *HibernationOptions) *Instance {
+ s.HibernationOptions = v
+ return s
+}
+
// SetHypervisor sets the Hypervisor field's value.
func (s *Instance) SetHypervisor(v string) *Instance {
s.Hypervisor = &v
@@ -50072,6 +61214,12 @@ func (s *Instance) SetLaunchTime(v time.Time) *Instance {
return s
}
+// SetLicenses sets the Licenses field's value.
+func (s *Instance) SetLicenses(v []*LicenseConfiguration) *Instance {
+ s.Licenses = v
+ return s
+}
+
// SetMonitoring sets the Monitoring field's value.
func (s *Instance) SetMonitoring(v *Monitoring) *Instance {
s.Monitoring = v
@@ -51342,6 +62490,9 @@ type InternetGateway struct {
// The ID of the internet gateway.
InternetGatewayId *string `locationName:"internetGatewayId" type:"string"`
+ // The ID of the AWS account that owns the internet gateway.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// Any tags assigned to the internet gateway.
Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
}
@@ -51368,6 +62519,12 @@ func (s *InternetGateway) SetInternetGatewayId(v string) *InternetGateway {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *InternetGateway) SetOwnerId(v string) *InternetGateway {
+ s.OwnerId = &v
+ return s
+}
+
// SetTags sets the Tags field's value.
func (s *InternetGateway) SetTags(v []*Tag) *InternetGateway {
s.Tags = v
@@ -51940,6 +63097,40 @@ func (s *LaunchTemplate) SetTags(v []*Tag) *LaunchTemplate {
return s
}
+// Describes a launch template and overrides.
+type LaunchTemplateAndOverridesResponse struct {
+ _ struct{} `type:"structure"`
+
+ // The launch template.
+ LaunchTemplateSpecification *FleetLaunchTemplateSpecification `locationName:"launchTemplateSpecification" type:"structure"`
+
+ // Any parameters that you specify override the same parameters in the launch
+ // template.
+ Overrides *FleetLaunchTemplateOverrides `locationName:"overrides" type:"structure"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateAndOverridesResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateAndOverridesResponse) GoString() string {
+ return s.String()
+}
+
+// SetLaunchTemplateSpecification sets the LaunchTemplateSpecification field's value.
+func (s *LaunchTemplateAndOverridesResponse) SetLaunchTemplateSpecification(v *FleetLaunchTemplateSpecification) *LaunchTemplateAndOverridesResponse {
+ s.LaunchTemplateSpecification = v
+ return s
+}
+
+// SetOverrides sets the Overrides field's value.
+func (s *LaunchTemplateAndOverridesResponse) SetOverrides(v *FleetLaunchTemplateOverrides) *LaunchTemplateAndOverridesResponse {
+ s.Overrides = v
+ return s
+}
+
// Describes a block device mapping.
type LaunchTemplateBlockDeviceMapping struct {
_ struct{} `type:"structure"`
@@ -52049,6 +63240,91 @@ func (s *LaunchTemplateBlockDeviceMappingRequest) SetVirtualName(v string) *Laun
return s
}
+// Describes an instance's Capacity Reservation targeting option. You can specify
+// only one option at a time. Use the CapacityReservationPreference parameter
+// to configure the instance to run in On-Demand capacity or to run in any open
+// Capacity Reservation that has matching attributes (instance type, platform,
+// Availability Zone). Use the CapacityReservationTarget parameter to explicitly
+// target a specific Capacity Reservation.
+type LaunchTemplateCapacityReservationSpecificationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates the instance's Capacity Reservation preferences. Possible preferences
+ // include:
+ //
+ // * open - The instance can run in any open Capacity Reservation that has
+ // matching attributes (instance type, platform, Availability Zone).
+ //
+ // * none - The instance avoids running in a Capacity Reservation even if
+ // one is available. The instance runs in On-Demand capacity.
+ CapacityReservationPreference *string `type:"string" enum:"CapacityReservationPreference"`
+
+ // Information about the target Capacity Reservation.
+ CapacityReservationTarget *CapacityReservationTarget `type:"structure"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateCapacityReservationSpecificationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateCapacityReservationSpecificationRequest) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationPreference sets the CapacityReservationPreference field's value.
+func (s *LaunchTemplateCapacityReservationSpecificationRequest) SetCapacityReservationPreference(v string) *LaunchTemplateCapacityReservationSpecificationRequest {
+ s.CapacityReservationPreference = &v
+ return s
+}
+
+// SetCapacityReservationTarget sets the CapacityReservationTarget field's value.
+func (s *LaunchTemplateCapacityReservationSpecificationRequest) SetCapacityReservationTarget(v *CapacityReservationTarget) *LaunchTemplateCapacityReservationSpecificationRequest {
+ s.CapacityReservationTarget = v
+ return s
+}
+
+// Information about the Capacity Reservation targeting option.
+type LaunchTemplateCapacityReservationSpecificationResponse struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates the instance's Capacity Reservation preferences. Possible preferences
+ // include:
+ //
+ // * open - The instance can run in any open Capacity Reservation that has
+ // matching attributes (instance type, platform, Availability Zone).
+ //
+ // * none - The instance avoids running in a Capacity Reservation even if
+ // one is available. The instance runs in On-Demand capacity.
+ CapacityReservationPreference *string `locationName:"capacityReservationPreference" type:"string" enum:"CapacityReservationPreference"`
+
+ // Information about the target Capacity Reservation.
+ CapacityReservationTarget *CapacityReservationTargetResponse `locationName:"capacityReservationTarget" type:"structure"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateCapacityReservationSpecificationResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateCapacityReservationSpecificationResponse) GoString() string {
+ return s.String()
+}
+
+// SetCapacityReservationPreference sets the CapacityReservationPreference field's value.
+func (s *LaunchTemplateCapacityReservationSpecificationResponse) SetCapacityReservationPreference(v string) *LaunchTemplateCapacityReservationSpecificationResponse {
+ s.CapacityReservationPreference = &v
+ return s
+}
+
+// SetCapacityReservationTarget sets the CapacityReservationTarget field's value.
+func (s *LaunchTemplateCapacityReservationSpecificationResponse) SetCapacityReservationTarget(v *CapacityReservationTargetResponse) *LaunchTemplateCapacityReservationSpecificationResponse {
+ s.CapacityReservationTarget = v
+ return s
+}
+
// Describes a launch template and overrides.
type LaunchTemplateConfig struct {
_ struct{} `type:"structure"`
@@ -52337,6 +63613,124 @@ func (s *LaunchTemplateEbsBlockDeviceRequest) SetVolumeType(v string) *LaunchTem
return s
}
+// Describes an elastic inference accelerator.
+type LaunchTemplateElasticInferenceAccelerator struct {
+ _ struct{} `type:"structure"`
+
+ // The type of elastic inference accelerator. The possible values are eia1.medium,
+ // eia1.large, and eia1.xlarge.
+ //
+ // Type is a required field
+ Type *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateElasticInferenceAccelerator) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateElasticInferenceAccelerator) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *LaunchTemplateElasticInferenceAccelerator) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "LaunchTemplateElasticInferenceAccelerator"}
+ if s.Type == nil {
+ invalidParams.Add(request.NewErrParamRequired("Type"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetType sets the Type field's value.
+func (s *LaunchTemplateElasticInferenceAccelerator) SetType(v string) *LaunchTemplateElasticInferenceAccelerator {
+ s.Type = &v
+ return s
+}
+
+// Describes an elastic inference accelerator.
+type LaunchTemplateElasticInferenceAcceleratorResponse struct {
+ _ struct{} `type:"structure"`
+
+ // The type of elastic inference accelerator. The possible values are eia1.medium,
+ // eia1.large, and eia1.xlarge.
+ Type *string `locationName:"type" type:"string"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateElasticInferenceAcceleratorResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateElasticInferenceAcceleratorResponse) GoString() string {
+ return s.String()
+}
+
+// SetType sets the Type field's value.
+func (s *LaunchTemplateElasticInferenceAcceleratorResponse) SetType(v string) *LaunchTemplateElasticInferenceAcceleratorResponse {
+ s.Type = &v
+ return s
+}
+
+// Indicates whether an instance is configured for hibernation.
+type LaunchTemplateHibernationOptions struct {
+ _ struct{} `type:"structure"`
+
+ // If this parameter is set to true, the instance is enabled for hibernation;
+ // otherwise, it is not enabled for hibernation.
+ Configured *bool `locationName:"configured" type:"boolean"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateHibernationOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateHibernationOptions) GoString() string {
+ return s.String()
+}
+
+// SetConfigured sets the Configured field's value.
+func (s *LaunchTemplateHibernationOptions) SetConfigured(v bool) *LaunchTemplateHibernationOptions {
+ s.Configured = &v
+ return s
+}
+
+// Indicates whether the instance is configured for hibernation. This parameter
+// is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
+// Hibernation is currently supported only for Amazon Linux.
+type LaunchTemplateHibernationOptionsRequest struct {
+ _ struct{} `type:"structure"`
+
+ // If you set this parameter to true, the instance is enabled for hibernation.
+ //
+ // Default: false
+ Configured *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateHibernationOptionsRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateHibernationOptionsRequest) GoString() string {
+ return s.String()
+}
+
+// SetConfigured sets the Configured field's value.
+func (s *LaunchTemplateHibernationOptionsRequest) SetConfigured(v bool) *LaunchTemplateHibernationOptionsRequest {
+ s.Configured = &v
+ return s
+}
+
// Describes an IAM instance profile.
type LaunchTemplateIamInstanceProfileSpecification struct {
_ struct{} `type:"structure"`
@@ -52719,6 +64113,54 @@ func (s *LaunchTemplateInstanceNetworkInterfaceSpecificationRequest) SetSubnetId
return s
}
+// Describes a license configuration.
+type LaunchTemplateLicenseConfiguration struct {
+ _ struct{} `type:"structure"`
+
+ // The Amazon Resource Name (ARN) of the license configuration.
+ LicenseConfigurationArn *string `locationName:"licenseConfigurationArn" type:"string"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateLicenseConfiguration) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateLicenseConfiguration) GoString() string {
+ return s.String()
+}
+
+// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value.
+func (s *LaunchTemplateLicenseConfiguration) SetLicenseConfigurationArn(v string) *LaunchTemplateLicenseConfiguration {
+ s.LicenseConfigurationArn = &v
+ return s
+}
+
+// Describes a license configuration.
+type LaunchTemplateLicenseConfigurationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The Amazon Resource Name (ARN) of the license configuration.
+ LicenseConfigurationArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s LaunchTemplateLicenseConfigurationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LaunchTemplateLicenseConfigurationRequest) GoString() string {
+ return s.String()
+}
+
+// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value.
+func (s *LaunchTemplateLicenseConfigurationRequest) SetLicenseConfigurationArn(v string) *LaunchTemplateLicenseConfigurationRequest {
+ s.LicenseConfigurationArn = &v
+ return s
+}
+
// Describes overrides for a launch template.
type LaunchTemplateOverrides struct {
_ struct{} `type:"structure"`
@@ -52863,7 +64305,7 @@ func (s *LaunchTemplatePlacement) SetTenancy(v string) *LaunchTemplatePlacement
return s
}
-// The placement for the instance.
+// Describes the placement of an instance.
type LaunchTemplatePlacementRequest struct {
_ struct{} `type:"structure"`
@@ -53314,6 +64756,54 @@ func (s *LaunchTemplatesMonitoringRequest) SetEnabled(v bool) *LaunchTemplatesMo
return s
}
+// Describes a license configuration.
+type LicenseConfiguration struct {
+ _ struct{} `type:"structure"`
+
+ // The Amazon Resource Name (ARN) of the license configuration.
+ LicenseConfigurationArn *string `locationName:"licenseConfigurationArn" type:"string"`
+}
+
+// String returns the string representation
+func (s LicenseConfiguration) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LicenseConfiguration) GoString() string {
+ return s.String()
+}
+
+// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value.
+func (s *LicenseConfiguration) SetLicenseConfigurationArn(v string) *LicenseConfiguration {
+ s.LicenseConfigurationArn = &v
+ return s
+}
+
+// Describes a license configuration.
+type LicenseConfigurationRequest struct {
+ _ struct{} `type:"structure"`
+
+ // The Amazon Resource Name (ARN) of the license configuration.
+ LicenseConfigurationArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s LicenseConfigurationRequest) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s LicenseConfigurationRequest) GoString() string {
+ return s.String()
+}
+
+// SetLicenseConfigurationArn sets the LicenseConfigurationArn field's value.
+func (s *LicenseConfigurationRequest) SetLicenseConfigurationArn(v string) *LicenseConfigurationRequest {
+ s.LicenseConfigurationArn = &v
+ return s
+}
+
// Describes the Classic Load Balancers and target groups to attach to a Spot
// Fleet request.
type LoadBalancersConfig struct {
@@ -53467,6 +64957,245 @@ func (s *LoadPermissionRequest) SetUserId(v string) *LoadPermissionRequest {
return s
}
+type ModifyCapacityReservationInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Capacity Reservation.
+ //
+ // CapacityReservationId is a required field
+ CapacityReservationId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The date and time at which the Capacity Reservation expires. When a Capacity
+ // Reservation expires, the reserved capacity is released and you can no longer
+ // launch instances into it. The Capacity Reservation's state changes to expired
+ // when it reaches its end date and time.
+ //
+ // The Capacity Reservation is cancelled within an hour from the specified time.
+ // For example, if you specify 5/31/2019, 13:30:55, the Capacity Reservation
+ // is guaranteed to end between 13:30:55 and 14:30:55 on 5/31/2019.
+ //
+ // You must provide an EndDate value if EndDateType is limited. Omit EndDate
+ // if EndDateType is unlimited.
+ EndDate *time.Time `type:"timestamp"`
+
+ // Indicates the way in which the Capacity Reservation ends. A Capacity Reservation
+ // can have one of the following end types:
+ //
+ // * unlimited - The Capacity Reservation remains active until you explicitly
+ // cancel it. Do not provide an EndDate value if EndDateType is unlimited.
+ //
+ // * limited - The Capacity Reservation expires automatically at a specified
+ // date and time. You must provide an EndDate value if EndDateType is limited.
+ EndDateType *string `type:"string" enum:"EndDateType"`
+
+ // The number of instances for which to reserve capacity.
+ InstanceCount *int64 `type:"integer"`
+}
+
+// String returns the string representation
+func (s ModifyCapacityReservationInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyCapacityReservationInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ModifyCapacityReservationInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ModifyCapacityReservationInput"}
+ if s.CapacityReservationId == nil {
+ invalidParams.Add(request.NewErrParamRequired("CapacityReservationId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCapacityReservationId sets the CapacityReservationId field's value.
+func (s *ModifyCapacityReservationInput) SetCapacityReservationId(v string) *ModifyCapacityReservationInput {
+ s.CapacityReservationId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ModifyCapacityReservationInput) SetDryRun(v bool) *ModifyCapacityReservationInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetEndDate sets the EndDate field's value.
+func (s *ModifyCapacityReservationInput) SetEndDate(v time.Time) *ModifyCapacityReservationInput {
+ s.EndDate = &v
+ return s
+}
+
+// SetEndDateType sets the EndDateType field's value.
+func (s *ModifyCapacityReservationInput) SetEndDateType(v string) *ModifyCapacityReservationInput {
+ s.EndDateType = &v
+ return s
+}
+
+// SetInstanceCount sets the InstanceCount field's value.
+func (s *ModifyCapacityReservationInput) SetInstanceCount(v int64) *ModifyCapacityReservationInput {
+ s.InstanceCount = &v
+ return s
+}
+
+type ModifyCapacityReservationOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Capacity Reservation.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s ModifyCapacityReservationOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyCapacityReservationOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *ModifyCapacityReservationOutput) SetReturn(v bool) *ModifyCapacityReservationOutput {
+ s.Return = &v
+ return s
+}
+
+type ModifyClientVpnEndpointInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint to modify.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Information about the client connection logging options.
+ //
+ // If you enable client connection logging, data about client connections is
+ // sent to a Cloudwatch Logs log stream. The following information is logged:
+ //
+ // * Client connection requests
+ //
+ // * Client connection results (successful and unsuccessful)
+ //
+ // * Reasons for unsuccessful client connection requests
+ //
+ // * Client connection termination time
+ ConnectionLogOptions *ConnectionLogOptions `type:"structure"`
+
+ // A brief description of the Client VPN endpoint.
+ Description *string `type:"string"`
+
+ // Information about the DNS servers to be used by Client VPN connections. A
+ // Client VPN endpoint can have up to two DNS servers.
+ DnsServers *DnsServersOptionsModifyStructure `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ARN of the server certificate to be used. The server certificate must
+ // be provisioned in AWS Certificate Manager (ACM).
+ ServerCertificateArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s ModifyClientVpnEndpointInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyClientVpnEndpointInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ModifyClientVpnEndpointInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ModifyClientVpnEndpointInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *ModifyClientVpnEndpointInput) SetClientVpnEndpointId(v string) *ModifyClientVpnEndpointInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetConnectionLogOptions sets the ConnectionLogOptions field's value.
+func (s *ModifyClientVpnEndpointInput) SetConnectionLogOptions(v *ConnectionLogOptions) *ModifyClientVpnEndpointInput {
+ s.ConnectionLogOptions = v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *ModifyClientVpnEndpointInput) SetDescription(v string) *ModifyClientVpnEndpointInput {
+ s.Description = &v
+ return s
+}
+
+// SetDnsServers sets the DnsServers field's value.
+func (s *ModifyClientVpnEndpointInput) SetDnsServers(v *DnsServersOptionsModifyStructure) *ModifyClientVpnEndpointInput {
+ s.DnsServers = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ModifyClientVpnEndpointInput) SetDryRun(v bool) *ModifyClientVpnEndpointInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetServerCertificateArn sets the ServerCertificateArn field's value.
+func (s *ModifyClientVpnEndpointInput) SetServerCertificateArn(v string) *ModifyClientVpnEndpointInput {
+ s.ServerCertificateArn = &v
+ return s
+}
+
+type ModifyClientVpnEndpointOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Returns true if the request succeeds; otherwise, it returns an error.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s ModifyClientVpnEndpointOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyClientVpnEndpointOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *ModifyClientVpnEndpointOutput) SetReturn(v bool) *ModifyClientVpnEndpointOutput {
+ s.Return = &v
+ return s
+}
+
type ModifyFleetInput struct {
_ struct{} `type:"structure"`
@@ -53804,7 +65533,6 @@ func (s *ModifyHostsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *ModifyHostsO
return s
}
-// Contains the parameters of ModifyIdFormat.
type ModifyIdFormatInput struct {
_ struct{} `type:"structure"`
@@ -53880,7 +65608,6 @@ func (s ModifyIdFormatOutput) GoString() string {
return s.String()
}
-// Contains the parameters of ModifyIdentityIdFormat.
type ModifyIdentityIdFormatInput struct {
_ struct{} `type:"structure"`
@@ -54115,7 +65842,6 @@ func (s ModifyImageAttributeOutput) GoString() string {
return s.String()
}
-// Contains the parameters for ModifyInstanceAttribute.
type ModifyInstanceAttributeInput struct {
_ struct{} `type:"structure"`
@@ -54129,7 +65855,7 @@ type ModifyInstanceAttributeInput struct {
//
// To add instance store volumes to an Amazon EBS-backed instance, you must
// add them when you launch the instance. For more information, see Updating
- // the Block Device Mapping when Launching an Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM)
+ // the Block Device Mapping when Launching an Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM)
// in the Amazon Elastic Compute Cloud User Guide.
BlockDeviceMappings []*InstanceBlockDeviceMappingSpecification `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"`
@@ -54172,18 +65898,18 @@ type ModifyInstanceAttributeInput struct {
InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"`
// Changes the instance type to the specified value. For more information, see
- // Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
+ // Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
// If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.
InstanceType *AttributeValue `locationName:"instanceType" type:"structure"`
// Changes the instance's kernel to the specified value. We recommend that you
// use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB
- // (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
+ // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
Kernel *AttributeValue `locationName:"kernel" type:"structure"`
// Changes the instance's RAM disk to the specified value. We recommend that
// you use PV-GRUB instead of kernels and RAM disks. For more information, see
- // PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
+ // PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html).
Ramdisk *AttributeValue `locationName:"ramdisk" type:"structure"`
// Specifies whether source/destination checking is enabled. A value of true
@@ -54345,12 +66071,99 @@ func (s ModifyInstanceAttributeOutput) GoString() string {
return s.String()
}
+type ModifyInstanceCapacityReservationAttributesInput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the Capacity Reservation targeting option.
+ //
+ // CapacityReservationSpecification is a required field
+ CapacityReservationSpecification *CapacityReservationSpecification `type:"structure" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the instance to be modified.
+ //
+ // InstanceId is a required field
+ InstanceId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ModifyInstanceCapacityReservationAttributesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyInstanceCapacityReservationAttributesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ModifyInstanceCapacityReservationAttributesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceCapacityReservationAttributesInput"}
+ if s.CapacityReservationSpecification == nil {
+ invalidParams.Add(request.NewErrParamRequired("CapacityReservationSpecification"))
+ }
+ if s.InstanceId == nil {
+ invalidParams.Add(request.NewErrParamRequired("InstanceId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
+func (s *ModifyInstanceCapacityReservationAttributesInput) SetCapacityReservationSpecification(v *CapacityReservationSpecification) *ModifyInstanceCapacityReservationAttributesInput {
+ s.CapacityReservationSpecification = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ModifyInstanceCapacityReservationAttributesInput) SetDryRun(v bool) *ModifyInstanceCapacityReservationAttributesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetInstanceId sets the InstanceId field's value.
+func (s *ModifyInstanceCapacityReservationAttributesInput) SetInstanceId(v string) *ModifyInstanceCapacityReservationAttributesInput {
+ s.InstanceId = &v
+ return s
+}
+
+type ModifyInstanceCapacityReservationAttributesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Returns true if the request succeeds; otherwise, it returns an error.
+ Return *bool `locationName:"return" type:"boolean"`
+}
+
+// String returns the string representation
+func (s ModifyInstanceCapacityReservationAttributesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyInstanceCapacityReservationAttributesOutput) GoString() string {
+ return s.String()
+}
+
+// SetReturn sets the Return field's value.
+func (s *ModifyInstanceCapacityReservationAttributesOutput) SetReturn(v bool) *ModifyInstanceCapacityReservationAttributesOutput {
+ s.Return = &v
+ return s
+}
+
type ModifyInstanceCreditSpecificationInput struct {
_ struct{} `type:"structure"`
// A unique, case-sensitive token that you provide to ensure idempotency of
// your modification request. For more information, see Ensuring Idempotency
- // (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// Checks whether you have the required permissions for the action, without
@@ -54448,7 +66261,8 @@ type ModifyInstancePlacementInput struct {
// The name of the placement group in which to place the instance. For spread
// placement groups, the instance must have a tenancy of default. For cluster
- // placement groups, the instance must have a tenancy of default or dedicated.
+ // and partition placement groups, the instance must have a tenancy of default
+ // or dedicated.
//
// To remove an instance from a placement group, specify an empty string ("").
GroupName *string `type:"string"`
@@ -54461,6 +66275,9 @@ type ModifyInstancePlacementInput struct {
// InstanceId is a required field
InstanceId *string `locationName:"instanceId" type:"string" required:"true"`
+ // Reserved for future use.
+ PartitionNumber *int64 `type:"integer"`
+
// The tenancy for the instance.
Tenancy *string `locationName:"tenancy" type:"string" enum:"HostTenancy"`
}
@@ -54512,6 +66329,12 @@ func (s *ModifyInstancePlacementInput) SetInstanceId(v string) *ModifyInstancePl
return s
}
+// SetPartitionNumber sets the PartitionNumber field's value.
+func (s *ModifyInstancePlacementInput) SetPartitionNumber(v int64) *ModifyInstancePlacementInput {
+ s.PartitionNumber = &v
+ return s
+}
+
// SetTenancy sets the Tenancy field's value.
func (s *ModifyInstancePlacementInput) SetTenancy(v string) *ModifyInstancePlacementInput {
s.Tenancy = &v
@@ -54545,7 +66368,7 @@ type ModifyLaunchTemplateInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// The version number of the launch template to set as the default version.
@@ -54673,7 +66496,7 @@ type ModifyNetworkInterfaceAttributeInput struct {
// Indicates whether source/destination checking is enabled. A value of true
// means checking is enabled, and false means checking is disabled. This value
// must be false for a NAT instance to perform NAT. For more information, see
- // NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
+ // NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
// in the Amazon Virtual Private Cloud User Guide.
SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"`
}
@@ -54756,7 +66579,7 @@ type ModifyReservedInstancesInput struct {
_ struct{} `type:"structure"`
// A unique, case-sensitive token you provide to ensure idempotency of your
- // modification request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // modification request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `locationName:"clientToken" type:"string"`
// The IDs of the Reserved Instances to modify.
@@ -55112,6 +66935,140 @@ func (s ModifySubnetAttributeOutput) GoString() string {
return s.String()
}
+type ModifyTransitGatewayVpcAttachmentInput struct {
+ _ struct{} `type:"structure"`
+
+ // The IDs of one or more subnets to add. You can specify at most one subnet
+ // per Availability Zone.
+ AddSubnetIds []*string `locationNameList:"item" type:"list"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The new VPC attachment options.
+ Options *ModifyTransitGatewayVpcAttachmentRequestOptions `type:"structure"`
+
+ // The IDs of one or more subnets to remove.
+ RemoveSubnetIds []*string `locationNameList:"item" type:"list"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ModifyTransitGatewayVpcAttachmentInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ModifyTransitGatewayVpcAttachmentInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAddSubnetIds sets the AddSubnetIds field's value.
+func (s *ModifyTransitGatewayVpcAttachmentInput) SetAddSubnetIds(v []*string) *ModifyTransitGatewayVpcAttachmentInput {
+ s.AddSubnetIds = v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ModifyTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *ModifyTransitGatewayVpcAttachmentInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetOptions sets the Options field's value.
+func (s *ModifyTransitGatewayVpcAttachmentInput) SetOptions(v *ModifyTransitGatewayVpcAttachmentRequestOptions) *ModifyTransitGatewayVpcAttachmentInput {
+ s.Options = v
+ return s
+}
+
+// SetRemoveSubnetIds sets the RemoveSubnetIds field's value.
+func (s *ModifyTransitGatewayVpcAttachmentInput) SetRemoveSubnetIds(v []*string) *ModifyTransitGatewayVpcAttachmentInput {
+ s.RemoveSubnetIds = v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *ModifyTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *ModifyTransitGatewayVpcAttachmentInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+type ModifyTransitGatewayVpcAttachmentOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the modified attachment.
+ TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"`
+}
+
+// String returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value.
+func (s *ModifyTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *ModifyTransitGatewayVpcAttachmentOutput {
+ s.TransitGatewayVpcAttachment = v
+ return s
+}
+
+// Describes the options for a VPC attachment.
+type ModifyTransitGatewayVpcAttachmentRequestOptions struct {
+ _ struct{} `type:"structure"`
+
+ // Enable or disable DNS support. The default is enable.
+ DnsSupport *string `type:"string" enum:"DnsSupportValue"`
+
+ // Enable or disable IPv6 support. The default is enable.
+ Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"`
+}
+
+// String returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentRequestOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ModifyTransitGatewayVpcAttachmentRequestOptions) GoString() string {
+ return s.String()
+}
+
+// SetDnsSupport sets the DnsSupport field's value.
+func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetDnsSupport(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions {
+ s.DnsSupport = &v
+ return s
+}
+
+// SetIpv6Support sets the Ipv6Support field's value.
+func (s *ModifyTransitGatewayVpcAttachmentRequestOptions) SetIpv6Support(v string) *ModifyTransitGatewayVpcAttachmentRequestOptions {
+ s.Ipv6Support = &v
+ return s
+}
+
// Contains the parameters for ModifyVolumeAttribute.
type ModifyVolumeAttributeInput struct {
_ struct{} `type:"structure"`
@@ -55198,14 +67155,14 @@ type ModifyVolumeInput struct {
// The target IOPS rate of the volume.
//
// This is only valid for Provisioned IOPS SSD (io1) volumes. For more information,
- // see Provisioned IOPS SSD (io1) Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_piops).
+ // see Provisioned IOPS SSD (io1) Volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_piops).
//
// Default: If no IOPS value is specified, the existing value is retained.
Iops *int64 `type:"integer"`
// The target size of the volume, in GiB. The target volume size must be greater
// than or equal to than the existing size of the volume. For information about
- // available EBS volume sizes, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html).
+ // available EBS volume sizes, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html).
//
// Default: If no size is specified, the existing size is retained.
Size *int64 `type:"integer"`
@@ -56014,7 +67971,6 @@ func (s *ModifyVpcTenancyOutput) SetReturnValue(v bool) *ModifyVpcTenancyOutput
return s
}
-// Contains the parameters for MonitorInstances.
type MonitorInstancesInput struct {
_ struct{} `type:"structure"`
@@ -56065,7 +68021,6 @@ func (s *MonitorInstancesInput) SetInstanceIds(v []*string) *MonitorInstancesInp
return s
}
-// Contains the output of MonitorInstances.
type MonitorInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -56114,7 +68069,6 @@ func (s *Monitoring) SetState(v string) *Monitoring {
return s
}
-// Contains the parameters for MoveAddressToVpc.
type MoveAddressToVpcInput struct {
_ struct{} `type:"structure"`
@@ -56165,7 +68119,6 @@ func (s *MoveAddressToVpcInput) SetPublicIp(v string) *MoveAddressToVpcInput {
return s
}
-// Contains the output of MoveAddressToVpc.
type MoveAddressToVpcOutput struct {
_ struct{} `type:"structure"`
@@ -56277,7 +68230,7 @@ type NatGateway struct {
NatGatewayId *string `locationName:"natGatewayId" type:"string"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
ProvisionedBandwidth *ProvisionedBandwidth `locationName:"provisionedBandwidth" type:"structure"`
@@ -56454,6 +68407,9 @@ type NetworkAcl struct {
// The ID of the network ACL.
NetworkAclId *string `locationName:"networkAclId" type:"string"`
+ // The ID of the AWS account that owns the network ACL.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// Any tags assigned to the network ACL.
Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
@@ -56495,6 +68451,12 @@ func (s *NetworkAcl) SetNetworkAclId(v string) *NetworkAcl {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *NetworkAcl) SetOwnerId(v string) *NetworkAcl {
+ s.OwnerId = &v
+ return s
+}
+
// SetTags sets the Tags field's value.
func (s *NetworkAcl) SetTags(v []*Tag) *NetworkAcl {
s.Tags = v
@@ -56569,7 +68531,7 @@ type NetworkAclEntry struct {
// TCP or UDP protocols: The range of ports the rule applies to.
PortRange *PortRange `locationName:"portRange" type:"structure"`
- // The protocol. A value of -1 means all protocols.
+ // The protocol number. A value of "-1" means all protocols.
Protocol *string `locationName:"protocol" type:"string"`
// Indicates whether to allow or deny the traffic that matches the rule.
@@ -57226,6 +69188,18 @@ type OnDemandOptions struct {
// launching the highest priority first. If you do not specify a value, EC2
// Fleet defaults to lowest-price.
AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"FleetOnDemandAllocationStrategy"`
+
+ // The minimum target capacity for On-Demand Instances in the fleet. If the
+ // minimum target capacity is not reached, the fleet launches no instances.
+ MinTargetCapacity *int64 `locationName:"minTargetCapacity" type:"integer"`
+
+ // Indicates that the fleet launches all On-Demand Instances into a single Availability
+ // Zone.
+ SingleAvailabilityZone *bool `locationName:"singleAvailabilityZone" type:"boolean"`
+
+ // Indicates that the fleet uses a single instance type to launch all On-Demand
+ // Instances in the fleet.
+ SingleInstanceType *bool `locationName:"singleInstanceType" type:"boolean"`
}
// String returns the string representation
@@ -57244,6 +69218,24 @@ func (s *OnDemandOptions) SetAllocationStrategy(v string) *OnDemandOptions {
return s
}
+// SetMinTargetCapacity sets the MinTargetCapacity field's value.
+func (s *OnDemandOptions) SetMinTargetCapacity(v int64) *OnDemandOptions {
+ s.MinTargetCapacity = &v
+ return s
+}
+
+// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value.
+func (s *OnDemandOptions) SetSingleAvailabilityZone(v bool) *OnDemandOptions {
+ s.SingleAvailabilityZone = &v
+ return s
+}
+
+// SetSingleInstanceType sets the SingleInstanceType field's value.
+func (s *OnDemandOptions) SetSingleInstanceType(v bool) *OnDemandOptions {
+ s.SingleInstanceType = &v
+ return s
+}
+
// The allocation strategy of On-Demand Instances in an EC2 Fleet.
type OnDemandOptionsRequest struct {
_ struct{} `type:"structure"`
@@ -57255,6 +69247,18 @@ type OnDemandOptionsRequest struct {
// launching the highest priority first. If you do not specify a value, EC2
// Fleet defaults to lowest-price.
AllocationStrategy *string `type:"string" enum:"FleetOnDemandAllocationStrategy"`
+
+ // The minimum target capacity for On-Demand Instances in the fleet. If the
+ // minimum target capacity is not reached, the fleet launches no instances.
+ MinTargetCapacity *int64 `type:"integer"`
+
+ // Indicates that the fleet launches all On-Demand Instances into a single Availability
+ // Zone.
+ SingleAvailabilityZone *bool `type:"boolean"`
+
+ // Indicates that the fleet uses a single instance type to launch all On-Demand
+ // Instances in the fleet.
+ SingleInstanceType *bool `type:"boolean"`
}
// String returns the string representation
@@ -57273,6 +69277,24 @@ func (s *OnDemandOptionsRequest) SetAllocationStrategy(v string) *OnDemandOption
return s
}
+// SetMinTargetCapacity sets the MinTargetCapacity field's value.
+func (s *OnDemandOptionsRequest) SetMinTargetCapacity(v int64) *OnDemandOptionsRequest {
+ s.MinTargetCapacity = &v
+ return s
+}
+
+// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value.
+func (s *OnDemandOptionsRequest) SetSingleAvailabilityZone(v bool) *OnDemandOptionsRequest {
+ s.SingleAvailabilityZone = &v
+ return s
+}
+
+// SetSingleInstanceType sets the SingleInstanceType field's value.
+func (s *OnDemandOptionsRequest) SetSingleInstanceType(v bool) *OnDemandOptionsRequest {
+ s.SingleInstanceType = &v
+ return s
+}
+
// Describes the data that identifies an Amazon FPGA image (AFI) on the PCI
// bus.
type PciId struct {
@@ -57433,6 +69455,10 @@ type Placement struct {
// is not supported for the ImportInstance command.
HostId *string `locationName:"hostId" type:"string"`
+ // The number of the partition the instance is in. Valid only if the placement
+ // group strategy is set to partition.
+ PartitionNumber *int64 `locationName:"partitionNumber" type:"integer"`
+
// Reserved for future use.
SpreadDomain *string `locationName:"spreadDomain" type:"string"`
@@ -57476,6 +69502,12 @@ func (s *Placement) SetHostId(v string) *Placement {
return s
}
+// SetPartitionNumber sets the PartitionNumber field's value.
+func (s *Placement) SetPartitionNumber(v int64) *Placement {
+ s.PartitionNumber = &v
+ return s
+}
+
// SetSpreadDomain sets the SpreadDomain field's value.
func (s *Placement) SetSpreadDomain(v string) *Placement {
s.SpreadDomain = &v
@@ -57495,6 +69527,9 @@ type PlacementGroup struct {
// The name of the placement group.
GroupName *string `locationName:"groupName" type:"string"`
+ // The number of partitions. Valid only if strategy is set to partition.
+ PartitionCount *int64 `locationName:"partitionCount" type:"integer"`
+
// The state of the placement group.
State *string `locationName:"state" type:"string" enum:"PlacementGroupState"`
@@ -57518,6 +69553,12 @@ func (s *PlacementGroup) SetGroupName(v string) *PlacementGroup {
return s
}
+// SetPartitionCount sets the PartitionCount field's value.
+func (s *PlacementGroup) SetPartitionCount(v int64) *PlacementGroup {
+ s.PartitionCount = &v
+ return s
+}
+
// SetState sets the State field's value.
func (s *PlacementGroup) SetState(v string) *PlacementGroup {
s.State = &v
@@ -57530,6 +69571,30 @@ func (s *PlacementGroup) SetStrategy(v string) *PlacementGroup {
return s
}
+// Describes the placement of an instance.
+type PlacementResponse struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the placement group the instance is in.
+ GroupName *string `locationName:"groupName" type:"string"`
+}
+
+// String returns the string representation
+func (s PlacementResponse) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s PlacementResponse) GoString() string {
+ return s.String()
+}
+
+// SetGroupName sets the GroupName field's value.
+func (s *PlacementResponse) SetGroupName(v string) *PlacementResponse {
+ s.GroupName = &v
+ return s
+}
+
// Describes a range of ports.
type PortRange struct {
_ struct{} `type:"structure"`
@@ -57905,34 +69970,133 @@ func (s *PropagatingVgw) SetGatewayId(v string) *PropagatingVgw {
return s
}
+type ProvisionByoipCidrInput struct {
+ _ struct{} `type:"structure"`
+
+ // The public IPv4 address range, in CIDR notation. The most specific prefix
+ // that you can specify is /24. The address range cannot overlap with another
+ // address range that you've brought to this or another region.
+ //
+ // Cidr is a required field
+ Cidr *string `type:"string" required:"true"`
+
+ // A signed document that proves that you are authorized to bring the specified
+ // IP address range to Amazon using BYOIP.
+ CidrAuthorizationContext *CidrAuthorizationContext `type:"structure"`
+
+ // A description for the address range and the address pool.
+ Description *string `type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s ProvisionByoipCidrInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ProvisionByoipCidrInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ProvisionByoipCidrInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ProvisionByoipCidrInput"}
+ if s.Cidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("Cidr"))
+ }
+ if s.CidrAuthorizationContext != nil {
+ if err := s.CidrAuthorizationContext.Validate(); err != nil {
+ invalidParams.AddNested("CidrAuthorizationContext", err.(request.ErrInvalidParams))
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCidr sets the Cidr field's value.
+func (s *ProvisionByoipCidrInput) SetCidr(v string) *ProvisionByoipCidrInput {
+ s.Cidr = &v
+ return s
+}
+
+// SetCidrAuthorizationContext sets the CidrAuthorizationContext field's value.
+func (s *ProvisionByoipCidrInput) SetCidrAuthorizationContext(v *CidrAuthorizationContext) *ProvisionByoipCidrInput {
+ s.CidrAuthorizationContext = v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *ProvisionByoipCidrInput) SetDescription(v string) *ProvisionByoipCidrInput {
+ s.Description = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ProvisionByoipCidrInput) SetDryRun(v bool) *ProvisionByoipCidrInput {
+ s.DryRun = &v
+ return s
+}
+
+type ProvisionByoipCidrOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the address pool.
+ ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"`
+}
+
+// String returns the string representation
+func (s ProvisionByoipCidrOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ProvisionByoipCidrOutput) GoString() string {
+ return s.String()
+}
+
+// SetByoipCidr sets the ByoipCidr field's value.
+func (s *ProvisionByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *ProvisionByoipCidrOutput {
+ s.ByoipCidr = v
+ return s
+}
+
// Reserved. If you need to sustain traffic greater than the documented limits
-// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+// (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
type ProvisionedBandwidth struct {
_ struct{} `type:"structure"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
ProvisionTime *time.Time `locationName:"provisionTime" type:"timestamp"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
Provisioned *string `locationName:"provisioned" type:"string"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
RequestTime *time.Time `locationName:"requestTime" type:"timestamp"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
Requested *string `locationName:"requested" type:"string"`
// Reserved. If you need to sustain traffic greater than the documented limits
- // (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
+ // (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html),
// contact us through the Support Center (https://console.aws.amazon.com/support/home?).
Status *string `locationName:"status" type:"string"`
}
@@ -57977,6 +70141,117 @@ func (s *ProvisionedBandwidth) SetStatus(v string) *ProvisionedBandwidth {
return s
}
+// Describes an address pool.
+type PublicIpv4Pool struct {
+ _ struct{} `type:"structure"`
+
+ // A description of the address pool.
+ Description *string `locationName:"description" type:"string"`
+
+ // The address ranges.
+ PoolAddressRanges []*PublicIpv4PoolRange `locationName:"poolAddressRangeSet" locationNameList:"item" type:"list"`
+
+ // The ID of the IPv4 address pool.
+ PoolId *string `locationName:"poolId" type:"string"`
+
+ // The total number of addresses.
+ TotalAddressCount *int64 `locationName:"totalAddressCount" type:"integer"`
+
+ // The total number of available addresses.
+ TotalAvailableAddressCount *int64 `locationName:"totalAvailableAddressCount" type:"integer"`
+}
+
+// String returns the string representation
+func (s PublicIpv4Pool) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s PublicIpv4Pool) GoString() string {
+ return s.String()
+}
+
+// SetDescription sets the Description field's value.
+func (s *PublicIpv4Pool) SetDescription(v string) *PublicIpv4Pool {
+ s.Description = &v
+ return s
+}
+
+// SetPoolAddressRanges sets the PoolAddressRanges field's value.
+func (s *PublicIpv4Pool) SetPoolAddressRanges(v []*PublicIpv4PoolRange) *PublicIpv4Pool {
+ s.PoolAddressRanges = v
+ return s
+}
+
+// SetPoolId sets the PoolId field's value.
+func (s *PublicIpv4Pool) SetPoolId(v string) *PublicIpv4Pool {
+ s.PoolId = &v
+ return s
+}
+
+// SetTotalAddressCount sets the TotalAddressCount field's value.
+func (s *PublicIpv4Pool) SetTotalAddressCount(v int64) *PublicIpv4Pool {
+ s.TotalAddressCount = &v
+ return s
+}
+
+// SetTotalAvailableAddressCount sets the TotalAvailableAddressCount field's value.
+func (s *PublicIpv4Pool) SetTotalAvailableAddressCount(v int64) *PublicIpv4Pool {
+ s.TotalAvailableAddressCount = &v
+ return s
+}
+
+// Describes an address range of an IPv4 address pool.
+type PublicIpv4PoolRange struct {
+ _ struct{} `type:"structure"`
+
+ // The number of addresses in the range.
+ AddressCount *int64 `locationName:"addressCount" type:"integer"`
+
+ // The number of available addresses in the range.
+ AvailableAddressCount *int64 `locationName:"availableAddressCount" type:"integer"`
+
+ // The first IP address in the range.
+ FirstAddress *string `locationName:"firstAddress" type:"string"`
+
+ // The last IP address in the range.
+ LastAddress *string `locationName:"lastAddress" type:"string"`
+}
+
+// String returns the string representation
+func (s PublicIpv4PoolRange) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s PublicIpv4PoolRange) GoString() string {
+ return s.String()
+}
+
+// SetAddressCount sets the AddressCount field's value.
+func (s *PublicIpv4PoolRange) SetAddressCount(v int64) *PublicIpv4PoolRange {
+ s.AddressCount = &v
+ return s
+}
+
+// SetAvailableAddressCount sets the AvailableAddressCount field's value.
+func (s *PublicIpv4PoolRange) SetAvailableAddressCount(v int64) *PublicIpv4PoolRange {
+ s.AvailableAddressCount = &v
+ return s
+}
+
+// SetFirstAddress sets the FirstAddress field's value.
+func (s *PublicIpv4PoolRange) SetFirstAddress(v string) *PublicIpv4PoolRange {
+ s.FirstAddress = &v
+ return s
+}
+
+// SetLastAddress sets the LastAddress field's value.
+func (s *PublicIpv4PoolRange) SetLastAddress(v string) *PublicIpv4PoolRange {
+ s.LastAddress = &v
+ return s
+}
+
// Describes the result of the purchase.
type Purchase struct {
_ struct{} `type:"structure"`
@@ -58070,7 +70345,7 @@ type PurchaseHostReservationInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure idempotency of the
- // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide.
ClientToken *string `type:"string"`
@@ -58157,7 +70432,7 @@ type PurchaseHostReservationOutput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier you provide to ensure idempotency of the
- // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide.
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -58373,7 +70648,7 @@ type PurchaseScheduledInstancesInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that ensures the idempotency of the request.
- // For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string" idempotencyToken:"true"`
// Checks whether you have the required permissions for the action, without
@@ -58466,7 +70741,6 @@ func (s *PurchaseScheduledInstancesOutput) SetScheduledInstanceSet(v []*Schedule
return s
}
-// Contains the parameters for RebootInstances.
type RebootInstancesInput struct {
_ struct{} `type:"structure"`
@@ -58793,6 +71067,79 @@ func (s *RegisterImageOutput) SetImageId(v string) *RegisterImageOutput {
return s
}
+type RejectTransitGatewayVpcAttachmentInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ //
+ // TransitGatewayAttachmentId is a required field
+ TransitGatewayAttachmentId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s RejectTransitGatewayVpcAttachmentInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RejectTransitGatewayVpcAttachmentInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *RejectTransitGatewayVpcAttachmentInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "RejectTransitGatewayVpcAttachmentInput"}
+ if s.TransitGatewayAttachmentId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *RejectTransitGatewayVpcAttachmentInput) SetDryRun(v bool) *RejectTransitGatewayVpcAttachmentInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *RejectTransitGatewayVpcAttachmentInput) SetTransitGatewayAttachmentId(v string) *RejectTransitGatewayVpcAttachmentInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+type RejectTransitGatewayVpcAttachmentOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the attachment.
+ TransitGatewayVpcAttachment *TransitGatewayVpcAttachment `locationName:"transitGatewayVpcAttachment" type:"structure"`
+}
+
+// String returns the string representation
+func (s RejectTransitGatewayVpcAttachmentOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RejectTransitGatewayVpcAttachmentOutput) GoString() string {
+ return s.String()
+}
+
+// SetTransitGatewayVpcAttachment sets the TransitGatewayVpcAttachment field's value.
+func (s *RejectTransitGatewayVpcAttachmentOutput) SetTransitGatewayVpcAttachment(v *TransitGatewayVpcAttachment) *RejectTransitGatewayVpcAttachmentOutput {
+ s.TransitGatewayVpcAttachment = v
+ return s
+}
+
type RejectVpcEndpointConnectionsInput struct {
_ struct{} `type:"structure"`
@@ -58953,7 +71300,6 @@ func (s *RejectVpcPeeringConnectionOutput) SetReturn(v bool) *RejectVpcPeeringCo
return s
}
-// Contains the parameters for ReleaseAddress.
type ReleaseAddressInput struct {
_ struct{} `type:"structure"`
@@ -59265,8 +71611,8 @@ type ReplaceNetworkAclEntryInput struct {
// Egress is a required field
Egress *bool `locationName:"egress" type:"boolean" required:"true"`
- // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying the
- // ICMP (1) protocol, or protocol 58 (ICMPv6) with an IPv6 CIDR block.
+ // ICMP protocol: The ICMP or ICMPv6 type and code. Required if specifying protocol
+ // 1 (ICMP) or protocol 58 (ICMPv6) with an IPv6 CIDR block.
IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"`
// The IPv6 network range to allow or deny, in CIDR notation (for example 2001:bd8:1234:1a00::/64).
@@ -59278,16 +71624,16 @@ type ReplaceNetworkAclEntryInput struct {
NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"`
// TCP or UDP protocols: The range of ports the rule applies to. Required if
- // specifying TCP (6) or UDP (17) for the protocol.
+ // specifying protocol 6 (TCP) or 17 (UDP).
PortRange *PortRange `locationName:"portRange" type:"structure"`
- // The IP protocol. You can specify all or -1 to mean all protocols. If you
- // specify all, -1, or a protocol number other than tcp, udp, or icmp, traffic
- // on all ports is allowed, regardless of any ports or ICMP types or codes you
- // that specify. If you specify protocol 58 (ICMPv6) and specify an IPv4 CIDR
- // block, traffic for all ICMP types and codes allowed, regardless of any that
- // you specify. If you specify protocol 58 (ICMPv6) and specify an IPv6 CIDR
- // block, you must specify an ICMP type and code.
+ // The protocol number. A value of "-1" means all protocols. If you specify
+ // "-1" or a protocol number other than "6" (TCP), "17" (UDP), or "1" (ICMP),
+ // traffic on all ports is allowed, regardless of any ports or ICMP types or
+ // codes that you specify. If you specify protocol "58" (ICMPv6) and specify
+ // an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless
+ // of any that you specify. If you specify protocol "58" (ICMPv6) and specify
+ // an IPv6 CIDR block, you must specify an ICMP type and code.
//
// Protocol is a required field
Protocol *string `locationName:"protocol" type:"string" required:"true"`
@@ -59449,6 +71795,9 @@ type ReplaceRouteInput struct {
// RouteTableId is a required field
RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"`
+ // The ID of a transit gateway.
+ TransitGatewayId *string `type:"string"`
+
// The ID of a VPC peering connection.
VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
}
@@ -59530,6 +71879,12 @@ func (s *ReplaceRouteInput) SetRouteTableId(v string) *ReplaceRouteInput {
return s
}
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *ReplaceRouteInput) SetTransitGatewayId(v string) *ReplaceRouteInput {
+ s.TransitGatewayId = &v
+ return s
+}
+
// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *ReplaceRouteInput) SetVpcPeeringConnectionId(v string) *ReplaceRouteInput {
s.VpcPeeringConnectionId = &v
@@ -59637,7 +71992,112 @@ func (s *ReplaceRouteTableAssociationOutput) SetNewAssociationId(v string) *Repl
return s
}
-// Contains the parameters for ReportInstanceStatus.
+type ReplaceTransitGatewayRouteInput struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether traffic matching this route is to be dropped.
+ Blackhole *bool `type:"boolean"`
+
+ // The CIDR range used for the destination match. Routing decisions are based
+ // on the most specific match.
+ //
+ // DestinationCidrBlock is a required field
+ DestinationCidrBlock *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `type:"string"`
+
+ // The ID of the route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s ReplaceTransitGatewayRouteInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ReplaceTransitGatewayRouteInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ReplaceTransitGatewayRouteInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "ReplaceTransitGatewayRouteInput"}
+ if s.DestinationCidrBlock == nil {
+ invalidParams.Add(request.NewErrParamRequired("DestinationCidrBlock"))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetBlackhole sets the Blackhole field's value.
+func (s *ReplaceTransitGatewayRouteInput) SetBlackhole(v bool) *ReplaceTransitGatewayRouteInput {
+ s.Blackhole = &v
+ return s
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *ReplaceTransitGatewayRouteInput) SetDestinationCidrBlock(v string) *ReplaceTransitGatewayRouteInput {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *ReplaceTransitGatewayRouteInput) SetDryRun(v bool) *ReplaceTransitGatewayRouteInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *ReplaceTransitGatewayRouteInput) SetTransitGatewayAttachmentId(v string) *ReplaceTransitGatewayRouteInput {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *ReplaceTransitGatewayRouteInput) SetTransitGatewayRouteTableId(v string) *ReplaceTransitGatewayRouteInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type ReplaceTransitGatewayRouteOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the modified route.
+ Route *TransitGatewayRoute `locationName:"route" type:"structure"`
+}
+
+// String returns the string representation
+func (s ReplaceTransitGatewayRouteOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ReplaceTransitGatewayRouteOutput) GoString() string {
+ return s.String()
+}
+
+// SetRoute sets the Route field's value.
+func (s *ReplaceTransitGatewayRouteOutput) SetRoute(v *TransitGatewayRoute) *ReplaceTransitGatewayRouteOutput {
+ s.Route = v
+ return s
+}
+
type ReportInstanceStatusInput struct {
_ struct{} `type:"structure"`
@@ -59791,8 +72251,14 @@ type RequestLaunchTemplateData struct {
// cannot be changed using this action.
BlockDeviceMappings []*LaunchTemplateBlockDeviceMappingRequest `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
+ // The Capacity Reservation targeting option. If you do not specify this parameter,
+ // the instance's Capacity Reservation preference defaults to open, which enables
+ // it to run in any open Capacity Reservation that has matching attributes (instance
+ // type, platform, Availability Zone).
+ CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecificationRequest `type:"structure"`
+
// The CPU options for the instance. For more information, see Optimizing CPU
- // Options (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
+ // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
// in the Amazon Elastic Compute Cloud User Guide.
CpuOptions *LaunchTemplateCpuOptionsRequest `type:"structure"`
@@ -59814,6 +72280,16 @@ type RequestLaunchTemplateData struct {
// An elastic GPU to associate with the instance.
ElasticGpuSpecifications []*ElasticGpuSpecification `locationName:"ElasticGpuSpecification" locationNameList:"ElasticGpuSpecification" type:"list"`
+ // The elastic inference accelerator for the instance.
+ ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"`
+
+ // Indicates whether an instance is enabled for hibernation. This parameter
+ // is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites).
+ // Hibernation is currently supported only for Amazon Linux. For more information,
+ // see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ HibernationOptions *LaunchTemplateHibernationOptionsRequest `type:"structure"`
+
// The IAM instance profile.
IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecificationRequest `type:"structure"`
@@ -59829,14 +72305,14 @@ type RequestLaunchTemplateData struct {
// The market (purchasing) option for the instances.
InstanceMarketOptions *LaunchTemplateInstanceMarketOptionsRequest `type:"structure"`
- // The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
+ // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
// in the Amazon Elastic Compute Cloud User Guide.
InstanceType *string `type:"string" enum:"InstanceType"`
// The ID of the kernel.
//
// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more
- // information, see User Provided Kernels (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
+ // information, see User Provided Kernels (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
// in the Amazon Elastic Compute Cloud User Guide.
KernelId *string `type:"string"`
@@ -59847,6 +72323,9 @@ type RequestLaunchTemplateData struct {
// you choose an AMI that is configured to allow users another way to log in.
KeyName *string `type:"string"`
+ // The license configurations.
+ LicenseSpecifications []*LaunchTemplateLicenseConfigurationRequest `locationName:"LicenseSpecification" locationNameList:"item" type:"list"`
+
// The monitoring for the instance.
Monitoring *LaunchTemplatesMonitoringRequest `type:"structure"`
@@ -59859,7 +72338,7 @@ type RequestLaunchTemplateData struct {
// The ID of the RAM disk.
//
// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more
- // information, see User Provided Kernels (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
+ // information, see User Provided Kernels (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
// in the Amazon Elastic Compute Cloud User Guide.
RamDiskId *string `type:"string"`
@@ -59880,8 +72359,8 @@ type RequestLaunchTemplateData struct {
TagSpecifications []*LaunchTemplateTagSpecificationRequest `locationName:"TagSpecification" locationNameList:"LaunchTemplateTagSpecificationRequest" type:"list"`
// The Base64-encoded user data to make available to the instance. For more
- // information, see Running Commands on Your Linux Instance at Launch (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
- // (Linux) and Adding User Data (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data)
+ // information, see Running Commands on Your Linux Instance at Launch (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
+ // (Linux) and Adding User Data (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data)
// (Windows).
UserData *string `type:"string"`
}
@@ -59914,6 +72393,16 @@ func (s *RequestLaunchTemplateData) Validate() error {
}
}
}
+ if s.ElasticInferenceAccelerators != nil {
+ for i, v := range s.ElasticInferenceAccelerators {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticInferenceAccelerators", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
if invalidParams.Len() > 0 {
return invalidParams
@@ -59927,6 +72416,12 @@ func (s *RequestLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateBl
return s
}
+// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
+func (s *RequestLaunchTemplateData) SetCapacityReservationSpecification(v *LaunchTemplateCapacityReservationSpecificationRequest) *RequestLaunchTemplateData {
+ s.CapacityReservationSpecification = v
+ return s
+}
+
// SetCpuOptions sets the CpuOptions field's value.
func (s *RequestLaunchTemplateData) SetCpuOptions(v *LaunchTemplateCpuOptionsRequest) *RequestLaunchTemplateData {
s.CpuOptions = v
@@ -59957,6 +72452,18 @@ func (s *RequestLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpuS
return s
}
+// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value.
+func (s *RequestLaunchTemplateData) SetElasticInferenceAccelerators(v []*LaunchTemplateElasticInferenceAccelerator) *RequestLaunchTemplateData {
+ s.ElasticInferenceAccelerators = v
+ return s
+}
+
+// SetHibernationOptions sets the HibernationOptions field's value.
+func (s *RequestLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptionsRequest) *RequestLaunchTemplateData {
+ s.HibernationOptions = v
+ return s
+}
+
// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *RequestLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecificationRequest) *RequestLaunchTemplateData {
s.IamInstanceProfile = v
@@ -59999,6 +72506,12 @@ func (s *RequestLaunchTemplateData) SetKeyName(v string) *RequestLaunchTemplateD
return s
}
+// SetLicenseSpecifications sets the LicenseSpecifications field's value.
+func (s *RequestLaunchTemplateData) SetLicenseSpecifications(v []*LaunchTemplateLicenseConfigurationRequest) *RequestLaunchTemplateData {
+ s.LicenseSpecifications = v
+ return s
+}
+
// SetMonitoring sets the Monitoring field's value.
func (s *RequestLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoringRequest) *RequestLaunchTemplateData {
s.Monitoring = v
@@ -60108,9 +72621,7 @@ type RequestSpotFleetOutput struct {
_ struct{} `type:"structure"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
}
// String returns the string representation
@@ -60168,7 +72679,7 @@ type RequestSpotInstancesInput struct {
BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
- // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
+ // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon EC2 User Guide for Linux Instances.
ClientToken *string `locationName:"clientToken" type:"string"`
@@ -60886,6 +73397,8 @@ type ReservedInstancesConfiguration struct {
AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
// The number of modified Reserved Instances.
+ //
+ // This is a required field for a request.
InstanceCount *int64 `locationName:"instanceCount" type:"integer"`
// The instance type for the modified Reserved Instances.
@@ -60969,7 +73482,7 @@ type ReservedInstancesListing struct {
_ struct{} `type:"structure"`
// A unique, case-sensitive key supplied by the client to ensure that the request
- // is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // is idempotent. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `locationName:"clientToken" type:"string"`
// The time the listing was created.
@@ -61076,7 +73589,7 @@ type ReservedInstancesModification struct {
_ struct{} `type:"structure"`
// A unique, case-sensitive key supplied by the client to ensure that the request
- // is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // is idempotent. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `locationName:"clientToken" type:"string"`
// The time when the modification request was created.
@@ -61524,7 +74037,6 @@ func (s ResetImageAttributeOutput) GoString() string {
return s.String()
}
-// Contains the parameters for ResetInstanceAttribute.
type ResetInstanceAttributeInput struct {
_ struct{} `type:"structure"`
@@ -61801,8 +74313,11 @@ type ResponseLaunchTemplateData struct {
// The block device mappings.
BlockDeviceMappings []*LaunchTemplateBlockDeviceMapping `locationName:"blockDeviceMappingSet" locationNameList:"item" type:"list"`
+ // Information about the Capacity Reservation targeting option.
+ CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecificationResponse `locationName:"capacityReservationSpecification" type:"structure"`
+
// The CPU options for the instance. For more information, see Optimizing CPU
- // Options (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
+ // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
// in the Amazon Elastic Compute Cloud User Guide.
CpuOptions *LaunchTemplateCpuOptions `locationName:"cpuOptions" type:"structure"`
@@ -61819,6 +74334,14 @@ type ResponseLaunchTemplateData struct {
// The elastic GPU specification.
ElasticGpuSpecifications []*ElasticGpuSpecificationResponse `locationName:"elasticGpuSpecificationSet" locationNameList:"item" type:"list"`
+ // The elastic inference accelerator for the instance.
+ ElasticInferenceAccelerators []*LaunchTemplateElasticInferenceAcceleratorResponse `locationName:"elasticInferenceAcceleratorSet" locationNameList:"item" type:"list"`
+
+ // Indicates whether an instance is configured for hibernation. For more information,
+ // see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ HibernationOptions *LaunchTemplateHibernationOptions `locationName:"hibernationOptions" type:"structure"`
+
// The IAM instance profile.
IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
@@ -61841,6 +74364,9 @@ type ResponseLaunchTemplateData struct {
// The name of the key pair.
KeyName *string `locationName:"keyName" type:"string"`
+ // The license configurations.
+ LicenseSpecifications []*LaunchTemplateLicenseConfiguration `locationName:"licenseSet" locationNameList:"item" type:"list"`
+
// The monitoring for the instance.
Monitoring *LaunchTemplatesMonitoring `locationName:"monitoring" type:"structure"`
@@ -61882,6 +74408,12 @@ func (s *ResponseLaunchTemplateData) SetBlockDeviceMappings(v []*LaunchTemplateB
return s
}
+// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
+func (s *ResponseLaunchTemplateData) SetCapacityReservationSpecification(v *LaunchTemplateCapacityReservationSpecificationResponse) *ResponseLaunchTemplateData {
+ s.CapacityReservationSpecification = v
+ return s
+}
+
// SetCpuOptions sets the CpuOptions field's value.
func (s *ResponseLaunchTemplateData) SetCpuOptions(v *LaunchTemplateCpuOptions) *ResponseLaunchTemplateData {
s.CpuOptions = v
@@ -61912,6 +74444,18 @@ func (s *ResponseLaunchTemplateData) SetElasticGpuSpecifications(v []*ElasticGpu
return s
}
+// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value.
+func (s *ResponseLaunchTemplateData) SetElasticInferenceAccelerators(v []*LaunchTemplateElasticInferenceAcceleratorResponse) *ResponseLaunchTemplateData {
+ s.ElasticInferenceAccelerators = v
+ return s
+}
+
+// SetHibernationOptions sets the HibernationOptions field's value.
+func (s *ResponseLaunchTemplateData) SetHibernationOptions(v *LaunchTemplateHibernationOptions) *ResponseLaunchTemplateData {
+ s.HibernationOptions = v
+ return s
+}
+
// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *ResponseLaunchTemplateData) SetIamInstanceProfile(v *LaunchTemplateIamInstanceProfileSpecification) *ResponseLaunchTemplateData {
s.IamInstanceProfile = v
@@ -61954,6 +74498,12 @@ func (s *ResponseLaunchTemplateData) SetKeyName(v string) *ResponseLaunchTemplat
return s
}
+// SetLicenseSpecifications sets the LicenseSpecifications field's value.
+func (s *ResponseLaunchTemplateData) SetLicenseSpecifications(v []*LaunchTemplateLicenseConfiguration) *ResponseLaunchTemplateData {
+ s.LicenseSpecifications = v
+ return s
+}
+
// SetMonitoring sets the Monitoring field's value.
func (s *ResponseLaunchTemplateData) SetMonitoring(v *LaunchTemplatesMonitoring) *ResponseLaunchTemplateData {
s.Monitoring = v
@@ -62002,7 +74552,6 @@ func (s *ResponseLaunchTemplateData) SetUserData(v string) *ResponseLaunchTempla
return s
}
-// Contains the parameters for RestoreAddressToClassic.
type RestoreAddressToClassicInput struct {
_ struct{} `type:"structure"`
@@ -62053,7 +74602,6 @@ func (s *RestoreAddressToClassicInput) SetPublicIp(v string) *RestoreAddressToCl
return s
}
-// Contains the output of RestoreAddressToClassic.
type RestoreAddressToClassicOutput struct {
_ struct{} `type:"structure"`
@@ -62086,6 +74634,112 @@ func (s *RestoreAddressToClassicOutput) SetStatus(v string) *RestoreAddressToCla
return s
}
+type RevokeClientVpnIngressInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Active Directory group for which to revoke access.
+ AccessGroupId *string `type:"string"`
+
+ // The ID of the Client VPN endpoint with which the authorization rule is associated.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // Indicates whether access should be revoked for all clients.
+ RevokeAllGroups *bool `type:"boolean"`
+
+ // The IPv4 address range, in CIDR notation, of the network for which access
+ // is being removed.
+ //
+ // TargetNetworkCidr is a required field
+ TargetNetworkCidr *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s RevokeClientVpnIngressInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RevokeClientVpnIngressInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *RevokeClientVpnIngressInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "RevokeClientVpnIngressInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+ if s.TargetNetworkCidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("TargetNetworkCidr"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAccessGroupId sets the AccessGroupId field's value.
+func (s *RevokeClientVpnIngressInput) SetAccessGroupId(v string) *RevokeClientVpnIngressInput {
+ s.AccessGroupId = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *RevokeClientVpnIngressInput) SetClientVpnEndpointId(v string) *RevokeClientVpnIngressInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *RevokeClientVpnIngressInput) SetDryRun(v bool) *RevokeClientVpnIngressInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetRevokeAllGroups sets the RevokeAllGroups field's value.
+func (s *RevokeClientVpnIngressInput) SetRevokeAllGroups(v bool) *RevokeClientVpnIngressInput {
+ s.RevokeAllGroups = &v
+ return s
+}
+
+// SetTargetNetworkCidr sets the TargetNetworkCidr field's value.
+func (s *RevokeClientVpnIngressInput) SetTargetNetworkCidr(v string) *RevokeClientVpnIngressInput {
+ s.TargetNetworkCidr = &v
+ return s
+}
+
+type RevokeClientVpnIngressOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The current state of the authorization rule.
+ Status *ClientVpnAuthorizationRuleStatus `locationName:"status" type:"structure"`
+}
+
+// String returns the string representation
+func (s RevokeClientVpnIngressOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RevokeClientVpnIngressOutput) GoString() string {
+ return s.String()
+}
+
+// SetStatus sets the Status field's value.
+func (s *RevokeClientVpnIngressOutput) SetStatus(v *ClientVpnAuthorizationRuleStatus) *RevokeClientVpnIngressOutput {
+ s.Status = v
+ return s
+}
+
type RevokeSecurityGroupEgressInput struct {
_ struct{} `type:"structure"`
@@ -62402,7 +75056,10 @@ type Route struct {
// VPC, or the specified NAT instance has been terminated).
State *string `locationName:"state" type:"string" enum:"RouteState"`
- // The ID of the VPC peering connection.
+ // The ID of a transit gateway.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+
+ // The ID of a VPC peering connection.
VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
}
@@ -62482,6 +75139,12 @@ func (s *Route) SetState(v string) *Route {
return s
}
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *Route) SetTransitGatewayId(v string) *Route {
+ s.TransitGatewayId = &v
+ return s
+}
+
// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value.
func (s *Route) SetVpcPeeringConnectionId(v string) *Route {
s.VpcPeeringConnectionId = &v
@@ -62495,6 +75158,9 @@ type RouteTable struct {
// The associations between the route table and one or more subnets.
Associations []*RouteTableAssociation `locationName:"associationSet" locationNameList:"item" type:"list"`
+ // The ID of the AWS account that owns the route table.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// Any virtual private gateway (VGW) propagating routes.
PropagatingVgws []*PropagatingVgw `locationName:"propagatingVgwSet" locationNameList:"item" type:"list"`
@@ -62527,6 +75193,12 @@ func (s *RouteTable) SetAssociations(v []*RouteTableAssociation) *RouteTable {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *RouteTable) SetOwnerId(v string) *RouteTable {
+ s.OwnerId = &v
+ return s
+}
+
// SetPropagatingVgws sets the PropagatingVgws field's value.
func (s *RouteTable) SetPropagatingVgws(v []*PropagatingVgw) *RouteTable {
s.PropagatingVgws = v
@@ -62608,7 +75280,6 @@ func (s *RouteTableAssociation) SetSubnetId(v string) *RouteTableAssociation {
return s
}
-// Contains the parameters for RunInstances.
type RunInstancesInput struct {
_ struct{} `type:"structure"`
@@ -62621,20 +75292,26 @@ type RunInstancesInput struct {
// its encryption status is used for the volume encryption status.
BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"`
+ // Information about the Capacity Reservation targeting option. If you do not
+ // specify this parameter, the instance's Capacity Reservation preference defaults
+ // to open, which enables it to run in any open Capacity Reservation that has
+ // matching attributes (instance type, platform, Availability Zone).
+ CapacityReservationSpecification *CapacityReservationSpecification `type:"structure"`
+
// Unique, case-sensitive identifier you provide to ensure the idempotency of
- // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
//
// Constraints: Maximum 64 ASCII characters
ClientToken *string `locationName:"clientToken" type:"string"`
// The CPU options for the instance. For more information, see Optimizing CPU
- // Options (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
+ // Options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html)
// in the Amazon Elastic Compute Cloud User Guide.
CpuOptions *CpuOptionsRequest `type:"structure"`
// The credit option for CPU usage of the instance. Valid values are standard
// and unlimited. To change this attribute after launch, use ModifyInstanceCreditSpecification.
- // For more information, see Burstable Performance Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
+ // For more information, see Burstable Performance Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Default: standard (T2 instances) or unlimited (T3 instances)
@@ -62667,6 +75344,14 @@ type RunInstancesInput struct {
// An elastic GPU to associate with the instance.
ElasticGpuSpecification []*ElasticGpuSpecification `locationNameList:"item" type:"list"`
+ // An elastic inference accelerator.
+ ElasticInferenceAccelerators []*ElasticInferenceAccelerator `locationName:"ElasticInferenceAccelerator" locationNameList:"item" type:"list"`
+
+ // Indicates whether an instance is enabled for hibernation. For more information,
+ // see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ HibernationOptions *HibernationOptionsRequest `type:"structure"`
+
// The IAM instance profile.
IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"`
@@ -62687,7 +75372,7 @@ type RunInstancesInput struct {
// InstanceInterruptionBehavior is set to either hibernate or stop.
InstanceMarketOptions *InstanceMarketOptionsRequest `type:"structure"`
- // The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
+ // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Default: m1.small
@@ -62710,7 +75395,7 @@ type RunInstancesInput struct {
// The ID of the kernel.
//
// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more
- // information, see PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
+ // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
// in the Amazon Elastic Compute Cloud User Guide.
KernelId *string `type:"string"`
@@ -62726,6 +75411,9 @@ type RunInstancesInput struct {
// You can specify either the name or ID of a launch template, but not both.
LaunchTemplate *LaunchTemplateSpecification `type:"structure"`
+ // The license configurations.
+ LicenseSpecifications []*LicenseConfigurationRequest `locationName:"LicenseSpecification" locationNameList:"item" type:"list"`
+
// The maximum number of instances to launch. If you specify more instances
// than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches
// the largest possible number of instances above MinCount.
@@ -62771,7 +75459,7 @@ type RunInstancesInput struct {
// The ID of the RAM disk.
//
// We recommend that you use PV-GRUB instead of kernels and RAM disks. For more
- // information, see PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
+ // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html)
// in the Amazon Elastic Compute Cloud User Guide.
RamdiskId *string `type:"string"`
@@ -62796,8 +75484,8 @@ type RunInstancesInput struct {
TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
// The user data to make available to the instance. For more information, see
- // Running Commands on Your Linux Instance at Launch (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
- // (Linux) and Adding User Data (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data)
+ // Running Commands on Your Linux Instance at Launch (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
+ // (Linux) and Adding User Data (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-add-user-data)
// (Windows). If you are using a command line tool, base64-encoding is performed
// for you, and you can load the text from a file. Otherwise, you must provide
// base64-encoded text.
@@ -62838,6 +75526,16 @@ func (s *RunInstancesInput) Validate() error {
}
}
}
+ if s.ElasticInferenceAccelerators != nil {
+ for i, v := range s.ElasticInferenceAccelerators {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ElasticInferenceAccelerators", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
if s.Monitoring != nil {
if err := s.Monitoring.Validate(); err != nil {
invalidParams.AddNested("Monitoring", err.(request.ErrInvalidParams))
@@ -62862,6 +75560,12 @@ func (s *RunInstancesInput) SetBlockDeviceMappings(v []*BlockDeviceMapping) *Run
return s
}
+// SetCapacityReservationSpecification sets the CapacityReservationSpecification field's value.
+func (s *RunInstancesInput) SetCapacityReservationSpecification(v *CapacityReservationSpecification) *RunInstancesInput {
+ s.CapacityReservationSpecification = v
+ return s
+}
+
// SetClientToken sets the ClientToken field's value.
func (s *RunInstancesInput) SetClientToken(v string) *RunInstancesInput {
s.ClientToken = &v
@@ -62904,6 +75608,18 @@ func (s *RunInstancesInput) SetElasticGpuSpecification(v []*ElasticGpuSpecificat
return s
}
+// SetElasticInferenceAccelerators sets the ElasticInferenceAccelerators field's value.
+func (s *RunInstancesInput) SetElasticInferenceAccelerators(v []*ElasticInferenceAccelerator) *RunInstancesInput {
+ s.ElasticInferenceAccelerators = v
+ return s
+}
+
+// SetHibernationOptions sets the HibernationOptions field's value.
+func (s *RunInstancesInput) SetHibernationOptions(v *HibernationOptionsRequest) *RunInstancesInput {
+ s.HibernationOptions = v
+ return s
+}
+
// SetIamInstanceProfile sets the IamInstanceProfile field's value.
func (s *RunInstancesInput) SetIamInstanceProfile(v *IamInstanceProfileSpecification) *RunInstancesInput {
s.IamInstanceProfile = v
@@ -62964,6 +75680,12 @@ func (s *RunInstancesInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *R
return s
}
+// SetLicenseSpecifications sets the LicenseSpecifications field's value.
+func (s *RunInstancesInput) SetLicenseSpecifications(v []*LicenseConfigurationRequest) *RunInstancesInput {
+ s.LicenseSpecifications = v
+ return s
+}
+
// SetMaxCount sets the MaxCount field's value.
func (s *RunInstancesInput) SetMaxCount(v int64) *RunInstancesInput {
s.MaxCount = &v
@@ -63081,7 +75803,7 @@ type RunScheduledInstancesInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that ensures the idempotency of the request.
- // For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `type:"string" idempotencyToken:"true"`
// Checks whether you have the required permissions for the action, without
@@ -63199,7 +75921,7 @@ type S3Storage struct {
// The access key ID of the owner of the bucket. Before you specify a value
// for your access key ID, review and follow the guidance in Best Practices
- // for Managing AWS Access Keys (http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).
+ // for Managing AWS Access Keys (https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).
AWSAccessKeyId *string `type:"string"`
// The bucket in which to store the AMI. You can specify a bucket that you already
@@ -63752,7 +76474,7 @@ type ScheduledInstancesEbs struct {
// for the volume. For gp2 volumes, this represents the baseline performance
// of the volume and the rate at which the volume accumulates I/O credits for
// bursting. For more information about gp2 baseline performance, I/O credits,
- // and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // and bursting, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Constraint: Range is 100-20000 IOPS for io1 volumes and 100-10000 IOPS for
@@ -64266,6 +76988,140 @@ func (s *ScheduledInstancesPrivateIpAddressConfig) SetPrivateIpAddress(v string)
return s
}
+type SearchTransitGatewayRoutesInput struct {
+ _ struct{} `type:"structure"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // One or more filters. The possible values are:
+ //
+ // * attachment.transit-gateway-attachment-id- The id of the transit gateway
+ // attachment.
+ //
+ // * attachment.resource-id - The resource id of the transit gateway attachment.
+ //
+ // * attachment.resource-type - The attachment resource type (vpc | vpn).
+ //
+ // * route-search.exact-match - The exact match of the specified filter.
+ //
+ // * route-search.longest-prefix-match - The longest prefix that matches
+ // the route.
+ //
+ // * route-search.subnet-of-match - The routes with a subnet that match the
+ // specified CIDR filter.
+ //
+ // * route-search.supernet-of-match - The routes with a CIDR that encompass
+ // the CIDR filter. For example, if you have 10.0.1.0/29 and 10.0.1.0/31
+ // routes in your route table and you specify supernet-of-match as 10.0.1.0/30,
+ // then the result returns 10.0.1.0/29.
+ //
+ // * state - The state of the attachment (available | deleted | deleting
+ // | failed | modifying | pendingAcceptance | pending | rollingBack | rejected
+ // | rejecting).
+ //
+ // * type - The type of roue (active | blackhole).
+ //
+ // Filters is a required field
+ Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list" required:"true"`
+
+ // The maximum number of routes to return.
+ MaxResults *int64 `min:"5" type:"integer"`
+
+ // The ID of the transit gateway route table.
+ //
+ // TransitGatewayRouteTableId is a required field
+ TransitGatewayRouteTableId *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s SearchTransitGatewayRoutesInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s SearchTransitGatewayRoutesInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *SearchTransitGatewayRoutesInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "SearchTransitGatewayRoutesInput"}
+ if s.Filters == nil {
+ invalidParams.Add(request.NewErrParamRequired("Filters"))
+ }
+ if s.MaxResults != nil && *s.MaxResults < 5 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5))
+ }
+ if s.TransitGatewayRouteTableId == nil {
+ invalidParams.Add(request.NewErrParamRequired("TransitGatewayRouteTableId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *SearchTransitGatewayRoutesInput) SetDryRun(v bool) *SearchTransitGatewayRoutesInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetFilters sets the Filters field's value.
+func (s *SearchTransitGatewayRoutesInput) SetFilters(v []*Filter) *SearchTransitGatewayRoutesInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *SearchTransitGatewayRoutesInput) SetMaxResults(v int64) *SearchTransitGatewayRoutesInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *SearchTransitGatewayRoutesInput) SetTransitGatewayRouteTableId(v string) *SearchTransitGatewayRoutesInput {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+type SearchTransitGatewayRoutesOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether there are additional routes available.
+ AdditionalRoutesAvailable *bool `locationName:"additionalRoutesAvailable" type:"boolean"`
+
+ // Information about the routes.
+ Routes []*TransitGatewayRoute `locationName:"routeSet" locationNameList:"item" type:"list"`
+}
+
+// String returns the string representation
+func (s SearchTransitGatewayRoutesOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s SearchTransitGatewayRoutesOutput) GoString() string {
+ return s.String()
+}
+
+// SetAdditionalRoutesAvailable sets the AdditionalRoutesAvailable field's value.
+func (s *SearchTransitGatewayRoutesOutput) SetAdditionalRoutesAvailable(v bool) *SearchTransitGatewayRoutesOutput {
+ s.AdditionalRoutesAvailable = &v
+ return s
+}
+
+// SetRoutes sets the Routes field's value.
+func (s *SearchTransitGatewayRoutesOutput) SetRoutes(v []*TransitGatewayRoute) *SearchTransitGatewayRoutesOutput {
+ s.Routes = v
+ return s
+}
+
// Describes a security group
type SecurityGroup struct {
_ struct{} `type:"structure"`
@@ -64391,14 +77247,10 @@ type SecurityGroupReference struct {
_ struct{} `type:"structure"`
// The ID of your security group.
- //
- // GroupId is a required field
- GroupId *string `locationName:"groupId" type:"string" required:"true"`
+ GroupId *string `locationName:"groupId" type:"string"`
// The ID of the VPC with the referencing security group.
- //
- // ReferencingVpcId is a required field
- ReferencingVpcId *string `locationName:"referencingVpcId" type:"string" required:"true"`
+ ReferencingVpcId *string `locationName:"referencingVpcId" type:"string"`
// The ID of the VPC peering connection.
VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"`
@@ -65001,7 +77853,7 @@ type SnapshotDiskContainer struct {
// The format of the disk image being imported.
//
- // Valid values: VHD | VMDK | OVA
+ // Valid values: VHD | VMDK
Format *string `type:"string"`
// The URL to the Amazon S3-based disk image being imported. It can either be
@@ -65056,9 +77908,16 @@ type SnapshotTaskDetail struct {
// The size of the disk in the snapshot, in GiB.
DiskImageSize *float64 `locationName:"diskImageSize" type:"double"`
+ // Indicates whether the snapshot is encrypted.
+ Encrypted *bool `locationName:"encrypted" type:"boolean"`
+
// The format of the disk image from which the snapshot is created.
Format *string `locationName:"format" type:"string"`
+ // The identifier for the AWS Key Management Service (AWS KMS) customer master
+ // key (CMK) that was used to create the encrypted snapshot.
+ KmsKeyId *string `locationName:"kmsKeyId" type:"string"`
+
// The percentage of completion for the import snapshot task.
Progress *string `locationName:"progress" type:"string"`
@@ -65100,12 +77959,24 @@ func (s *SnapshotTaskDetail) SetDiskImageSize(v float64) *SnapshotTaskDetail {
return s
}
+// SetEncrypted sets the Encrypted field's value.
+func (s *SnapshotTaskDetail) SetEncrypted(v bool) *SnapshotTaskDetail {
+ s.Encrypted = &v
+ return s
+}
+
// SetFormat sets the Format field's value.
func (s *SnapshotTaskDetail) SetFormat(v string) *SnapshotTaskDetail {
s.Format = &v
return s
}
+// SetKmsKeyId sets the KmsKeyId field's value.
+func (s *SnapshotTaskDetail) SetKmsKeyId(v string) *SnapshotTaskDetail {
+ s.KmsKeyId = &v
+ return s
+}
+
// SetProgress sets the Progress field's value.
func (s *SnapshotTaskDetail) SetProgress(v string) *SnapshotTaskDetail {
s.Progress = &v
@@ -65439,24 +78310,16 @@ type SpotFleetRequestConfig struct {
ActivityStatus *string `locationName:"activityStatus" type:"string" enum:"ActivityStatus"`
// The creation date and time of the request.
- //
- // CreateTime is a required field
- CreateTime *time.Time `locationName:"createTime" type:"timestamp" required:"true"`
+ CreateTime *time.Time `locationName:"createTime" type:"timestamp"`
// The configuration of the Spot Fleet request.
- //
- // SpotFleetRequestConfig is a required field
- SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"`
+ SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure"`
// The ID of the Spot Fleet request.
- //
- // SpotFleetRequestId is a required field
- SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
+ SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string"`
// The state of the Spot Fleet request.
- //
- // SpotFleetRequestState is a required field
- SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" required:"true" enum:"BatchState"`
+ SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" enum:"BatchState"`
}
// String returns the string representation
@@ -65509,7 +78372,7 @@ type SpotFleetRequestConfigData struct {
// A unique, case-sensitive identifier that you provide to ensure the idempotency
// of your listings. This helps to avoid duplicate listings. For more information,
- // see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
+ // see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `locationName:"clientToken" type:"string"`
// Indicates whether running Spot Instances should be terminated if the target
@@ -65518,7 +78381,7 @@ type SpotFleetRequestConfigData struct {
ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"`
// The number of units fulfilled by this request compared to the set target
- // capacity.
+ // capacity. You cannot set this value.
FulfilledCapacity *float64 `locationName:"fulfilledCapacity" type:"double"`
// Grants the Spot Fleet permission to terminate Spot Instances on your behalf
@@ -65595,9 +78458,10 @@ type SpotFleetRequestConfigData struct {
// capacity or also attempts to maintain it. When this value is request, the
// Spot Fleet only places the required requests. It does not attempt to replenish
// Spot Instances if capacity is diminished, nor does it submit requests in
- // alternative Spot pools if capacity is not available. To maintain a certain
- // target capacity, the Spot Fleet places the required requests to meet capacity
- // and automatically replenishes any interrupted instances. Default: maintain.
+ // alternative Spot pools if capacity is not available. When this value is maintain,
+ // the Spot Fleet maintains the target capacity. The Spot Fleet places the required
+ // requests to meet capacity and automatically replenishes any interrupted instances.
+ // Default: maintain. instant is listed but is not used by Spot Fleet.
Type *string `locationName:"type" type:"string" enum:"FleetType"`
// The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
@@ -65855,7 +78719,7 @@ type SpotInstanceRequest struct {
SpotPrice *string `locationName:"spotPrice" type:"string"`
// The state of the Spot Instance request. Spot status information helps track
- // your Spot Instance requests. For more information, see Spot Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
+ // your Spot Instance requests. For more information, see Spot Status (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html)
// in the Amazon EC2 User Guide for Linux Instances.
State *string `locationName:"state" type:"string" enum:"SpotInstanceState"`
@@ -66041,7 +78905,7 @@ func (s *SpotInstanceStateFault) SetMessage(v string) *SpotInstanceStateFault {
type SpotInstanceStatus struct {
_ struct{} `type:"structure"`
- // The status code. For a list of status codes, see Spot Status Codes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand)
+ // The status code. For a list of status codes, see Spot Status Codes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand)
// in the Amazon EC2 User Guide for Linux Instances.
Code *string `locationName:"code" type:"string"`
@@ -66166,6 +79030,18 @@ type SpotOptions struct {
// the cheapest Spot pools and evenly allocates your target Spot capacity across
// the number of Spot pools that you specify.
InstancePoolsToUseCount *int64 `locationName:"instancePoolsToUseCount" type:"integer"`
+
+ // The minimum target capacity for Spot Instances in the fleet. If the minimum
+ // target capacity is not reached, the fleet launches no instances.
+ MinTargetCapacity *int64 `locationName:"minTargetCapacity" type:"integer"`
+
+ // Indicates that the fleet launches all Spot Instances into a single Availability
+ // Zone.
+ SingleAvailabilityZone *bool `locationName:"singleAvailabilityZone" type:"boolean"`
+
+ // Indicates that the fleet uses a single instance type to launch all Spot Instances
+ // in the fleet.
+ SingleInstanceType *bool `locationName:"singleInstanceType" type:"boolean"`
}
// String returns the string representation
@@ -66196,6 +79072,24 @@ func (s *SpotOptions) SetInstancePoolsToUseCount(v int64) *SpotOptions {
return s
}
+// SetMinTargetCapacity sets the MinTargetCapacity field's value.
+func (s *SpotOptions) SetMinTargetCapacity(v int64) *SpotOptions {
+ s.MinTargetCapacity = &v
+ return s
+}
+
+// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value.
+func (s *SpotOptions) SetSingleAvailabilityZone(v bool) *SpotOptions {
+ s.SingleAvailabilityZone = &v
+ return s
+}
+
+// SetSingleInstanceType sets the SingleInstanceType field's value.
+func (s *SpotOptions) SetSingleInstanceType(v bool) *SpotOptions {
+ s.SingleInstanceType = &v
+ return s
+}
+
// Describes the configuration of Spot Instances in an EC2 Fleet request.
type SpotOptionsRequest struct {
_ struct{} `type:"structure"`
@@ -66212,6 +79106,18 @@ type SpotOptionsRequest struct {
// selects the cheapest Spot pools and evenly allocates your target Spot capacity
// across the number of Spot pools that you specify.
InstancePoolsToUseCount *int64 `type:"integer"`
+
+ // The minimum target capacity for Spot Instances in the fleet. If the minimum
+ // target capacity is not reached, the fleet launches no instances.
+ MinTargetCapacity *int64 `type:"integer"`
+
+ // Indicates that the fleet launches all Spot Instances into a single Availability
+ // Zone.
+ SingleAvailabilityZone *bool `type:"boolean"`
+
+ // Indicates that the fleet uses a single instance type to launch all Spot Instances
+ // in the fleet.
+ SingleInstanceType *bool `type:"boolean"`
}
// String returns the string representation
@@ -66242,6 +79148,24 @@ func (s *SpotOptionsRequest) SetInstancePoolsToUseCount(v int64) *SpotOptionsReq
return s
}
+// SetMinTargetCapacity sets the MinTargetCapacity field's value.
+func (s *SpotOptionsRequest) SetMinTargetCapacity(v int64) *SpotOptionsRequest {
+ s.MinTargetCapacity = &v
+ return s
+}
+
+// SetSingleAvailabilityZone sets the SingleAvailabilityZone field's value.
+func (s *SpotOptionsRequest) SetSingleAvailabilityZone(v bool) *SpotOptionsRequest {
+ s.SingleAvailabilityZone = &v
+ return s
+}
+
+// SetSingleInstanceType sets the SingleInstanceType field's value.
+func (s *SpotOptionsRequest) SetSingleInstanceType(v bool) *SpotOptionsRequest {
+ s.SingleInstanceType = &v
+ return s
+}
+
// Describes Spot Instance placement.
type SpotPlacement struct {
_ struct{} `type:"structure"`
@@ -66432,9 +79356,7 @@ type StaleSecurityGroup struct {
Description *string `locationName:"description" type:"string"`
// The ID of the security group.
- //
- // GroupId is a required field
- GroupId *string `locationName:"groupId" type:"string" required:"true"`
+ GroupId *string `locationName:"groupId" type:"string"`
// The name of the security group.
GroupName *string `locationName:"groupName" type:"string"`
@@ -66495,7 +79417,6 @@ func (s *StaleSecurityGroup) SetVpcId(v string) *StaleSecurityGroup {
return s
}
-// Contains the parameters for StartInstances.
type StartInstancesInput struct {
_ struct{} `type:"structure"`
@@ -66555,7 +79476,6 @@ func (s *StartInstancesInput) SetInstanceIds(v []*string) *StartInstancesInput {
return s
}
-// Contains the output of StartInstances.
type StartInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -66617,6 +79537,8 @@ type StateReason struct {
//
// * Client.InvalidSnapshot.NotFound: The specified snapshot was not found.
//
+ // * Client.UserInitiatedHibernate: Hibernation was initiated on the instance.
+ //
// * Client.UserInitiatedShutdown: The instance was shut down using the Amazon
// EC2 API.
//
@@ -66648,7 +79570,6 @@ func (s *StateReason) SetMessage(v string) *StateReason {
return s
}
-// Contains the parameters for StopInstances.
type StopInstancesInput struct {
_ struct{} `type:"structure"`
@@ -66666,6 +79587,14 @@ type StopInstancesInput struct {
// Default: false
Force *bool `locationName:"force" type:"boolean"`
+ // Hibernates the instance if the instance was enabled for hibernation at launch.
+ // If the instance cannot hibernate successfully, a normal shutdown occurs.
+ // For more information, see Hibernate Your Instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
+ //
+ // Default: false
+ Hibernate *bool `type:"boolean"`
+
// One or more instance IDs.
//
// InstanceIds is a required field
@@ -66707,13 +79636,18 @@ func (s *StopInstancesInput) SetForce(v bool) *StopInstancesInput {
return s
}
+// SetHibernate sets the Hibernate field's value.
+func (s *StopInstancesInput) SetHibernate(v bool) *StopInstancesInput {
+ s.Hibernate = &v
+ return s
+}
+
// SetInstanceIds sets the InstanceIds field's value.
func (s *StopInstancesInput) SetInstanceIds(v []*string) *StopInstancesInput {
s.InstanceIds = v
return s
}
-// Contains the output of StopInstances.
type StopInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -66805,6 +79739,9 @@ type Subnet struct {
// The Availability Zone of the subnet.
AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
+ // The AZ ID of the subnet.
+ AvailabilityZoneId *string `locationName:"availabilityZoneId" type:"string"`
+
// The number of unused private IPv4 addresses in the subnet. The IPv4 addresses
// for any stopped instances are considered unavailable.
AvailableIpAddressCount *int64 `locationName:"availableIpAddressCount" type:"integer"`
@@ -66822,9 +79759,15 @@ type Subnet struct {
// address.
MapPublicIpOnLaunch *bool `locationName:"mapPublicIpOnLaunch" type:"boolean"`
+ // The ID of the AWS account that owns the subnet.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// The current state of the subnet.
State *string `locationName:"state" type:"string" enum:"SubnetState"`
+ // The Amazon Resource Name (ARN) of the subnet.
+ SubnetArn *string `locationName:"subnetArn" type:"string"`
+
// The ID of the subnet.
SubnetId *string `locationName:"subnetId" type:"string"`
@@ -66857,6 +79800,12 @@ func (s *Subnet) SetAvailabilityZone(v string) *Subnet {
return s
}
+// SetAvailabilityZoneId sets the AvailabilityZoneId field's value.
+func (s *Subnet) SetAvailabilityZoneId(v string) *Subnet {
+ s.AvailabilityZoneId = &v
+ return s
+}
+
// SetAvailableIpAddressCount sets the AvailableIpAddressCount field's value.
func (s *Subnet) SetAvailableIpAddressCount(v int64) *Subnet {
s.AvailableIpAddressCount = &v
@@ -66887,12 +79836,24 @@ func (s *Subnet) SetMapPublicIpOnLaunch(v bool) *Subnet {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *Subnet) SetOwnerId(v string) *Subnet {
+ s.OwnerId = &v
+ return s
+}
+
// SetState sets the State field's value.
func (s *Subnet) SetState(v string) *Subnet {
s.State = &v
return s
}
+// SetSubnetArn sets the SubnetArn field's value.
+func (s *Subnet) SetSubnetArn(v string) *Subnet {
+ s.SubnetArn = &v
+ return s
+}
+
// SetSubnetId sets the SubnetId field's value.
func (s *Subnet) SetSubnetId(v string) *Subnet {
s.SubnetId = &v
@@ -67057,7 +80018,7 @@ type TagDescription struct {
// The tag key.
Key *string `locationName:"key" type:"string"`
- // The ID of the resource. For example, ami-1a2b3c4d.
+ // The ID of the resource.
ResourceId *string `locationName:"resourceId" type:"string"`
// The resource type.
@@ -67349,9 +80310,7 @@ type TargetGroup struct {
_ struct{} `type:"structure"`
// The Amazon Resource Name (ARN) of the target group.
- //
- // Arn is a required field
- Arn *string `locationName:"arn" type:"string" required:"true"`
+ Arn *string `locationName:"arn" type:"string"`
}
// String returns the string representation
@@ -67364,19 +80323,6 @@ func (s TargetGroup) GoString() string {
return s.String()
}
-// Validate inspects the fields of the type to determine if they are valid.
-func (s *TargetGroup) Validate() error {
- invalidParams := request.ErrInvalidParams{Context: "TargetGroup"}
- if s.Arn == nil {
- invalidParams.Add(request.NewErrParamRequired("Arn"))
- }
-
- if invalidParams.Len() > 0 {
- return invalidParams
- }
- return nil
-}
-
// SetArn sets the Arn field's value.
func (s *TargetGroup) SetArn(v string) *TargetGroup {
s.Arn = &v
@@ -67389,9 +80335,7 @@ type TargetGroupsConfig struct {
_ struct{} `type:"structure"`
// One or more target groups.
- //
- // TargetGroups is a required field
- TargetGroups []*TargetGroup `locationName:"targetGroups" locationNameList:"item" min:"1" type:"list" required:"true"`
+ TargetGroups []*TargetGroup `locationName:"targetGroups" locationNameList:"item" min:"1" type:"list"`
}
// String returns the string representation
@@ -67407,22 +80351,9 @@ func (s TargetGroupsConfig) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *TargetGroupsConfig) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "TargetGroupsConfig"}
- if s.TargetGroups == nil {
- invalidParams.Add(request.NewErrParamRequired("TargetGroups"))
- }
if s.TargetGroups != nil && len(s.TargetGroups) < 1 {
invalidParams.Add(request.NewErrParamMinLen("TargetGroups", 1))
}
- if s.TargetGroups != nil {
- for i, v := range s.TargetGroups {
- if v == nil {
- continue
- }
- if err := v.Validate(); err != nil {
- invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGroups", i), err.(request.ErrInvalidParams))
- }
- }
- }
if invalidParams.Len() > 0 {
return invalidParams
@@ -67436,6 +80367,75 @@ func (s *TargetGroupsConfig) SetTargetGroups(v []*TargetGroup) *TargetGroupsConf
return s
}
+// Describes a target network associated with a Client VPN endpoint.
+type TargetNetwork struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the association.
+ AssociationId *string `locationName:"associationId" type:"string"`
+
+ // The ID of the Client VPN endpoint with which the target network is associated.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // The IDs of the security groups applied to the target network association.
+ SecurityGroups []*string `locationName:"securityGroups" locationNameList:"item" type:"list"`
+
+ // The current state of the target network association.
+ Status *AssociationStatus `locationName:"status" type:"structure"`
+
+ // The ID of the subnet specified as the target network.
+ TargetNetworkId *string `locationName:"targetNetworkId" type:"string"`
+
+ // The ID of the VPC in which the target network (subnet) is located.
+ VpcId *string `locationName:"vpcId" type:"string"`
+}
+
+// String returns the string representation
+func (s TargetNetwork) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TargetNetwork) GoString() string {
+ return s.String()
+}
+
+// SetAssociationId sets the AssociationId field's value.
+func (s *TargetNetwork) SetAssociationId(v string) *TargetNetwork {
+ s.AssociationId = &v
+ return s
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *TargetNetwork) SetClientVpnEndpointId(v string) *TargetNetwork {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetSecurityGroups sets the SecurityGroups field's value.
+func (s *TargetNetwork) SetSecurityGroups(v []*string) *TargetNetwork {
+ s.SecurityGroups = v
+ return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *TargetNetwork) SetStatus(v *AssociationStatus) *TargetNetwork {
+ s.Status = v
+ return s
+}
+
+// SetTargetNetworkId sets the TargetNetworkId field's value.
+func (s *TargetNetwork) SetTargetNetworkId(v string) *TargetNetwork {
+ s.TargetNetworkId = &v
+ return s
+}
+
+// SetVpcId sets the VpcId field's value.
+func (s *TargetNetwork) SetVpcId(v string) *TargetNetwork {
+ s.VpcId = &v
+ return s
+}
+
// The total value of the new Convertible Reserved Instances.
type TargetReservationValue struct {
_ struct{} `type:"structure"`
@@ -67472,7 +80472,159 @@ func (s *TargetReservationValue) SetTargetConfiguration(v *TargetConfiguration)
return s
}
-// Contains the parameters for TerminateInstances.
+type TerminateClientVpnConnectionsInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint to which the client is connected.
+ //
+ // ClientVpnEndpointId is a required field
+ ClientVpnEndpointId *string `type:"string" required:"true"`
+
+ // The ID of the client connection to be terminated.
+ ConnectionId *string `type:"string"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+
+ // The name of the user who initiated the connection. Use this option to terminate
+ // all active connections for the specified user. This option can only be used
+ // if the user has established up to five connections.
+ Username *string `type:"string"`
+}
+
+// String returns the string representation
+func (s TerminateClientVpnConnectionsInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TerminateClientVpnConnectionsInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *TerminateClientVpnConnectionsInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "TerminateClientVpnConnectionsInput"}
+ if s.ClientVpnEndpointId == nil {
+ invalidParams.Add(request.NewErrParamRequired("ClientVpnEndpointId"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *TerminateClientVpnConnectionsInput) SetClientVpnEndpointId(v string) *TerminateClientVpnConnectionsInput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetConnectionId sets the ConnectionId field's value.
+func (s *TerminateClientVpnConnectionsInput) SetConnectionId(v string) *TerminateClientVpnConnectionsInput {
+ s.ConnectionId = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *TerminateClientVpnConnectionsInput) SetDryRun(v bool) *TerminateClientVpnConnectionsInput {
+ s.DryRun = &v
+ return s
+}
+
+// SetUsername sets the Username field's value.
+func (s *TerminateClientVpnConnectionsInput) SetUsername(v string) *TerminateClientVpnConnectionsInput {
+ s.Username = &v
+ return s
+}
+
+type TerminateClientVpnConnectionsOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Client VPN endpoint.
+ ClientVpnEndpointId *string `locationName:"clientVpnEndpointId" type:"string"`
+
+ // The current state of the client connections.
+ ConnectionStatuses []*TerminateConnectionStatus `locationName:"connectionStatuses" locationNameList:"item" type:"list"`
+
+ // The user who established the terminated client connections.
+ Username *string `locationName:"username" type:"string"`
+}
+
+// String returns the string representation
+func (s TerminateClientVpnConnectionsOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TerminateClientVpnConnectionsOutput) GoString() string {
+ return s.String()
+}
+
+// SetClientVpnEndpointId sets the ClientVpnEndpointId field's value.
+func (s *TerminateClientVpnConnectionsOutput) SetClientVpnEndpointId(v string) *TerminateClientVpnConnectionsOutput {
+ s.ClientVpnEndpointId = &v
+ return s
+}
+
+// SetConnectionStatuses sets the ConnectionStatuses field's value.
+func (s *TerminateClientVpnConnectionsOutput) SetConnectionStatuses(v []*TerminateConnectionStatus) *TerminateClientVpnConnectionsOutput {
+ s.ConnectionStatuses = v
+ return s
+}
+
+// SetUsername sets the Username field's value.
+func (s *TerminateClientVpnConnectionsOutput) SetUsername(v string) *TerminateClientVpnConnectionsOutput {
+ s.Username = &v
+ return s
+}
+
+// Information about a terminated Client VPN endpoint client connection.
+type TerminateConnectionStatus struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the client connection.
+ ConnectionId *string `locationName:"connectionId" type:"string"`
+
+ // A message about the status of the client connection, if applicable.
+ CurrentStatus *ClientVpnConnectionStatus `locationName:"currentStatus" type:"structure"`
+
+ // The state of the client connection.
+ PreviousStatus *ClientVpnConnectionStatus `locationName:"previousStatus" type:"structure"`
+}
+
+// String returns the string representation
+func (s TerminateConnectionStatus) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TerminateConnectionStatus) GoString() string {
+ return s.String()
+}
+
+// SetConnectionId sets the ConnectionId field's value.
+func (s *TerminateConnectionStatus) SetConnectionId(v string) *TerminateConnectionStatus {
+ s.ConnectionId = &v
+ return s
+}
+
+// SetCurrentStatus sets the CurrentStatus field's value.
+func (s *TerminateConnectionStatus) SetCurrentStatus(v *ClientVpnConnectionStatus) *TerminateConnectionStatus {
+ s.CurrentStatus = v
+ return s
+}
+
+// SetPreviousStatus sets the PreviousStatus field's value.
+func (s *TerminateConnectionStatus) SetPreviousStatus(v *ClientVpnConnectionStatus) *TerminateConnectionStatus {
+ s.PreviousStatus = v
+ return s
+}
+
type TerminateInstancesInput struct {
_ struct{} `type:"structure"`
@@ -67526,7 +80678,6 @@ func (s *TerminateInstancesInput) SetInstanceIds(v []*string) *TerminateInstance
return s
}
-// Contains the output of TerminateInstances.
type TerminateInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -67550,6 +80701,954 @@ func (s *TerminateInstancesOutput) SetTerminatingInstances(v []*InstanceStateCha
return s
}
+// Describes a transit gateway.
+type TransitGateway struct {
+ _ struct{} `type:"structure"`
+
+ // The creation time.
+ CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
+
+ // The description of the transit gateway.
+ Description *string `locationName:"description" type:"string"`
+
+ // The transit gateway options.
+ Options *TransitGatewayOptions `locationName:"options" type:"structure"`
+
+ // The ID of the AWS account ID that owns the transit gateway.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
+ // The state of the transit gateway.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayState"`
+
+ // The tags for the transit gateway.
+ Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+
+ // The Amazon Resource Name (ARN) of the transit gateway.
+ TransitGatewayArn *string `locationName:"transitGatewayArn" type:"string"`
+
+ // The ID of the transit gateway.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGateway) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGateway) GoString() string {
+ return s.String()
+}
+
+// SetCreationTime sets the CreationTime field's value.
+func (s *TransitGateway) SetCreationTime(v time.Time) *TransitGateway {
+ s.CreationTime = &v
+ return s
+}
+
+// SetDescription sets the Description field's value.
+func (s *TransitGateway) SetDescription(v string) *TransitGateway {
+ s.Description = &v
+ return s
+}
+
+// SetOptions sets the Options field's value.
+func (s *TransitGateway) SetOptions(v *TransitGatewayOptions) *TransitGateway {
+ s.Options = v
+ return s
+}
+
+// SetOwnerId sets the OwnerId field's value.
+func (s *TransitGateway) SetOwnerId(v string) *TransitGateway {
+ s.OwnerId = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGateway) SetState(v string) *TransitGateway {
+ s.State = &v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *TransitGateway) SetTags(v []*Tag) *TransitGateway {
+ s.Tags = v
+ return s
+}
+
+// SetTransitGatewayArn sets the TransitGatewayArn field's value.
+func (s *TransitGateway) SetTransitGatewayArn(v string) *TransitGateway {
+ s.TransitGatewayArn = &v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *TransitGateway) SetTransitGatewayId(v string) *TransitGateway {
+ s.TransitGatewayId = &v
+ return s
+}
+
+// Describes an association between a resource attachment and a transit gateway
+// route table.
+type TransitGatewayAssociation struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The resource type.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The state of the association.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+
+ // The ID of the transit gateway route table.
+ TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayAssociation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayAssociation) GoString() string {
+ return s.String()
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayAssociation) SetResourceId(v string) *TransitGatewayAssociation {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayAssociation) SetResourceType(v string) *TransitGatewayAssociation {
+ s.ResourceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayAssociation) SetState(v string) *TransitGatewayAssociation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayAssociation) SetTransitGatewayAttachmentId(v string) *TransitGatewayAssociation {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *TransitGatewayAssociation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAssociation {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+// Describes an attachment between a resource and a transit gateway.
+type TransitGatewayAttachment struct {
+ _ struct{} `type:"structure"`
+
+ // The association.
+ Association *TransitGatewayAttachmentAssociation `locationName:"association" type:"structure"`
+
+ // The creation time.
+ CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The ID of the AWS account that owns the resource.
+ ResourceOwnerId *string `locationName:"resourceOwnerId" type:"string"`
+
+ // The resource type.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The attachment state.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayAttachmentState"`
+
+ // The tags for the attachment.
+ Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+
+ // The ID of the transit gateway.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+
+ // The ID of the AWS account that owns the transit gateway.
+ TransitGatewayOwnerId *string `locationName:"transitGatewayOwnerId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayAttachment) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayAttachment) GoString() string {
+ return s.String()
+}
+
+// SetAssociation sets the Association field's value.
+func (s *TransitGatewayAttachment) SetAssociation(v *TransitGatewayAttachmentAssociation) *TransitGatewayAttachment {
+ s.Association = v
+ return s
+}
+
+// SetCreationTime sets the CreationTime field's value.
+func (s *TransitGatewayAttachment) SetCreationTime(v time.Time) *TransitGatewayAttachment {
+ s.CreationTime = &v
+ return s
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayAttachment) SetResourceId(v string) *TransitGatewayAttachment {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceOwnerId sets the ResourceOwnerId field's value.
+func (s *TransitGatewayAttachment) SetResourceOwnerId(v string) *TransitGatewayAttachment {
+ s.ResourceOwnerId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayAttachment) SetResourceType(v string) *TransitGatewayAttachment {
+ s.ResourceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayAttachment) SetState(v string) *TransitGatewayAttachment {
+ s.State = &v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *TransitGatewayAttachment) SetTags(v []*Tag) *TransitGatewayAttachment {
+ s.Tags = v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayAttachment {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *TransitGatewayAttachment) SetTransitGatewayId(v string) *TransitGatewayAttachment {
+ s.TransitGatewayId = &v
+ return s
+}
+
+// SetTransitGatewayOwnerId sets the TransitGatewayOwnerId field's value.
+func (s *TransitGatewayAttachment) SetTransitGatewayOwnerId(v string) *TransitGatewayAttachment {
+ s.TransitGatewayOwnerId = &v
+ return s
+}
+
+// Describes an association.
+type TransitGatewayAttachmentAssociation struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the association.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"`
+
+ // The ID of the route table for the transit gateway.
+ TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayAttachmentAssociation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayAttachmentAssociation) GoString() string {
+ return s.String()
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayAttachmentAssociation) SetState(v string) *TransitGatewayAttachmentAssociation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *TransitGatewayAttachmentAssociation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAttachmentAssociation {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+// Describes a propagation route table.
+type TransitGatewayAttachmentPropagation struct {
+ _ struct{} `type:"structure"`
+
+ // The state of the propagation route table.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"`
+
+ // The ID of the propagation route table.
+ TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayAttachmentPropagation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayAttachmentPropagation) GoString() string {
+ return s.String()
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayAttachmentPropagation) SetState(v string) *TransitGatewayAttachmentPropagation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *TransitGatewayAttachmentPropagation) SetTransitGatewayRouteTableId(v string) *TransitGatewayAttachmentPropagation {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+// Describes the options for a transit gateway.
+type TransitGatewayOptions struct {
+ _ struct{} `type:"structure"`
+
+ // A private Autonomous System Number (ASN) for the Amazon side of a BGP session.
+ // The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294
+ // for 32-bit ASNs.
+ AmazonSideAsn *int64 `locationName:"amazonSideAsn" type:"long"`
+
+ // The ID of the default association route table.
+ AssociationDefaultRouteTableId *string `locationName:"associationDefaultRouteTableId" type:"string"`
+
+ // Indicates whether attachment requests are automatically accepted.
+ AutoAcceptSharedAttachments *string `locationName:"autoAcceptSharedAttachments" type:"string" enum:"AutoAcceptSharedAttachmentsValue"`
+
+ // Indicates whether resource attachments are automatically associated with
+ // the default association route table.
+ DefaultRouteTableAssociation *string `locationName:"defaultRouteTableAssociation" type:"string" enum:"DefaultRouteTableAssociationValue"`
+
+ // Indicates whether resource attachments automatically propagate routes to
+ // the default propagation route table.
+ DefaultRouteTablePropagation *string `locationName:"defaultRouteTablePropagation" type:"string" enum:"DefaultRouteTablePropagationValue"`
+
+ // Indicates whether DNS support is enabled.
+ DnsSupport *string `locationName:"dnsSupport" type:"string" enum:"DnsSupportValue"`
+
+ // The ID of the default propagation route table.
+ PropagationDefaultRouteTableId *string `locationName:"propagationDefaultRouteTableId" type:"string"`
+
+ // Indicates whether Equal Cost Multipath Protocol support is enabled.
+ VpnEcmpSupport *string `locationName:"vpnEcmpSupport" type:"string" enum:"VpnEcmpSupportValue"`
+}
+
+// String returns the string representation
+func (s TransitGatewayOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayOptions) GoString() string {
+ return s.String()
+}
+
+// SetAmazonSideAsn sets the AmazonSideAsn field's value.
+func (s *TransitGatewayOptions) SetAmazonSideAsn(v int64) *TransitGatewayOptions {
+ s.AmazonSideAsn = &v
+ return s
+}
+
+// SetAssociationDefaultRouteTableId sets the AssociationDefaultRouteTableId field's value.
+func (s *TransitGatewayOptions) SetAssociationDefaultRouteTableId(v string) *TransitGatewayOptions {
+ s.AssociationDefaultRouteTableId = &v
+ return s
+}
+
+// SetAutoAcceptSharedAttachments sets the AutoAcceptSharedAttachments field's value.
+func (s *TransitGatewayOptions) SetAutoAcceptSharedAttachments(v string) *TransitGatewayOptions {
+ s.AutoAcceptSharedAttachments = &v
+ return s
+}
+
+// SetDefaultRouteTableAssociation sets the DefaultRouteTableAssociation field's value.
+func (s *TransitGatewayOptions) SetDefaultRouteTableAssociation(v string) *TransitGatewayOptions {
+ s.DefaultRouteTableAssociation = &v
+ return s
+}
+
+// SetDefaultRouteTablePropagation sets the DefaultRouteTablePropagation field's value.
+func (s *TransitGatewayOptions) SetDefaultRouteTablePropagation(v string) *TransitGatewayOptions {
+ s.DefaultRouteTablePropagation = &v
+ return s
+}
+
+// SetDnsSupport sets the DnsSupport field's value.
+func (s *TransitGatewayOptions) SetDnsSupport(v string) *TransitGatewayOptions {
+ s.DnsSupport = &v
+ return s
+}
+
+// SetPropagationDefaultRouteTableId sets the PropagationDefaultRouteTableId field's value.
+func (s *TransitGatewayOptions) SetPropagationDefaultRouteTableId(v string) *TransitGatewayOptions {
+ s.PropagationDefaultRouteTableId = &v
+ return s
+}
+
+// SetVpnEcmpSupport sets the VpnEcmpSupport field's value.
+func (s *TransitGatewayOptions) SetVpnEcmpSupport(v string) *TransitGatewayOptions {
+ s.VpnEcmpSupport = &v
+ return s
+}
+
+// Describes route propagation.
+type TransitGatewayPropagation struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The resource type.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The state.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+
+ // The ID of the transit gateway route table.
+ TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayPropagation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayPropagation) GoString() string {
+ return s.String()
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayPropagation) SetResourceId(v string) *TransitGatewayPropagation {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayPropagation) SetResourceType(v string) *TransitGatewayPropagation {
+ s.ResourceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayPropagation) SetState(v string) *TransitGatewayPropagation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayPropagation) SetTransitGatewayAttachmentId(v string) *TransitGatewayPropagation {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *TransitGatewayPropagation) SetTransitGatewayRouteTableId(v string) *TransitGatewayPropagation {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+// Describes the options for a transit gateway.
+type TransitGatewayRequestOptions struct {
+ _ struct{} `type:"structure"`
+
+ // A private Autonomous System Number (ASN) for the Amazon side of a BGP session.
+ // The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294
+ // for 32-bit ASNs.
+ AmazonSideAsn *int64 `type:"long"`
+
+ // Enable or disable automatic acceptance of attachment requests. The default
+ // is disable.
+ AutoAcceptSharedAttachments *string `type:"string" enum:"AutoAcceptSharedAttachmentsValue"`
+
+ // Enable or disable automatic association with the default association route
+ // table. The default is enable.
+ DefaultRouteTableAssociation *string `type:"string" enum:"DefaultRouteTableAssociationValue"`
+
+ // Enable or disable automatic propagation of routes to the default propagation
+ // route table. The default is enable.
+ DefaultRouteTablePropagation *string `type:"string" enum:"DefaultRouteTablePropagationValue"`
+
+ // Enable or disable DNS support.
+ DnsSupport *string `type:"string" enum:"DnsSupportValue"`
+
+ // Enable or disable Equal Cost Multipath Protocol support.
+ VpnEcmpSupport *string `type:"string" enum:"VpnEcmpSupportValue"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRequestOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRequestOptions) GoString() string {
+ return s.String()
+}
+
+// SetAmazonSideAsn sets the AmazonSideAsn field's value.
+func (s *TransitGatewayRequestOptions) SetAmazonSideAsn(v int64) *TransitGatewayRequestOptions {
+ s.AmazonSideAsn = &v
+ return s
+}
+
+// SetAutoAcceptSharedAttachments sets the AutoAcceptSharedAttachments field's value.
+func (s *TransitGatewayRequestOptions) SetAutoAcceptSharedAttachments(v string) *TransitGatewayRequestOptions {
+ s.AutoAcceptSharedAttachments = &v
+ return s
+}
+
+// SetDefaultRouteTableAssociation sets the DefaultRouteTableAssociation field's value.
+func (s *TransitGatewayRequestOptions) SetDefaultRouteTableAssociation(v string) *TransitGatewayRequestOptions {
+ s.DefaultRouteTableAssociation = &v
+ return s
+}
+
+// SetDefaultRouteTablePropagation sets the DefaultRouteTablePropagation field's value.
+func (s *TransitGatewayRequestOptions) SetDefaultRouteTablePropagation(v string) *TransitGatewayRequestOptions {
+ s.DefaultRouteTablePropagation = &v
+ return s
+}
+
+// SetDnsSupport sets the DnsSupport field's value.
+func (s *TransitGatewayRequestOptions) SetDnsSupport(v string) *TransitGatewayRequestOptions {
+ s.DnsSupport = &v
+ return s
+}
+
+// SetVpnEcmpSupport sets the VpnEcmpSupport field's value.
+func (s *TransitGatewayRequestOptions) SetVpnEcmpSupport(v string) *TransitGatewayRequestOptions {
+ s.VpnEcmpSupport = &v
+ return s
+}
+
+// Describes a route for a transit gateway route table.
+type TransitGatewayRoute struct {
+ _ struct{} `type:"structure"`
+
+ // The CIDR block used for destination matches.
+ DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"`
+
+ // The state of the route.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayRouteState"`
+
+ // The attachments.
+ TransitGatewayAttachments []*TransitGatewayRouteAttachment `locationName:"transitGatewayAttachments" locationNameList:"item" type:"list"`
+
+ // The route type.
+ Type *string `locationName:"type" type:"string" enum:"TransitGatewayRouteType"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRoute) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRoute) GoString() string {
+ return s.String()
+}
+
+// SetDestinationCidrBlock sets the DestinationCidrBlock field's value.
+func (s *TransitGatewayRoute) SetDestinationCidrBlock(v string) *TransitGatewayRoute {
+ s.DestinationCidrBlock = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayRoute) SetState(v string) *TransitGatewayRoute {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayAttachments sets the TransitGatewayAttachments field's value.
+func (s *TransitGatewayRoute) SetTransitGatewayAttachments(v []*TransitGatewayRouteAttachment) *TransitGatewayRoute {
+ s.TransitGatewayAttachments = v
+ return s
+}
+
+// SetType sets the Type field's value.
+func (s *TransitGatewayRoute) SetType(v string) *TransitGatewayRoute {
+ s.Type = &v
+ return s
+}
+
+// Describes a route attachment.
+type TransitGatewayRouteAttachment struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The resource type.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRouteAttachment) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRouteAttachment) GoString() string {
+ return s.String()
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayRouteAttachment) SetResourceId(v string) *TransitGatewayRouteAttachment {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayRouteAttachment) SetResourceType(v string) *TransitGatewayRouteAttachment {
+ s.ResourceType = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayRouteAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteAttachment {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// Describes a transit gateway route table.
+type TransitGatewayRouteTable struct {
+ _ struct{} `type:"structure"`
+
+ // The creation time.
+ CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
+
+ // Indicates whether this is the default association route table for the transit
+ // gateway.
+ DefaultAssociationRouteTable *bool `locationName:"defaultAssociationRouteTable" type:"boolean"`
+
+ // Indicates whether this is the default propagation route table for the transit
+ // gateway.
+ DefaultPropagationRouteTable *bool `locationName:"defaultPropagationRouteTable" type:"boolean"`
+
+ // The state of the transit gateway route table.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayRouteTableState"`
+
+ // Any tags assigned to the route table.
+ Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+
+ // The ID of the transit gateway.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+
+ // The ID of the transit gateway route table.
+ TransitGatewayRouteTableId *string `locationName:"transitGatewayRouteTableId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRouteTable) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRouteTable) GoString() string {
+ return s.String()
+}
+
+// SetCreationTime sets the CreationTime field's value.
+func (s *TransitGatewayRouteTable) SetCreationTime(v time.Time) *TransitGatewayRouteTable {
+ s.CreationTime = &v
+ return s
+}
+
+// SetDefaultAssociationRouteTable sets the DefaultAssociationRouteTable field's value.
+func (s *TransitGatewayRouteTable) SetDefaultAssociationRouteTable(v bool) *TransitGatewayRouteTable {
+ s.DefaultAssociationRouteTable = &v
+ return s
+}
+
+// SetDefaultPropagationRouteTable sets the DefaultPropagationRouteTable field's value.
+func (s *TransitGatewayRouteTable) SetDefaultPropagationRouteTable(v bool) *TransitGatewayRouteTable {
+ s.DefaultPropagationRouteTable = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayRouteTable) SetState(v string) *TransitGatewayRouteTable {
+ s.State = &v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *TransitGatewayRouteTable) SetTags(v []*Tag) *TransitGatewayRouteTable {
+ s.Tags = v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *TransitGatewayRouteTable) SetTransitGatewayId(v string) *TransitGatewayRouteTable {
+ s.TransitGatewayId = &v
+ return s
+}
+
+// SetTransitGatewayRouteTableId sets the TransitGatewayRouteTableId field's value.
+func (s *TransitGatewayRouteTable) SetTransitGatewayRouteTableId(v string) *TransitGatewayRouteTable {
+ s.TransitGatewayRouteTableId = &v
+ return s
+}
+
+// Describes an association between a route table and a resource attachment.
+type TransitGatewayRouteTableAssociation struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The resource type.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The state of the association.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayAssociationState"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRouteTableAssociation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRouteTableAssociation) GoString() string {
+ return s.String()
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayRouteTableAssociation) SetResourceId(v string) *TransitGatewayRouteTableAssociation {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayRouteTableAssociation) SetResourceType(v string) *TransitGatewayRouteTableAssociation {
+ s.ResourceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayRouteTableAssociation) SetState(v string) *TransitGatewayRouteTableAssociation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayRouteTableAssociation) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteTableAssociation {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// Describes a route table propagation.
+type TransitGatewayRouteTablePropagation struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the resource.
+ ResourceId *string `locationName:"resourceId" type:"string"`
+
+ // The type of resource.
+ ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"`
+
+ // The state of the resource.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayPropagationState"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayRouteTablePropagation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayRouteTablePropagation) GoString() string {
+ return s.String()
+}
+
+// SetResourceId sets the ResourceId field's value.
+func (s *TransitGatewayRouteTablePropagation) SetResourceId(v string) *TransitGatewayRouteTablePropagation {
+ s.ResourceId = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *TransitGatewayRouteTablePropagation) SetResourceType(v string) *TransitGatewayRouteTablePropagation {
+ s.ResourceType = &v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayRouteTablePropagation) SetState(v string) *TransitGatewayRouteTablePropagation {
+ s.State = &v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayRouteTablePropagation) SetTransitGatewayAttachmentId(v string) *TransitGatewayRouteTablePropagation {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// Describes a VPC attachment.
+type TransitGatewayVpcAttachment struct {
+ _ struct{} `type:"structure"`
+
+ // The creation time.
+ CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
+
+ // The VPC attachment options.
+ Options *TransitGatewayVpcAttachmentOptions `locationName:"options" type:"structure"`
+
+ // The state of the VPC attachment.
+ State *string `locationName:"state" type:"string" enum:"TransitGatewayAttachmentState"`
+
+ // The IDs of the subnets.
+ SubnetIds []*string `locationName:"subnetIds" locationNameList:"item" type:"list"`
+
+ // The tags for the VPC attachment.
+ Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+
+ // The ID of the attachment.
+ TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"`
+
+ // The ID of the transit gateway.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+
+ // The ID of the VPC.
+ VpcId *string `locationName:"vpcId" type:"string"`
+
+ // The ID of the AWS account that owns the VPC.
+ VpcOwnerId *string `locationName:"vpcOwnerId" type:"string"`
+}
+
+// String returns the string representation
+func (s TransitGatewayVpcAttachment) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayVpcAttachment) GoString() string {
+ return s.String()
+}
+
+// SetCreationTime sets the CreationTime field's value.
+func (s *TransitGatewayVpcAttachment) SetCreationTime(v time.Time) *TransitGatewayVpcAttachment {
+ s.CreationTime = &v
+ return s
+}
+
+// SetOptions sets the Options field's value.
+func (s *TransitGatewayVpcAttachment) SetOptions(v *TransitGatewayVpcAttachmentOptions) *TransitGatewayVpcAttachment {
+ s.Options = v
+ return s
+}
+
+// SetState sets the State field's value.
+func (s *TransitGatewayVpcAttachment) SetState(v string) *TransitGatewayVpcAttachment {
+ s.State = &v
+ return s
+}
+
+// SetSubnetIds sets the SubnetIds field's value.
+func (s *TransitGatewayVpcAttachment) SetSubnetIds(v []*string) *TransitGatewayVpcAttachment {
+ s.SubnetIds = v
+ return s
+}
+
+// SetTags sets the Tags field's value.
+func (s *TransitGatewayVpcAttachment) SetTags(v []*Tag) *TransitGatewayVpcAttachment {
+ s.Tags = v
+ return s
+}
+
+// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value.
+func (s *TransitGatewayVpcAttachment) SetTransitGatewayAttachmentId(v string) *TransitGatewayVpcAttachment {
+ s.TransitGatewayAttachmentId = &v
+ return s
+}
+
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *TransitGatewayVpcAttachment) SetTransitGatewayId(v string) *TransitGatewayVpcAttachment {
+ s.TransitGatewayId = &v
+ return s
+}
+
+// SetVpcId sets the VpcId field's value.
+func (s *TransitGatewayVpcAttachment) SetVpcId(v string) *TransitGatewayVpcAttachment {
+ s.VpcId = &v
+ return s
+}
+
+// SetVpcOwnerId sets the VpcOwnerId field's value.
+func (s *TransitGatewayVpcAttachment) SetVpcOwnerId(v string) *TransitGatewayVpcAttachment {
+ s.VpcOwnerId = &v
+ return s
+}
+
+// Describes the VPC attachment options.
+type TransitGatewayVpcAttachmentOptions struct {
+ _ struct{} `type:"structure"`
+
+ // Indicates whether DNS support is enabled.
+ DnsSupport *string `locationName:"dnsSupport" type:"string" enum:"DnsSupportValue"`
+
+ // Indicates whether IPv6 support is enabled.
+ Ipv6Support *string `locationName:"ipv6Support" type:"string" enum:"Ipv6SupportValue"`
+}
+
+// String returns the string representation
+func (s TransitGatewayVpcAttachmentOptions) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TransitGatewayVpcAttachmentOptions) GoString() string {
+ return s.String()
+}
+
+// SetDnsSupport sets the DnsSupport field's value.
+func (s *TransitGatewayVpcAttachmentOptions) SetDnsSupport(v string) *TransitGatewayVpcAttachmentOptions {
+ s.DnsSupport = &v
+ return s
+}
+
+// SetIpv6Support sets the Ipv6Support field's value.
+func (s *TransitGatewayVpcAttachmentOptions) SetIpv6Support(v string) *TransitGatewayVpcAttachmentOptions {
+ s.Ipv6Support = &v
+ return s
+}
+
type UnassignIpv6AddressesInput struct {
_ struct{} `type:"structure"`
@@ -67702,7 +81801,6 @@ func (s UnassignPrivateIpAddressesOutput) GoString() string {
return s.String()
}
-// Contains the parameters for UnmonitorInstances.
type UnmonitorInstancesInput struct {
_ struct{} `type:"structure"`
@@ -67753,7 +81851,6 @@ func (s *UnmonitorInstancesInput) SetInstanceIds(v []*string) *UnmonitorInstance
return s
}
-// Contains the output of UnmonitorInstances.
type UnmonitorInstancesOutput struct {
_ struct{} `type:"structure"`
@@ -67851,9 +81948,7 @@ type UnsuccessfulItem struct {
_ struct{} `type:"structure"`
// Information about the error.
- //
- // Error is a required field
- Error *UnsuccessfulItemError `locationName:"error" type:"structure" required:"true"`
+ Error *UnsuccessfulItemError `locationName:"error" type:"structure"`
// The ID of the resource.
ResourceId *string `locationName:"resourceId" type:"string"`
@@ -67882,19 +81977,15 @@ func (s *UnsuccessfulItem) SetResourceId(v string) *UnsuccessfulItem {
}
// Information about the error that occurred. For more information about errors,
-// see Error Codes (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html).
+// see Error Codes (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html).
type UnsuccessfulItemError struct {
_ struct{} `type:"structure"`
// The error code.
- //
- // Code is a required field
- Code *string `locationName:"code" type:"string" required:"true"`
+ Code *string `locationName:"code" type:"string"`
// The error message accompanying the error code.
- //
- // Message is a required field
- Message *string `locationName:"message" type:"string" required:"true"`
+ Message *string `locationName:"message" type:"string"`
}
// String returns the string representation
@@ -68376,11 +82467,15 @@ type Volume struct {
// the baseline performance of the volume and the rate at which the volume accumulates
// I/O credits for bursting. For more information about General Purpose SSD
// baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types
- // (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
- // Constraint: Range is 100-32000 IOPS for io1 volumes and 100-10000 IOPS for
- // gp2 volumes.
+ // Constraints: Range is 100-16,000 IOPS for gp2 volumes and 100 to 64,000IOPS
+ // for io1 volumes in most regions. Maximum io1IOPS of 64,000 is guaranteed
+ // only on Nitro-based instances (AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances).
+ // Other instance families guarantee performance up to 32,000 IOPS. For more
+ // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
+ // in the Amazon Elastic Compute Cloud User Guide.
//
// Condition: This parameter is required for requests to create io1 volumes;
// it is not used in requests to create gp2, st1, sc1, or standard volumes.
@@ -68987,6 +83082,9 @@ type Vpc struct {
// Indicates whether the VPC is the default VPC.
IsDefault *bool `locationName:"isDefault" type:"boolean"`
+ // The ID of the AWS account that owns the VPC.
+ OwnerId *string `locationName:"ownerId" type:"string"`
+
// The current state of the VPC.
State *string `locationName:"state" type:"string" enum:"VpcState"`
@@ -69043,6 +83141,12 @@ func (s *Vpc) SetIsDefault(v bool) *Vpc {
return s
}
+// SetOwnerId sets the OwnerId field's value.
+func (s *Vpc) SetOwnerId(v string) *Vpc {
+ s.OwnerId = &v
+ return s
+}
+
// SetState sets the State field's value.
func (s *Vpc) SetState(v string) *Vpc {
s.State = &v
@@ -69680,9 +83784,7 @@ type VpnConnection struct {
_ struct{} `type:"structure"`
// The category of the VPN connection. A value of VPN indicates an AWS VPN connection.
- // A value of VPN-Classic indicates an AWS Classic VPN connection. For more
- // information, see AWS Managed VPN Categories (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html#vpn-categories)
- // in the Amazon Virtual Private Cloud User Guide.
+ // A value of VPN-Classic indicates an AWS Classic VPN connection.
Category *string `locationName:"category" type:"string"`
// The configuration information for the VPN connection's customer gateway (in
@@ -69706,6 +83808,9 @@ type VpnConnection struct {
// Any tags assigned to the VPN connection.
Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"`
+ // The ID of the transit gateway associated with the VPN connection.
+ TransitGatewayId *string `locationName:"transitGatewayId" type:"string"`
+
// The type of VPN connection.
Type *string `locationName:"type" type:"string" enum:"GatewayType"`
@@ -69771,6 +83876,12 @@ func (s *VpnConnection) SetTags(v []*Tag) *VpnConnection {
return s
}
+// SetTransitGatewayId sets the TransitGatewayId field's value.
+func (s *VpnConnection) SetTransitGatewayId(v string) *VpnConnection {
+ s.TransitGatewayId = &v
+ return s
+}
+
// SetType sets the Type field's value.
func (s *VpnConnection) SetType(v string) *VpnConnection {
s.Type = &v
@@ -70034,6 +84145,79 @@ func (s *VpnTunnelOptionsSpecification) SetTunnelInsideCidr(v string) *VpnTunnel
return s
}
+type WithdrawByoipCidrInput struct {
+ _ struct{} `type:"structure"`
+
+ // The public IPv4 address range, in CIDR notation.
+ //
+ // Cidr is a required field
+ Cidr *string `type:"string" required:"true"`
+
+ // Checks whether you have the required permissions for the action, without
+ // actually making the request, and provides an error response. If you have
+ // the required permissions, the error response is DryRunOperation. Otherwise,
+ // it is UnauthorizedOperation.
+ DryRun *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s WithdrawByoipCidrInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s WithdrawByoipCidrInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *WithdrawByoipCidrInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "WithdrawByoipCidrInput"}
+ if s.Cidr == nil {
+ invalidParams.Add(request.NewErrParamRequired("Cidr"))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetCidr sets the Cidr field's value.
+func (s *WithdrawByoipCidrInput) SetCidr(v string) *WithdrawByoipCidrInput {
+ s.Cidr = &v
+ return s
+}
+
+// SetDryRun sets the DryRun field's value.
+func (s *WithdrawByoipCidrInput) SetDryRun(v bool) *WithdrawByoipCidrInput {
+ s.DryRun = &v
+ return s
+}
+
+type WithdrawByoipCidrOutput struct {
+ _ struct{} `type:"structure"`
+
+ // Information about the address pool.
+ ByoipCidr *ByoipCidr `locationName:"byoipCidr" type:"structure"`
+}
+
+// String returns the string representation
+func (s WithdrawByoipCidrOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s WithdrawByoipCidrOutput) GoString() string {
+ return s.String()
+}
+
+// SetByoipCidr sets the ByoipCidr field's value.
+func (s *WithdrawByoipCidrOutput) SetByoipCidr(v *ByoipCidr) *WithdrawByoipCidrOutput {
+ s.ByoipCidr = v
+ return s
+}
+
const (
// AccountAttributeNameSupportedPlatforms is a AccountAttributeName enum value
AccountAttributeNameSupportedPlatforms = "supported-platforms"
@@ -70095,6 +84279,31 @@ const (
// ArchitectureValuesX8664 is a ArchitectureValues enum value
ArchitectureValuesX8664 = "x86_64"
+
+ // ArchitectureValuesArm64 is a ArchitectureValues enum value
+ ArchitectureValuesArm64 = "arm64"
+)
+
+const (
+ // AssociatedNetworkTypeVpc is a AssociatedNetworkType enum value
+ AssociatedNetworkTypeVpc = "vpc"
+)
+
+const (
+ // AssociationStatusCodeAssociating is a AssociationStatusCode enum value
+ AssociationStatusCodeAssociating = "associating"
+
+ // AssociationStatusCodeAssociated is a AssociationStatusCode enum value
+ AssociationStatusCodeAssociated = "associated"
+
+ // AssociationStatusCodeAssociationFailed is a AssociationStatusCode enum value
+ AssociationStatusCodeAssociationFailed = "association-failed"
+
+ // AssociationStatusCodeDisassociating is a AssociationStatusCode enum value
+ AssociationStatusCodeDisassociating = "disassociating"
+
+ // AssociationStatusCodeDisassociated is a AssociationStatusCode enum value
+ AssociationStatusCodeDisassociated = "disassociated"
)
const (
@@ -70112,6 +84321,14 @@ const (
)
const (
+ // AutoAcceptSharedAttachmentsValueEnable is a AutoAcceptSharedAttachmentsValue enum value
+ AutoAcceptSharedAttachmentsValueEnable = "enable"
+
+ // AutoAcceptSharedAttachmentsValueDisable is a AutoAcceptSharedAttachmentsValue enum value
+ AutoAcceptSharedAttachmentsValueDisable = "disable"
+)
+
+const (
// AutoPlacementOn is a AutoPlacement enum value
AutoPlacementOn = "on"
@@ -70180,6 +84397,29 @@ const (
)
const (
+ // ByoipCidrStateAdvertised is a ByoipCidrState enum value
+ ByoipCidrStateAdvertised = "advertised"
+
+ // ByoipCidrStateDeprovisioned is a ByoipCidrState enum value
+ ByoipCidrStateDeprovisioned = "deprovisioned"
+
+ // ByoipCidrStateFailedDeprovision is a ByoipCidrState enum value
+ ByoipCidrStateFailedDeprovision = "failed-deprovision"
+
+ // ByoipCidrStateFailedProvision is a ByoipCidrState enum value
+ ByoipCidrStateFailedProvision = "failed-provision"
+
+ // ByoipCidrStatePendingDeprovision is a ByoipCidrState enum value
+ ByoipCidrStatePendingDeprovision = "pending-deprovision"
+
+ // ByoipCidrStatePendingProvision is a ByoipCidrState enum value
+ ByoipCidrStatePendingProvision = "pending-provision"
+
+ // ByoipCidrStateProvisioned is a ByoipCidrState enum value
+ ByoipCidrStateProvisioned = "provisioned"
+)
+
+const (
// CancelBatchErrorCodeFleetRequestIdDoesNotExist is a CancelBatchErrorCode enum value
CancelBatchErrorCodeFleetRequestIdDoesNotExist = "fleetRequestIdDoesNotExist"
@@ -70211,6 +84451,146 @@ const (
)
const (
+ // CapacityReservationInstancePlatformLinuxUnix is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformLinuxUnix = "Linux/UNIX"
+
+ // CapacityReservationInstancePlatformRedHatEnterpriseLinux is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformRedHatEnterpriseLinux = "Red Hat Enterprise Linux"
+
+ // CapacityReservationInstancePlatformSuselinux is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformSuselinux = "SUSE Linux"
+
+ // CapacityReservationInstancePlatformWindows is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformWindows = "Windows"
+
+ // CapacityReservationInstancePlatformWindowswithSqlserver is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformWindowswithSqlserver = "Windows with SQL Server"
+
+ // CapacityReservationInstancePlatformWindowswithSqlserverEnterprise is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformWindowswithSqlserverEnterprise = "Windows with SQL Server Enterprise"
+
+ // CapacityReservationInstancePlatformWindowswithSqlserverStandard is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformWindowswithSqlserverStandard = "Windows with SQL Server Standard"
+
+ // CapacityReservationInstancePlatformWindowswithSqlserverWeb is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformWindowswithSqlserverWeb = "Windows with SQL Server Web"
+
+ // CapacityReservationInstancePlatformLinuxwithSqlserverStandard is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformLinuxwithSqlserverStandard = "Linux with SQL Server Standard"
+
+ // CapacityReservationInstancePlatformLinuxwithSqlserverWeb is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformLinuxwithSqlserverWeb = "Linux with SQL Server Web"
+
+ // CapacityReservationInstancePlatformLinuxwithSqlserverEnterprise is a CapacityReservationInstancePlatform enum value
+ CapacityReservationInstancePlatformLinuxwithSqlserverEnterprise = "Linux with SQL Server Enterprise"
+)
+
+const (
+ // CapacityReservationPreferenceOpen is a CapacityReservationPreference enum value
+ CapacityReservationPreferenceOpen = "open"
+
+ // CapacityReservationPreferenceNone is a CapacityReservationPreference enum value
+ CapacityReservationPreferenceNone = "none"
+)
+
+const (
+ // CapacityReservationStateActive is a CapacityReservationState enum value
+ CapacityReservationStateActive = "active"
+
+ // CapacityReservationStateExpired is a CapacityReservationState enum value
+ CapacityReservationStateExpired = "expired"
+
+ // CapacityReservationStateCancelled is a CapacityReservationState enum value
+ CapacityReservationStateCancelled = "cancelled"
+
+ // CapacityReservationStatePending is a CapacityReservationState enum value
+ CapacityReservationStatePending = "pending"
+
+ // CapacityReservationStateFailed is a CapacityReservationState enum value
+ CapacityReservationStateFailed = "failed"
+)
+
+const (
+ // CapacityReservationTenancyDefault is a CapacityReservationTenancy enum value
+ CapacityReservationTenancyDefault = "default"
+
+ // CapacityReservationTenancyDedicated is a CapacityReservationTenancy enum value
+ CapacityReservationTenancyDedicated = "dedicated"
+)
+
+const (
+ // ClientCertificateRevocationListStatusCodePending is a ClientCertificateRevocationListStatusCode enum value
+ ClientCertificateRevocationListStatusCodePending = "pending"
+
+ // ClientCertificateRevocationListStatusCodeActive is a ClientCertificateRevocationListStatusCode enum value
+ ClientCertificateRevocationListStatusCodeActive = "active"
+)
+
+const (
+ // ClientVpnAuthenticationTypeCertificateAuthentication is a ClientVpnAuthenticationType enum value
+ ClientVpnAuthenticationTypeCertificateAuthentication = "certificate-authentication"
+
+ // ClientVpnAuthenticationTypeDirectoryServiceAuthentication is a ClientVpnAuthenticationType enum value
+ ClientVpnAuthenticationTypeDirectoryServiceAuthentication = "directory-service-authentication"
+)
+
+const (
+ // ClientVpnAuthorizationRuleStatusCodeAuthorizing is a ClientVpnAuthorizationRuleStatusCode enum value
+ ClientVpnAuthorizationRuleStatusCodeAuthorizing = "authorizing"
+
+ // ClientVpnAuthorizationRuleStatusCodeActive is a ClientVpnAuthorizationRuleStatusCode enum value
+ ClientVpnAuthorizationRuleStatusCodeActive = "active"
+
+ // ClientVpnAuthorizationRuleStatusCodeFailed is a ClientVpnAuthorizationRuleStatusCode enum value
+ ClientVpnAuthorizationRuleStatusCodeFailed = "failed"
+
+ // ClientVpnAuthorizationRuleStatusCodeRevoking is a ClientVpnAuthorizationRuleStatusCode enum value
+ ClientVpnAuthorizationRuleStatusCodeRevoking = "revoking"
+)
+
+const (
+ // ClientVpnConnectionStatusCodeActive is a ClientVpnConnectionStatusCode enum value
+ ClientVpnConnectionStatusCodeActive = "active"
+
+ // ClientVpnConnectionStatusCodeFailedToTerminate is a ClientVpnConnectionStatusCode enum value
+ ClientVpnConnectionStatusCodeFailedToTerminate = "failed-to-terminate"
+
+ // ClientVpnConnectionStatusCodeTerminating is a ClientVpnConnectionStatusCode enum value
+ ClientVpnConnectionStatusCodeTerminating = "terminating"
+
+ // ClientVpnConnectionStatusCodeTerminated is a ClientVpnConnectionStatusCode enum value
+ ClientVpnConnectionStatusCodeTerminated = "terminated"
+)
+
+const (
+ // ClientVpnEndpointStatusCodePendingAssociate is a ClientVpnEndpointStatusCode enum value
+ ClientVpnEndpointStatusCodePendingAssociate = "pending-associate"
+
+ // ClientVpnEndpointStatusCodeAvailable is a ClientVpnEndpointStatusCode enum value
+ ClientVpnEndpointStatusCodeAvailable = "available"
+
+ // ClientVpnEndpointStatusCodeDeleting is a ClientVpnEndpointStatusCode enum value
+ ClientVpnEndpointStatusCodeDeleting = "deleting"
+
+ // ClientVpnEndpointStatusCodeDeleted is a ClientVpnEndpointStatusCode enum value
+ ClientVpnEndpointStatusCodeDeleted = "deleted"
+)
+
+const (
+ // ClientVpnRouteStatusCodeCreating is a ClientVpnRouteStatusCode enum value
+ ClientVpnRouteStatusCodeCreating = "creating"
+
+ // ClientVpnRouteStatusCodeActive is a ClientVpnRouteStatusCode enum value
+ ClientVpnRouteStatusCodeActive = "active"
+
+ // ClientVpnRouteStatusCodeFailed is a ClientVpnRouteStatusCode enum value
+ ClientVpnRouteStatusCodeFailed = "failed"
+
+ // ClientVpnRouteStatusCodeDeleting is a ClientVpnRouteStatusCode enum value
+ ClientVpnRouteStatusCodeDeleting = "deleting"
+)
+
+const (
// ConnectionNotificationStateEnabled is a ConnectionNotificationState enum value
ConnectionNotificationStateEnabled = "Enabled"
@@ -70256,6 +84636,22 @@ const (
)
const (
+ // DefaultRouteTableAssociationValueEnable is a DefaultRouteTableAssociationValue enum value
+ DefaultRouteTableAssociationValueEnable = "enable"
+
+ // DefaultRouteTableAssociationValueDisable is a DefaultRouteTableAssociationValue enum value
+ DefaultRouteTableAssociationValueDisable = "disable"
+)
+
+const (
+ // DefaultRouteTablePropagationValueEnable is a DefaultRouteTablePropagationValue enum value
+ DefaultRouteTablePropagationValueEnable = "enable"
+
+ // DefaultRouteTablePropagationValueDisable is a DefaultRouteTablePropagationValue enum value
+ DefaultRouteTablePropagationValueDisable = "disable"
+)
+
+const (
// DefaultTargetCapacityTypeSpot is a DefaultTargetCapacityType enum value
DefaultTargetCapacityTypeSpot = "spot"
@@ -70297,6 +84693,14 @@ const (
)
const (
+ // DnsSupportValueEnable is a DnsSupportValue enum value
+ DnsSupportValueEnable = "enable"
+
+ // DnsSupportValueDisable is a DnsSupportValue enum value
+ DnsSupportValueDisable = "disable"
+)
+
+const (
// DomainTypeVpc is a DomainType enum value
DomainTypeVpc = "vpc"
@@ -70318,6 +84722,14 @@ const (
)
const (
+ // EndDateTypeUnlimited is a EndDateType enum value
+ EndDateTypeUnlimited = "unlimited"
+
+ // EndDateTypeLimited is a EndDateType enum value
+ EndDateTypeLimited = "limited"
+)
+
+const (
// EventCodeInstanceReboot is a EventCode enum value
EventCodeInstanceReboot = "instance-reboot"
@@ -70448,6 +84860,9 @@ const (
// FleetTypeMaintain is a FleetType enum value
FleetTypeMaintain = "maintain"
+
+ // FleetTypeInstant is a FleetType enum value
+ FleetTypeInstant = "instant"
)
const (
@@ -70645,6 +85060,14 @@ const (
)
const (
+ // InstanceLifecycleSpot is a InstanceLifecycle enum value
+ InstanceLifecycleSpot = "spot"
+
+ // InstanceLifecycleOnDemand is a InstanceLifecycle enum value
+ InstanceLifecycleOnDemand = "on-demand"
+)
+
+const (
// InstanceLifecycleTypeSpot is a InstanceLifecycleType enum value
InstanceLifecycleTypeSpot = "spot"
@@ -70653,6 +85076,14 @@ const (
)
const (
+ // InstanceMatchCriteriaOpen is a InstanceMatchCriteria enum value
+ InstanceMatchCriteriaOpen = "open"
+
+ // InstanceMatchCriteriaTargeted is a InstanceMatchCriteria enum value
+ InstanceMatchCriteriaTargeted = "targeted"
+)
+
+const (
// InstanceStateNamePending is a InstanceStateName enum value
InstanceStateNamePending = "pending"
@@ -70817,21 +85248,33 @@ const (
// InstanceTypeR54xlarge is a InstanceType enum value
InstanceTypeR54xlarge = "r5.4xlarge"
- // InstanceTypeR58xlarge is a InstanceType enum value
- InstanceTypeR58xlarge = "r5.8xlarge"
-
// InstanceTypeR512xlarge is a InstanceType enum value
InstanceTypeR512xlarge = "r5.12xlarge"
- // InstanceTypeR516xlarge is a InstanceType enum value
- InstanceTypeR516xlarge = "r5.16xlarge"
-
// InstanceTypeR524xlarge is a InstanceType enum value
InstanceTypeR524xlarge = "r5.24xlarge"
// InstanceTypeR5Metal is a InstanceType enum value
InstanceTypeR5Metal = "r5.metal"
+ // InstanceTypeR5aLarge is a InstanceType enum value
+ InstanceTypeR5aLarge = "r5a.large"
+
+ // InstanceTypeR5aXlarge is a InstanceType enum value
+ InstanceTypeR5aXlarge = "r5a.xlarge"
+
+ // InstanceTypeR5a2xlarge is a InstanceType enum value
+ InstanceTypeR5a2xlarge = "r5a.2xlarge"
+
+ // InstanceTypeR5a4xlarge is a InstanceType enum value
+ InstanceTypeR5a4xlarge = "r5a.4xlarge"
+
+ // InstanceTypeR5a12xlarge is a InstanceType enum value
+ InstanceTypeR5a12xlarge = "r5a.12xlarge"
+
+ // InstanceTypeR5a24xlarge is a InstanceType enum value
+ InstanceTypeR5a24xlarge = "r5a.24xlarge"
+
// InstanceTypeR5dLarge is a InstanceType enum value
InstanceTypeR5dLarge = "r5d.large"
@@ -70844,15 +85287,9 @@ const (
// InstanceTypeR5d4xlarge is a InstanceType enum value
InstanceTypeR5d4xlarge = "r5d.4xlarge"
- // InstanceTypeR5d8xlarge is a InstanceType enum value
- InstanceTypeR5d8xlarge = "r5d.8xlarge"
-
// InstanceTypeR5d12xlarge is a InstanceType enum value
InstanceTypeR5d12xlarge = "r5d.12xlarge"
- // InstanceTypeR5d16xlarge is a InstanceType enum value
- InstanceTypeR5d16xlarge = "r5d.16xlarge"
-
// InstanceTypeR5d24xlarge is a InstanceType enum value
InstanceTypeR5d24xlarge = "r5d.24xlarge"
@@ -70994,6 +85431,24 @@ const (
// InstanceTypeC5d18xlarge is a InstanceType enum value
InstanceTypeC5d18xlarge = "c5d.18xlarge"
+ // InstanceTypeC5nLarge is a InstanceType enum value
+ InstanceTypeC5nLarge = "c5n.large"
+
+ // InstanceTypeC5nXlarge is a InstanceType enum value
+ InstanceTypeC5nXlarge = "c5n.xlarge"
+
+ // InstanceTypeC5n2xlarge is a InstanceType enum value
+ InstanceTypeC5n2xlarge = "c5n.2xlarge"
+
+ // InstanceTypeC5n4xlarge is a InstanceType enum value
+ InstanceTypeC5n4xlarge = "c5n.4xlarge"
+
+ // InstanceTypeC5n9xlarge is a InstanceType enum value
+ InstanceTypeC5n9xlarge = "c5n.9xlarge"
+
+ // InstanceTypeC5n18xlarge is a InstanceType enum value
+ InstanceTypeC5n18xlarge = "c5n.18xlarge"
+
// InstanceTypeCc14xlarge is a InstanceType enum value
InstanceTypeCc14xlarge = "cc1.4xlarge"
@@ -71015,6 +85470,9 @@ const (
// InstanceTypeG316xlarge is a InstanceType enum value
InstanceTypeG316xlarge = "g3.16xlarge"
+ // InstanceTypeG3sXlarge is a InstanceType enum value
+ InstanceTypeG3sXlarge = "g3s.xlarge"
+
// InstanceTypeCg14xlarge is a InstanceType enum value
InstanceTypeCg14xlarge = "cg1.4xlarge"
@@ -71036,6 +85494,9 @@ const (
// InstanceTypeP316xlarge is a InstanceType enum value
InstanceTypeP316xlarge = "p3.16xlarge"
+ // InstanceTypeP3dn24xlarge is a InstanceType enum value
+ InstanceTypeP3dn24xlarge = "p3dn.24xlarge"
+
// InstanceTypeD2Xlarge is a InstanceType enum value
InstanceTypeD2Xlarge = "d2.xlarge"
@@ -71075,6 +85536,24 @@ const (
// InstanceTypeM524xlarge is a InstanceType enum value
InstanceTypeM524xlarge = "m5.24xlarge"
+ // InstanceTypeM5aLarge is a InstanceType enum value
+ InstanceTypeM5aLarge = "m5a.large"
+
+ // InstanceTypeM5aXlarge is a InstanceType enum value
+ InstanceTypeM5aXlarge = "m5a.xlarge"
+
+ // InstanceTypeM5a2xlarge is a InstanceType enum value
+ InstanceTypeM5a2xlarge = "m5a.2xlarge"
+
+ // InstanceTypeM5a4xlarge is a InstanceType enum value
+ InstanceTypeM5a4xlarge = "m5a.4xlarge"
+
+ // InstanceTypeM5a12xlarge is a InstanceType enum value
+ InstanceTypeM5a12xlarge = "m5a.12xlarge"
+
+ // InstanceTypeM5a24xlarge is a InstanceType enum value
+ InstanceTypeM5a24xlarge = "m5a.24xlarge"
+
// InstanceTypeM5dLarge is a InstanceType enum value
InstanceTypeM5dLarge = "m5d.large"
@@ -71122,6 +85601,30 @@ const (
// InstanceTypeZ1d12xlarge is a InstanceType enum value
InstanceTypeZ1d12xlarge = "z1d.12xlarge"
+
+ // InstanceTypeU6tb1Metal is a InstanceType enum value
+ InstanceTypeU6tb1Metal = "u-6tb1.metal"
+
+ // InstanceTypeU9tb1Metal is a InstanceType enum value
+ InstanceTypeU9tb1Metal = "u-9tb1.metal"
+
+ // InstanceTypeU12tb1Metal is a InstanceType enum value
+ InstanceTypeU12tb1Metal = "u-12tb1.metal"
+
+ // InstanceTypeA1Medium is a InstanceType enum value
+ InstanceTypeA1Medium = "a1.medium"
+
+ // InstanceTypeA1Large is a InstanceType enum value
+ InstanceTypeA1Large = "a1.large"
+
+ // InstanceTypeA1Xlarge is a InstanceType enum value
+ InstanceTypeA1Xlarge = "a1.xlarge"
+
+ // InstanceTypeA12xlarge is a InstanceType enum value
+ InstanceTypeA12xlarge = "a1.2xlarge"
+
+ // InstanceTypeA14xlarge is a InstanceType enum value
+ InstanceTypeA14xlarge = "a1.4xlarge"
)
const (
@@ -71133,6 +85636,14 @@ const (
)
const (
+ // Ipv6SupportValueEnable is a Ipv6SupportValue enum value
+ Ipv6SupportValueEnable = "enable"
+
+ // Ipv6SupportValueDisable is a Ipv6SupportValue enum value
+ Ipv6SupportValueDisable = "disable"
+)
+
+const (
// LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist is a LaunchTemplateErrorCode enum value
LaunchTemplateErrorCodeLaunchTemplateIdDoesNotExist = "launchTemplateIdDoesNotExist"
@@ -71365,6 +85876,9 @@ const (
// PlacementStrategySpread is a PlacementStrategy enum value
PlacementStrategySpread = "spread"
+
+ // PlacementStrategyPartition is a PlacementStrategy enum value
+ PlacementStrategyPartition = "partition"
)
const (
@@ -71504,6 +86018,15 @@ const (
// ResourceTypeDhcpOptions is a ResourceType enum value
ResourceTypeDhcpOptions = "dhcp-options"
+ // ResourceTypeElasticIp is a ResourceType enum value
+ ResourceTypeElasticIp = "elastic-ip"
+
+ // ResourceTypeFleet is a ResourceType enum value
+ ResourceTypeFleet = "fleet"
+
+ // ResourceTypeFpgaImage is a ResourceType enum value
+ ResourceTypeFpgaImage = "fpga-image"
+
// ResourceTypeImage is a ResourceType enum value
ResourceTypeImage = "image"
@@ -71513,6 +86036,12 @@ const (
// ResourceTypeInternetGateway is a ResourceType enum value
ResourceTypeInternetGateway = "internet-gateway"
+ // ResourceTypeLaunchTemplate is a ResourceType enum value
+ ResourceTypeLaunchTemplate = "launch-template"
+
+ // ResourceTypeNatgateway is a ResourceType enum value
+ ResourceTypeNatgateway = "natgateway"
+
// ResourceTypeNetworkAcl is a ResourceType enum value
ResourceTypeNetworkAcl = "network-acl"
@@ -71525,6 +86054,9 @@ const (
// ResourceTypeRouteTable is a ResourceType enum value
ResourceTypeRouteTable = "route-table"
+ // ResourceTypeSecurityGroup is a ResourceType enum value
+ ResourceTypeSecurityGroup = "security-group"
+
// ResourceTypeSnapshot is a ResourceType enum value
ResourceTypeSnapshot = "snapshot"
@@ -71534,8 +86066,14 @@ const (
// ResourceTypeSubnet is a ResourceType enum value
ResourceTypeSubnet = "subnet"
- // ResourceTypeSecurityGroup is a ResourceType enum value
- ResourceTypeSecurityGroup = "security-group"
+ // ResourceTypeTransitGateway is a ResourceType enum value
+ ResourceTypeTransitGateway = "transit-gateway"
+
+ // ResourceTypeTransitGatewayAttachment is a ResourceType enum value
+ ResourceTypeTransitGatewayAttachment = "transit-gateway-attachment"
+
+ // ResourceTypeTransitGatewayRouteTable is a ResourceType enum value
+ ResourceTypeTransitGatewayRouteTable = "transit-gateway-route-table"
// ResourceTypeVolume is a ResourceType enum value
ResourceTypeVolume = "volume"
@@ -71543,6 +86081,9 @@ const (
// ResourceTypeVpc is a ResourceType enum value
ResourceTypeVpc = "vpc"
+ // ResourceTypeVpcPeeringConnection is a ResourceType enum value
+ ResourceTypeVpcPeeringConnection = "vpc-peering-connection"
+
// ResourceTypeVpnConnection is a ResourceType enum value
ResourceTypeVpnConnection = "vpn-connection"
@@ -71805,6 +86346,141 @@ const (
)
const (
+ // TransitGatewayAssociationStateAssociating is a TransitGatewayAssociationState enum value
+ TransitGatewayAssociationStateAssociating = "associating"
+
+ // TransitGatewayAssociationStateAssociated is a TransitGatewayAssociationState enum value
+ TransitGatewayAssociationStateAssociated = "associated"
+
+ // TransitGatewayAssociationStateDisassociating is a TransitGatewayAssociationState enum value
+ TransitGatewayAssociationStateDisassociating = "disassociating"
+
+ // TransitGatewayAssociationStateDisassociated is a TransitGatewayAssociationState enum value
+ TransitGatewayAssociationStateDisassociated = "disassociated"
+)
+
+const (
+ // TransitGatewayAttachmentResourceTypeVpc is a TransitGatewayAttachmentResourceType enum value
+ TransitGatewayAttachmentResourceTypeVpc = "vpc"
+
+ // TransitGatewayAttachmentResourceTypeVpn is a TransitGatewayAttachmentResourceType enum value
+ TransitGatewayAttachmentResourceTypeVpn = "vpn"
+)
+
+const (
+ // TransitGatewayAttachmentStatePendingAcceptance is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStatePendingAcceptance = "pendingAcceptance"
+
+ // TransitGatewayAttachmentStateRollingBack is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateRollingBack = "rollingBack"
+
+ // TransitGatewayAttachmentStatePending is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStatePending = "pending"
+
+ // TransitGatewayAttachmentStateAvailable is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateAvailable = "available"
+
+ // TransitGatewayAttachmentStateModifying is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateModifying = "modifying"
+
+ // TransitGatewayAttachmentStateDeleting is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateDeleting = "deleting"
+
+ // TransitGatewayAttachmentStateDeleted is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateDeleted = "deleted"
+
+ // TransitGatewayAttachmentStateFailed is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateFailed = "failed"
+
+ // TransitGatewayAttachmentStateRejected is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateRejected = "rejected"
+
+ // TransitGatewayAttachmentStateRejecting is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateRejecting = "rejecting"
+
+ // TransitGatewayAttachmentStateFailing is a TransitGatewayAttachmentState enum value
+ TransitGatewayAttachmentStateFailing = "failing"
+)
+
+const (
+ // TransitGatewayPropagationStateEnabling is a TransitGatewayPropagationState enum value
+ TransitGatewayPropagationStateEnabling = "enabling"
+
+ // TransitGatewayPropagationStateEnabled is a TransitGatewayPropagationState enum value
+ TransitGatewayPropagationStateEnabled = "enabled"
+
+ // TransitGatewayPropagationStateDisabling is a TransitGatewayPropagationState enum value
+ TransitGatewayPropagationStateDisabling = "disabling"
+
+ // TransitGatewayPropagationStateDisabled is a TransitGatewayPropagationState enum value
+ TransitGatewayPropagationStateDisabled = "disabled"
+)
+
+const (
+ // TransitGatewayRouteStatePending is a TransitGatewayRouteState enum value
+ TransitGatewayRouteStatePending = "pending"
+
+ // TransitGatewayRouteStateActive is a TransitGatewayRouteState enum value
+ TransitGatewayRouteStateActive = "active"
+
+ // TransitGatewayRouteStateBlackhole is a TransitGatewayRouteState enum value
+ TransitGatewayRouteStateBlackhole = "blackhole"
+
+ // TransitGatewayRouteStateDeleting is a TransitGatewayRouteState enum value
+ TransitGatewayRouteStateDeleting = "deleting"
+
+ // TransitGatewayRouteStateDeleted is a TransitGatewayRouteState enum value
+ TransitGatewayRouteStateDeleted = "deleted"
+)
+
+const (
+ // TransitGatewayRouteTableStatePending is a TransitGatewayRouteTableState enum value
+ TransitGatewayRouteTableStatePending = "pending"
+
+ // TransitGatewayRouteTableStateAvailable is a TransitGatewayRouteTableState enum value
+ TransitGatewayRouteTableStateAvailable = "available"
+
+ // TransitGatewayRouteTableStateDeleting is a TransitGatewayRouteTableState enum value
+ TransitGatewayRouteTableStateDeleting = "deleting"
+
+ // TransitGatewayRouteTableStateDeleted is a TransitGatewayRouteTableState enum value
+ TransitGatewayRouteTableStateDeleted = "deleted"
+)
+
+const (
+ // TransitGatewayRouteTypeStatic is a TransitGatewayRouteType enum value
+ TransitGatewayRouteTypeStatic = "static"
+
+ // TransitGatewayRouteTypePropagated is a TransitGatewayRouteType enum value
+ TransitGatewayRouteTypePropagated = "propagated"
+)
+
+const (
+ // TransitGatewayStatePending is a TransitGatewayState enum value
+ TransitGatewayStatePending = "pending"
+
+ // TransitGatewayStateAvailable is a TransitGatewayState enum value
+ TransitGatewayStateAvailable = "available"
+
+ // TransitGatewayStateModifying is a TransitGatewayState enum value
+ TransitGatewayStateModifying = "modifying"
+
+ // TransitGatewayStateDeleting is a TransitGatewayState enum value
+ TransitGatewayStateDeleting = "deleting"
+
+ // TransitGatewayStateDeleted is a TransitGatewayState enum value
+ TransitGatewayStateDeleted = "deleted"
+)
+
+const (
+ // TransportProtocolTcp is a TransportProtocol enum value
+ TransportProtocolTcp = "tcp"
+
+ // TransportProtocolUdp is a TransportProtocol enum value
+ TransportProtocolUdp = "udp"
+)
+
+const (
// UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed is a UnsuccessfulInstanceCreditSpecificationErrorCode enum value
UnsuccessfulInstanceCreditSpecificationErrorCodeInvalidInstanceIdMalformed = "InvalidInstanceID.Malformed"
@@ -72000,6 +86676,19 @@ const (
)
const (
+ // VpnEcmpSupportValueEnable is a VpnEcmpSupportValue enum value
+ VpnEcmpSupportValueEnable = "enable"
+
+ // VpnEcmpSupportValueDisable is a VpnEcmpSupportValue enum value
+ VpnEcmpSupportValueDisable = "disable"
+)
+
+const (
+ // VpnProtocolOpenvpn is a VpnProtocol enum value
+ VpnProtocolOpenvpn = "openvpn"
+)
+
+const (
// VpnStatePending is a VpnState enum value
VpnStatePending = "pending"
diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go
index ddfb5cd5..db90e623 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go
@@ -9,6 +9,8 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/aws/aws-sdk-go/aws/request"
+ "github.com/aws/aws-sdk-go/private/protocol"
+ "github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)
const opAddTagsToResource = "AddTagsToResource"
@@ -16,7 +18,7 @@ const opAddTagsToResource = "AddTagsToResource"
// AddTagsToResourceRequest generates a "aws/request.Request" representing the
// client's request for the AddTagsToResource operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -50,6 +52,7 @@ func (c *SSM) AddTagsToResourceRequest(input *AddTagsToResourceInput) (req *requ
output = &AddTagsToResourceOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -130,7 +133,7 @@ const opCancelCommand = "CancelCommand"
// CancelCommandRequest generates a "aws/request.Request" representing the
// client's request for the CancelCommand operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -164,6 +167,7 @@ func (c *SSM) CancelCommandRequest(input *CancelCommandInput) (req *request.Requ
output = &CancelCommandOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -225,12 +229,100 @@ func (c *SSM) CancelCommandWithContext(ctx aws.Context, input *CancelCommandInpu
return out, req.Send()
}
+const opCancelMaintenanceWindowExecution = "CancelMaintenanceWindowExecution"
+
+// CancelMaintenanceWindowExecutionRequest generates a "aws/request.Request" representing the
+// client's request for the CancelMaintenanceWindowExecution operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CancelMaintenanceWindowExecution for more information on using the CancelMaintenanceWindowExecution
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the CancelMaintenanceWindowExecutionRequest method.
+// req, resp := client.CancelMaintenanceWindowExecutionRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelMaintenanceWindowExecution
+func (c *SSM) CancelMaintenanceWindowExecutionRequest(input *CancelMaintenanceWindowExecutionInput) (req *request.Request, output *CancelMaintenanceWindowExecutionOutput) {
+ op := &request.Operation{
+ Name: opCancelMaintenanceWindowExecution,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &CancelMaintenanceWindowExecutionInput{}
+ }
+
+ output = &CancelMaintenanceWindowExecutionOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// CancelMaintenanceWindowExecution API operation for Amazon Simple Systems Manager (SSM).
+//
+// Stops a Maintenance Window execution that is already in progress and cancels
+// any tasks in the window that have not already starting running. (Tasks already
+// in progress will continue to completion.)
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
+// API operation CancelMaintenanceWindowExecution for usage and error information.
+//
+// Returned Error Codes:
+// * ErrCodeInternalServerError "InternalServerError"
+// An error occurred on the server side.
+//
+// * ErrCodeDoesNotExistException "DoesNotExistException"
+// Error returned when the ID specified for a resource, such as a Maintenance
+// Window or Patch baseline, doesn't exist.
+//
+// For information about resource limits in Systems Manager, see AWS Systems
+// Manager Limits (http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_ssm).
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/CancelMaintenanceWindowExecution
+func (c *SSM) CancelMaintenanceWindowExecution(input *CancelMaintenanceWindowExecutionInput) (*CancelMaintenanceWindowExecutionOutput, error) {
+ req, out := c.CancelMaintenanceWindowExecutionRequest(input)
+ return out, req.Send()
+}
+
+// CancelMaintenanceWindowExecutionWithContext is the same as CancelMaintenanceWindowExecution with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CancelMaintenanceWindowExecution for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *SSM) CancelMaintenanceWindowExecutionWithContext(ctx aws.Context, input *CancelMaintenanceWindowExecutionInput, opts ...request.Option) (*CancelMaintenanceWindowExecutionOutput, error) {
+ req, out := c.CancelMaintenanceWindowExecutionRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opCreateActivation = "CreateActivation"
// CreateActivationRequest generates a "aws/request.Request" representing the
// client's request for the CreateActivation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -313,7 +405,7 @@ const opCreateAssociation = "CreateAssociation"
// CreateAssociationRequest generates a "aws/request.Request" representing the
// client's request for the CreateAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -360,7 +452,7 @@ func (c *SSM) CreateAssociationRequest(input *CreateAssociationInput) (req *requ
// the instance as specified.
//
// If you associate a document with an instance that already has an associated
-// document, the system throws the AssociationAlreadyExists exception.
+// document, the system returns the AssociationAlreadyExists exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -446,7 +538,7 @@ const opCreateAssociationBatch = "CreateAssociationBatch"
// CreateAssociationBatchRequest generates a "aws/request.Request" representing the
// client's request for the CreateAssociationBatch operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -493,7 +585,7 @@ func (c *SSM) CreateAssociationBatchRequest(input *CreateAssociationBatchInput)
// the instance as specified.
//
// If you associate a document with an instance that already has an associated
-// document, the system throws the AssociationAlreadyExists exception.
+// document, the system returns the AssociationAlreadyExists exception.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -579,7 +671,7 @@ const opCreateDocument = "CreateDocument"
// CreateDocumentRequest generates a "aws/request.Request" representing the
// client's request for the CreateDocument operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -676,7 +768,7 @@ const opCreateMaintenanceWindow = "CreateMaintenanceWindow"
// CreateMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the CreateMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -766,7 +858,7 @@ const opCreatePatchBaseline = "CreatePatchBaseline"
// CreatePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the CreatePatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -859,7 +951,7 @@ const opCreateResourceDataSync = "CreateResourceDataSync"
// CreateResourceDataSyncRequest generates a "aws/request.Request" representing the
// client's request for the CreateResourceDataSync operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -893,6 +985,7 @@ func (c *SSM) CreateResourceDataSyncRequest(input *CreateResourceDataSyncInput)
output = &CreateResourceDataSyncOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -957,7 +1050,7 @@ const opDeleteActivation = "DeleteActivation"
// DeleteActivationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteActivation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -991,6 +1084,7 @@ func (c *SSM) DeleteActivationRequest(input *DeleteActivationInput) (req *reques
output = &DeleteActivationOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1051,7 +1145,7 @@ const opDeleteAssociation = "DeleteAssociation"
// DeleteAssociationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1085,6 +1179,7 @@ func (c *SSM) DeleteAssociationRequest(input *DeleteAssociationInput) (req *requ
output = &DeleteAssociationOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1160,7 +1255,7 @@ const opDeleteDocument = "DeleteDocument"
// DeleteDocumentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDocument operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1194,6 +1289,7 @@ func (c *SSM) DeleteDocumentRequest(input *DeleteDocumentInput) (req *request.Re
output = &DeleteDocumentOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1254,7 +1350,7 @@ const opDeleteInventory = "DeleteInventory"
// DeleteInventoryRequest generates a "aws/request.Request" representing the
// client's request for the DeleteInventory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1349,7 +1445,7 @@ const opDeleteMaintenanceWindow = "DeleteMaintenanceWindow"
// DeleteMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeleteMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1428,7 +1524,7 @@ const opDeleteParameter = "DeleteParameter"
// DeleteParameterRequest generates a "aws/request.Request" representing the
// client's request for the DeleteParameter operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1462,6 +1558,7 @@ func (c *SSM) DeleteParameterRequest(input *DeleteParameterInput) (req *request.
output = &DeleteParameterOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1510,7 +1607,7 @@ const opDeleteParameters = "DeleteParameters"
// DeleteParametersRequest generates a "aws/request.Request" representing the
// client's request for the DeleteParameters operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1590,7 +1687,7 @@ const opDeletePatchBaseline = "DeletePatchBaseline"
// DeletePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the DeletePatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1673,7 +1770,7 @@ const opDeleteResourceDataSync = "DeleteResourceDataSync"
// DeleteResourceDataSyncRequest generates a "aws/request.Request" representing the
// client's request for the DeleteResourceDataSync operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1707,6 +1804,7 @@ func (c *SSM) DeleteResourceDataSyncRequest(input *DeleteResourceDataSyncInput)
output = &DeleteResourceDataSyncOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1758,7 +1856,7 @@ const opDeregisterManagedInstance = "DeregisterManagedInstance"
// DeregisterManagedInstanceRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterManagedInstance operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1792,6 +1890,7 @@ func (c *SSM) DeregisterManagedInstanceRequest(input *DeregisterManagedInstanceI
output = &DeregisterManagedInstanceOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -1854,7 +1953,7 @@ const opDeregisterPatchBaselineForPatchGroup = "DeregisterPatchBaselineForPatchG
// DeregisterPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterPatchBaselineForPatchGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -1937,7 +2036,7 @@ const opDeregisterTargetFromMaintenanceWindow = "DeregisterTargetFromMaintenance
// DeregisterTargetFromMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterTargetFromMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2027,7 +2126,7 @@ const opDeregisterTaskFromMaintenanceWindow = "DeregisterTaskFromMaintenanceWind
// DeregisterTaskFromMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterTaskFromMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2113,7 +2212,7 @@ const opDescribeActivations = "DescribeActivations"
// DescribeActivationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeActivations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2257,7 +2356,7 @@ const opDescribeAssociation = "DescribeAssociation"
// DescribeAssociationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2366,7 +2465,7 @@ const opDescribeAssociationExecutionTargets = "DescribeAssociationExecutionTarge
// DescribeAssociationExecutionTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssociationExecutionTargets operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2455,7 +2554,7 @@ const opDescribeAssociationExecutions = "DescribeAssociationExecutions"
// DescribeAssociationExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssociationExecutions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2540,7 +2639,7 @@ const opDescribeAutomationExecutions = "DescribeAutomationExecutions"
// DescribeAutomationExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAutomationExecutions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2628,7 +2727,7 @@ const opDescribeAutomationStepExecutions = "DescribeAutomationStepExecutions"
// DescribeAutomationStepExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAutomationStepExecutions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2721,7 +2820,7 @@ const opDescribeAvailablePatches = "DescribeAvailablePatches"
// DescribeAvailablePatchesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAvailablePatches operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2800,7 +2899,7 @@ const opDescribeDocument = "DescribeDocument"
// DescribeDocumentRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDocument operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2885,7 +2984,7 @@ const opDescribeDocumentPermission = "DescribeDocumentPermission"
// DescribeDocumentPermissionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDocumentPermission operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -2973,7 +3072,7 @@ const opDescribeEffectiveInstanceAssociations = "DescribeEffectiveInstanceAssoci
// DescribeEffectiveInstanceAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEffectiveInstanceAssociations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3070,7 +3169,7 @@ const opDescribeEffectivePatchesForPatchBaseline = "DescribeEffectivePatchesForP
// DescribeEffectivePatchesForPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEffectivePatchesForPatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3167,7 +3266,7 @@ const opDescribeInstanceAssociationsStatus = "DescribeInstanceAssociationsStatus
// DescribeInstanceAssociationsStatusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceAssociationsStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3264,7 +3363,7 @@ const opDescribeInstanceInformation = "DescribeInstanceInformation"
// DescribeInstanceInformationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstanceInformation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3432,7 +3531,7 @@ const opDescribeInstancePatchStates = "DescribeInstancePatchStates"
// DescribeInstancePatchStatesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatchStates operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3514,7 +3613,7 @@ const opDescribeInstancePatchStatesForPatchGroup = "DescribeInstancePatchStatesF
// DescribeInstancePatchStatesForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatchStatesForPatchGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3601,7 +3700,7 @@ const opDescribeInstancePatches = "DescribeInstancePatches"
// DescribeInstancePatchesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInstancePatches operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3703,7 +3802,7 @@ const opDescribeInventoryDeletions = "DescribeInventoryDeletions"
// DescribeInventoryDeletionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeInventoryDeletions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3789,7 +3888,7 @@ const opDescribeMaintenanceWindowExecutionTaskInvocations = "DescribeMaintenance
// DescribeMaintenanceWindowExecutionTaskInvocationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutionTaskInvocations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3876,7 +3975,7 @@ const opDescribeMaintenanceWindowExecutionTasks = "DescribeMaintenanceWindowExec
// DescribeMaintenanceWindowExecutionTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutionTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -3962,7 +4061,7 @@ const opDescribeMaintenanceWindowExecutions = "DescribeMaintenanceWindowExecutio
// DescribeMaintenanceWindowExecutionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowExecutions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4038,12 +4137,98 @@ func (c *SSM) DescribeMaintenanceWindowExecutionsWithContext(ctx aws.Context, in
return out, req.Send()
}
+const opDescribeMaintenanceWindowSchedule = "DescribeMaintenanceWindowSchedule"
+
+// DescribeMaintenanceWindowScheduleRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeMaintenanceWindowSchedule operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeMaintenanceWindowSchedule for more information on using the DescribeMaintenanceWindowSchedule
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeMaintenanceWindowScheduleRequest method.
+// req, resp := client.DescribeMaintenanceWindowScheduleRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowSchedule
+func (c *SSM) DescribeMaintenanceWindowScheduleRequest(input *DescribeMaintenanceWindowScheduleInput) (req *request.Request, output *DescribeMaintenanceWindowScheduleOutput) {
+ op := &request.Operation{
+ Name: opDescribeMaintenanceWindowSchedule,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeMaintenanceWindowScheduleInput{}
+ }
+
+ output = &DescribeMaintenanceWindowScheduleOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeMaintenanceWindowSchedule API operation for Amazon Simple Systems Manager (SSM).
+//
+// Retrieves information about upcoming executions of a Maintenance Window.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
+// API operation DescribeMaintenanceWindowSchedule for usage and error information.
+//
+// Returned Error Codes:
+// * ErrCodeInternalServerError "InternalServerError"
+// An error occurred on the server side.
+//
+// * ErrCodeDoesNotExistException "DoesNotExistException"
+// Error returned when the ID specified for a resource, such as a Maintenance
+// Window or Patch baseline, doesn't exist.
+//
+// For information about resource limits in Systems Manager, see AWS Systems
+// Manager Limits (http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_ssm).
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowSchedule
+func (c *SSM) DescribeMaintenanceWindowSchedule(input *DescribeMaintenanceWindowScheduleInput) (*DescribeMaintenanceWindowScheduleOutput, error) {
+ req, out := c.DescribeMaintenanceWindowScheduleRequest(input)
+ return out, req.Send()
+}
+
+// DescribeMaintenanceWindowScheduleWithContext is the same as DescribeMaintenanceWindowSchedule with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeMaintenanceWindowSchedule for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *SSM) DescribeMaintenanceWindowScheduleWithContext(ctx aws.Context, input *DescribeMaintenanceWindowScheduleInput, opts ...request.Option) (*DescribeMaintenanceWindowScheduleOutput, error) {
+ req, out := c.DescribeMaintenanceWindowScheduleRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeMaintenanceWindowTargets = "DescribeMaintenanceWindowTargets"
// DescribeMaintenanceWindowTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowTargets operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4129,7 +4314,7 @@ const opDescribeMaintenanceWindowTasks = "DescribeMaintenanceWindowTasks"
// DescribeMaintenanceWindowTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindowTasks operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4215,7 +4400,7 @@ const opDescribeMaintenanceWindows = "DescribeMaintenanceWindows"
// DescribeMaintenanceWindowsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeMaintenanceWindows operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4289,12 +4474,92 @@ func (c *SSM) DescribeMaintenanceWindowsWithContext(ctx aws.Context, input *Desc
return out, req.Send()
}
+const opDescribeMaintenanceWindowsForTarget = "DescribeMaintenanceWindowsForTarget"
+
+// DescribeMaintenanceWindowsForTargetRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeMaintenanceWindowsForTarget operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeMaintenanceWindowsForTarget for more information on using the DescribeMaintenanceWindowsForTarget
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+// // Example sending a request using the DescribeMaintenanceWindowsForTargetRequest method.
+// req, resp := client.DescribeMaintenanceWindowsForTargetRequest(params)
+//
+// err := req.Send()
+// if err == nil { // resp is now filled
+// fmt.Println(resp)
+// }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsForTarget
+func (c *SSM) DescribeMaintenanceWindowsForTargetRequest(input *DescribeMaintenanceWindowsForTargetInput) (req *request.Request, output *DescribeMaintenanceWindowsForTargetOutput) {
+ op := &request.Operation{
+ Name: opDescribeMaintenanceWindowsForTarget,
+ HTTPMethod: "POST",
+ HTTPPath: "/",
+ }
+
+ if input == nil {
+ input = &DescribeMaintenanceWindowsForTargetInput{}
+ }
+
+ output = &DescribeMaintenanceWindowsForTargetOutput{}
+ req = c.newRequest(op, input, output)
+ return
+}
+
+// DescribeMaintenanceWindowsForTarget API operation for Amazon Simple Systems Manager (SSM).
+//
+// Retrieves information about the Maintenance Windows targets or tasks that
+// an instance is associated with.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s
+// API operation DescribeMaintenanceWindowsForTarget for usage and error information.
+//
+// Returned Error Codes:
+// * ErrCodeInternalServerError "InternalServerError"
+// An error occurred on the server side.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeMaintenanceWindowsForTarget
+func (c *SSM) DescribeMaintenanceWindowsForTarget(input *DescribeMaintenanceWindowsForTargetInput) (*DescribeMaintenanceWindowsForTargetOutput, error) {
+ req, out := c.DescribeMaintenanceWindowsForTargetRequest(input)
+ return out, req.Send()
+}
+
+// DescribeMaintenanceWindowsForTargetWithContext is the same as DescribeMaintenanceWindowsForTarget with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeMaintenanceWindowsForTarget for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *SSM) DescribeMaintenanceWindowsForTargetWithContext(ctx aws.Context, input *DescribeMaintenanceWindowsForTargetInput, opts ...request.Option) (*DescribeMaintenanceWindowsForTargetOutput, error) {
+ req, out := c.DescribeMaintenanceWindowsForTargetRequest(input)
+ req.SetContext(ctx)
+ req.ApplyOptions(opts...)
+ return out, req.Send()
+}
+
const opDescribeParameters = "DescribeParameters"
// DescribeParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeParameters operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4450,7 +4715,7 @@ const opDescribePatchBaselines = "DescribePatchBaselines"
// DescribePatchBaselinesRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchBaselines operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4529,7 +4794,7 @@ const opDescribePatchGroupState = "DescribePatchGroupState"
// DescribePatchGroupStateRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchGroupState operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4611,7 +4876,7 @@ const opDescribePatchGroups = "DescribePatchGroups"
// DescribePatchGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribePatchGroups operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4690,7 +4955,7 @@ const opDescribeSessions = "DescribeSessions"
// DescribeSessionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSessions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4776,7 +5041,7 @@ const opGetAutomationExecution = "GetAutomationExecution"
// GetAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetAutomationExecution operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4859,7 +5124,7 @@ const opGetCommandInvocation = "GetCommandInvocation"
// GetCommandInvocationRequest generates a "aws/request.Request" representing the
// client's request for the GetCommandInvocation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -4963,7 +5228,7 @@ const opGetConnectionStatus = "GetConnectionStatus"
// GetConnectionStatusRequest generates a "aws/request.Request" representing the
// client's request for the GetConnectionStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5043,7 +5308,7 @@ const opGetDefaultPatchBaseline = "GetDefaultPatchBaseline"
// GetDefaultPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the GetDefaultPatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5127,7 +5392,7 @@ const opGetDeployablePatchSnapshotForInstance = "GetDeployablePatchSnapshotForIn
// GetDeployablePatchSnapshotForInstanceRequest generates a "aws/request.Request" representing the
// client's request for the GetDeployablePatchSnapshotForInstance operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5212,7 +5477,7 @@ const opGetDocument = "GetDocument"
// GetDocumentRequest generates a "aws/request.Request" representing the
// client's request for the GetDocument operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5297,7 +5562,7 @@ const opGetInventory = "GetInventory"
// GetInventoryRequest generates a "aws/request.Request" representing the
// client's request for the GetInventory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5396,7 +5661,7 @@ const opGetInventorySchema = "GetInventorySchema"
// GetInventorySchemaRequest generates a "aws/request.Request" representing the
// client's request for the GetInventorySchema operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5482,7 +5747,7 @@ const opGetMaintenanceWindow = "GetMaintenanceWindow"
// GetMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5568,7 +5833,7 @@ const opGetMaintenanceWindowExecution = "GetMaintenanceWindowExecution"
// GetMaintenanceWindowExecutionRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowExecution operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5655,7 +5920,7 @@ const opGetMaintenanceWindowExecutionTask = "GetMaintenanceWindowExecutionTask"
// GetMaintenanceWindowExecutionTaskRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowExecutionTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5742,7 +6007,7 @@ const opGetMaintenanceWindowExecutionTaskInvocation = "GetMaintenanceWindowExecu
// GetMaintenanceWindowExecutionTaskInvocationRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowExecutionTaskInvocation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5829,7 +6094,7 @@ const opGetMaintenanceWindowTask = "GetMaintenanceWindowTask"
// GetMaintenanceWindowTaskRequest generates a "aws/request.Request" representing the
// client's request for the GetMaintenanceWindowTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -5915,7 +6180,7 @@ const opGetParameter = "GetParameter"
// GetParameterRequest generates a "aws/request.Request" representing the
// client's request for the GetParameter operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6005,7 +6270,7 @@ const opGetParameterHistory = "GetParameterHistory"
// GetParameterHistoryRequest generates a "aws/request.Request" representing the
// client's request for the GetParameterHistory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6149,7 +6414,7 @@ const opGetParameters = "GetParameters"
// GetParametersRequest generates a "aws/request.Request" representing the
// client's request for the GetParameters operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6232,7 +6497,7 @@ const opGetParametersByPath = "GetParametersByPath"
// GetParametersByPathRequest generates a "aws/request.Request" representing the
// client's request for the GetParametersByPath operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6395,7 +6660,7 @@ const opGetPatchBaseline = "GetPatchBaseline"
// GetPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the GetPatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6485,7 +6750,7 @@ const opGetPatchBaselineForPatchGroup = "GetPatchBaselineForPatchGroup"
// GetPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the GetPatchBaselineForPatchGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6565,7 +6830,7 @@ const opLabelParameterVersion = "LabelParameterVersion"
// LabelParameterVersionRequest generates a "aws/request.Request" representing the
// client's request for the LabelParameterVersion operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6686,7 +6951,7 @@ const opListAssociationVersions = "ListAssociationVersions"
// ListAssociationVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssociationVersions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6771,7 +7036,7 @@ const opListAssociations = "ListAssociations"
// ListAssociationsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssociations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -6909,7 +7174,7 @@ const opListCommandInvocations = "ListCommandInvocations"
// ListCommandInvocationsRequest generates a "aws/request.Request" representing the
// client's request for the ListCommandInvocations operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7071,7 +7336,7 @@ const opListCommands = "ListCommands"
// ListCommandsRequest generates a "aws/request.Request" representing the
// client's request for the ListCommands operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7229,7 +7494,7 @@ const opListComplianceItems = "ListComplianceItems"
// ListComplianceItemsRequest generates a "aws/request.Request" representing the
// client's request for the ListComplianceItems operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7326,7 +7591,7 @@ const opListComplianceSummaries = "ListComplianceSummaries"
// ListComplianceSummariesRequest generates a "aws/request.Request" representing the
// client's request for the ListComplianceSummaries operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7414,7 +7679,7 @@ const opListDocumentVersions = "ListDocumentVersions"
// ListDocumentVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListDocumentVersions operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7499,7 +7764,7 @@ const opListDocuments = "ListDocuments"
// ListDocumentsRequest generates a "aws/request.Request" representing the
// client's request for the ListDocuments operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7640,7 +7905,7 @@ const opListInventoryEntries = "ListInventoryEntries"
// ListInventoryEntriesRequest generates a "aws/request.Request" representing the
// client's request for the ListInventoryEntries operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7744,7 +8009,7 @@ const opListResourceComplianceSummaries = "ListResourceComplianceSummaries"
// ListResourceComplianceSummariesRequest generates a "aws/request.Request" representing the
// client's request for the ListResourceComplianceSummaries operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7832,7 +8097,7 @@ const opListResourceDataSync = "ListResourceDataSync"
// ListResourceDataSyncRequest generates a "aws/request.Request" representing the
// client's request for the ListResourceDataSync operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -7923,7 +8188,7 @@ const opListTagsForResource = "ListTagsForResource"
// ListTagsForResourceRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsForResource operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8010,7 +8275,7 @@ const opModifyDocumentPermission = "ModifyDocumentPermission"
// ModifyDocumentPermissionRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDocumentPermission operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8044,6 +8309,7 @@ func (c *SSM) ModifyDocumentPermissionRequest(input *ModifyDocumentPermissionInp
output = &ModifyDocumentPermissionOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8107,7 +8373,7 @@ const opPutComplianceItems = "PutComplianceItems"
// PutComplianceItemsRequest generates a "aws/request.Request" representing the
// client's request for the PutComplianceItems operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8141,6 +8407,7 @@ func (c *SSM) PutComplianceItemsRequest(input *PutComplianceItemsInput) (req *re
output = &PutComplianceItemsOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8248,7 +8515,7 @@ const opPutInventory = "PutInventory"
// PutInventoryRequest generates a "aws/request.Request" representing the
// client's request for the PutInventory operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8380,7 +8647,7 @@ const opPutParameter = "PutParameter"
// PutParameterRequest generates a "aws/request.Request" representing the
// client's request for the PutParameter operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8495,7 +8762,7 @@ const opRegisterDefaultPatchBaseline = "RegisterDefaultPatchBaseline"
// RegisterDefaultPatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the RegisterDefaultPatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8585,7 +8852,7 @@ const opRegisterPatchBaselineForPatchGroup = "RegisterPatchBaselineForPatchGroup
// RegisterPatchBaselineForPatchGroupRequest generates a "aws/request.Request" representing the
// client's request for the RegisterPatchBaselineForPatchGroup operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8686,7 +8953,7 @@ const opRegisterTargetWithMaintenanceWindow = "RegisterTargetWithMaintenanceWind
// RegisterTargetWithMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the RegisterTargetWithMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8783,7 +9050,7 @@ const opRegisterTaskWithMaintenanceWindow = "RegisterTaskWithMaintenanceWindow"
// RegisterTaskWithMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the RegisterTaskWithMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8884,7 +9151,7 @@ const opRemoveTagsFromResource = "RemoveTagsFromResource"
// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
// client's request for the RemoveTagsFromResource operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -8918,6 +9185,7 @@ func (c *SSM) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput)
output = &RemoveTagsFromResourceOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -8975,7 +9243,7 @@ const opResumeSession = "ResumeSession"
// ResumeSessionRequest generates a "aws/request.Request" representing the
// client's request for the ResumeSession operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9065,7 +9333,7 @@ const opSendAutomationSignal = "SendAutomationSignal"
// SendAutomationSignalRequest generates a "aws/request.Request" representing the
// client's request for the SendAutomationSignal operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9099,6 +9367,7 @@ func (c *SSM) SendAutomationSignalRequest(input *SendAutomationSignalInput) (req
output = &SendAutomationSignalOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -9156,7 +9425,7 @@ const opSendCommand = "SendCommand"
// SendCommandRequest generates a "aws/request.Request" representing the
// client's request for the SendCommand operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9285,7 +9554,7 @@ const opStartAssociationsOnce = "StartAssociationsOnce"
// StartAssociationsOnceRequest generates a "aws/request.Request" representing the
// client's request for the StartAssociationsOnce operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9319,6 +9588,7 @@ func (c *SSM) StartAssociationsOnceRequest(input *StartAssociationsOnceInput) (r
output = &StartAssociationsOnceOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -9368,7 +9638,7 @@ const opStartAutomationExecution = "StartAutomationExecution"
// StartAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the StartAutomationExecution operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9470,7 +9740,7 @@ const opStartSession = "StartSession"
// StartSessionRequest generates a "aws/request.Request" representing the
// client's request for the StartSession operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9566,7 +9836,7 @@ const opStopAutomationExecution = "StopAutomationExecution"
// StopAutomationExecutionRequest generates a "aws/request.Request" representing the
// client's request for the StopAutomationExecution operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9600,6 +9870,7 @@ func (c *SSM) StopAutomationExecutionRequest(input *StopAutomationExecutionInput
output = &StopAutomationExecutionOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -9652,7 +9923,7 @@ const opTerminateSession = "TerminateSession"
// TerminateSessionRequest generates a "aws/request.Request" representing the
// client's request for the TerminateSession operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9740,7 +10011,7 @@ const opUpdateAssociation = "UpdateAssociation"
// UpdateAssociationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAssociation operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9860,7 +10131,7 @@ const opUpdateAssociationStatus = "UpdateAssociationStatus"
// UpdateAssociationStatusRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAssociationStatus operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -9968,7 +10239,7 @@ const opUpdateDocument = "UpdateDocument"
// UpdateDocumentRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDocument operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10031,6 +10302,10 @@ func (c *SSM) UpdateDocumentRequest(input *UpdateDocumentInput) (req *request.Re
// The content of the association document matches another document. Change
// the content of the document and try again.
//
+// * ErrCodeDuplicateDocumentVersionName "DuplicateDocumentVersionName"
+// The version name has already been used in this document. Specify a different
+// version name, and then try again.
+//
// * ErrCodeInvalidDocumentContent "InvalidDocumentContent"
// The content for the document is not valid.
//
@@ -10043,6 +10318,10 @@ func (c *SSM) UpdateDocumentRequest(input *UpdateDocumentInput) (req *request.Re
// * ErrCodeInvalidDocument "InvalidDocument"
// The specified document does not exist.
//
+// * ErrCodeInvalidDocumentOperation "InvalidDocumentOperation"
+// You attempted to delete a document while it is still shared. You must stop
+// sharing the document before you can delete it.
+//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocument
func (c *SSM) UpdateDocument(input *UpdateDocumentInput) (*UpdateDocumentOutput, error) {
req, out := c.UpdateDocumentRequest(input)
@@ -10070,7 +10349,7 @@ const opUpdateDocumentDefaultVersion = "UpdateDocumentDefaultVersion"
// UpdateDocumentDefaultVersionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDocumentDefaultVersion operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10158,7 +10437,7 @@ const opUpdateMaintenanceWindow = "UpdateMaintenanceWindow"
// UpdateMaintenanceWindowRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMaintenanceWindow operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10244,7 +10523,7 @@ const opUpdateMaintenanceWindowTarget = "UpdateMaintenanceWindowTarget"
// UpdateMaintenanceWindowTargetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMaintenanceWindowTarget operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10346,7 +10625,7 @@ const opUpdateMaintenanceWindowTask = "UpdateMaintenanceWindowTask"
// UpdateMaintenanceWindowTaskRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMaintenanceWindowTask operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10451,7 +10730,7 @@ const opUpdateManagedInstanceRole = "UpdateManagedInstanceRole"
// UpdateManagedInstanceRoleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateManagedInstanceRole operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10485,6 +10764,7 @@ func (c *SSM) UpdateManagedInstanceRoleRequest(input *UpdateManagedInstanceRoleI
output = &UpdateManagedInstanceRoleOutput{}
req = c.newRequest(op, input, output)
+ req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
return
}
@@ -10546,7 +10826,7 @@ const opUpdatePatchBaseline = "UpdatePatchBaseline"
// UpdatePatchBaselineRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePatchBaseline operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -10962,6 +11242,13 @@ type AssociationDescription struct {
// The association version.
AssociationVersion *string `type:"string"`
+ // Specify the target for the association. This target is required for associations
+ // that use an Automation document and target resources by using rate controls.
+ AutomationTargetParameterName *string `min:"1" type:"string"`
+
+ // The severity level that is assigned to the association.
+ ComplianceSeverity *string `type:"string" enum:"AssociationComplianceSeverity"`
+
// The date when the association was made.
Date *time.Time `type:"timestamp"`
@@ -10980,6 +11267,32 @@ type AssociationDescription struct {
// The date when the association was last updated.
LastUpdateAssociationDate *time.Time `type:"timestamp"`
+ // The maximum number of targets allowed to run the association at the same
+ // time. You can specify a number, for example 10, or a percentage of the target
+ // set, for example 10%. The default value is 100%, which means all targets
+ // run the association at the same time.
+ //
+ // If a new instance starts and attempts to execute an association while Systems
+ // Manager is executing MaxConcurrency associations, the association is allowed
+ // to run. During the next association interval, the new instance will process
+ // its association within the limit specified for MaxConcurrency.
+ MaxConcurrency *string `min:"1" type:"string"`
+
+ // The number of errors that are allowed before the system stops sending requests
+ // to run the association on additional targets. You can specify either an absolute
+ // number of errors, for example 10, or a percentage of the target set, for
+ // example 10%. If you specify 3, for example, the system stops sending requests
+ // when the fourth error is received. If you specify 0, then the system stops
+ // sending requests after the first error is returned. If you run an association
+ // on 50 instances and set MaxError to 10%, then the system stops sending the
+ // request when the sixth error is received.
+ //
+ // Executions that are already running an association when MaxErrors is reached
+ // are allowed to complete, but some of these executions may fail as well. If
+ // you need to ensure that there won't be more than max-errors failed executions,
+ // set MaxConcurrency to 1 so that executions proceed one at a time.
+ MaxErrors *string `min:"1" type:"string"`
+
// The name of the Systems Manager document.
Name *string `type:"string"`
@@ -11030,6 +11343,18 @@ func (s *AssociationDescription) SetAssociationVersion(v string) *AssociationDes
return s
}
+// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.
+func (s *AssociationDescription) SetAutomationTargetParameterName(v string) *AssociationDescription {
+ s.AutomationTargetParameterName = &v
+ return s
+}
+
+// SetComplianceSeverity sets the ComplianceSeverity field's value.
+func (s *AssociationDescription) SetComplianceSeverity(v string) *AssociationDescription {
+ s.ComplianceSeverity = &v
+ return s
+}
+
// SetDate sets the Date field's value.
func (s *AssociationDescription) SetDate(v time.Time) *AssociationDescription {
s.Date = &v
@@ -11066,6 +11391,18 @@ func (s *AssociationDescription) SetLastUpdateAssociationDate(v time.Time) *Asso
return s
}
+// SetMaxConcurrency sets the MaxConcurrency field's value.
+func (s *AssociationDescription) SetMaxConcurrency(v string) *AssociationDescription {
+ s.MaxConcurrency = &v
+ return s
+}
+
+// SetMaxErrors sets the MaxErrors field's value.
+func (s *AssociationDescription) SetMaxErrors(v string) *AssociationDescription {
+ s.MaxErrors = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *AssociationDescription) SetName(v string) *AssociationDescription {
s.Name = &v
@@ -11614,6 +11951,9 @@ type AssociationVersionInfo struct {
// The association version.
AssociationVersion *string `type:"string"`
+ // The severity level that is assigned to the association.
+ ComplianceSeverity *string `type:"string" enum:"AssociationComplianceSeverity"`
+
// The date the association version was created.
CreatedDate *time.Time `type:"timestamp"`
@@ -11621,6 +11961,32 @@ type AssociationVersionInfo struct {
// was created.
DocumentVersion *string `type:"string"`
+ // The maximum number of targets allowed to run the association at the same
+ // time. You can specify a number, for example 10, or a percentage of the target
+ // set, for example 10%. The default value is 100%, which means all targets
+ // run the association at the same time.
+ //
+ // If a new instance starts and attempts to execute an association while Systems
+ // Manager is executing MaxConcurrency associations, the association is allowed
+ // to run. During the next association interval, the new instance will process
+ // its association within the limit specified for MaxConcurrency.
+ MaxConcurrency *string `min:"1" type:"string"`
+
+ // The number of errors that are allowed before the system stops sending requests
+ // to run the association on additional targets. You can specify either an absolute
+ // number of errors, for example 10, or a percentage of the target set, for
+ // example 10%. If you specify 3, for example, the system stops sending requests
+ // when the fourth error is received. If you specify 0, then the system stops
+ // sending requests after the first error is returned. If you run an association
+ // on 50 instances and set MaxError to 10%, then the system stops sending the
+ // request when the sixth error is received.
+ //
+ // Executions that are already running an association when MaxErrors is reached
+ // are allowed to complete, but some of these executions may fail as well. If
+ // you need to ensure that there won't be more than max-errors failed executions,
+ // set MaxConcurrency to 1 so that executions proceed one at a time.
+ MaxErrors *string `min:"1" type:"string"`
+
// The name specified when the association was created.
Name *string `type:"string"`
@@ -11668,6 +12034,12 @@ func (s *AssociationVersionInfo) SetAssociationVersion(v string) *AssociationVer
return s
}
+// SetComplianceSeverity sets the ComplianceSeverity field's value.
+func (s *AssociationVersionInfo) SetComplianceSeverity(v string) *AssociationVersionInfo {
+ s.ComplianceSeverity = &v
+ return s
+}
+
// SetCreatedDate sets the CreatedDate field's value.
func (s *AssociationVersionInfo) SetCreatedDate(v time.Time) *AssociationVersionInfo {
s.CreatedDate = &v
@@ -11680,6 +12052,18 @@ func (s *AssociationVersionInfo) SetDocumentVersion(v string) *AssociationVersio
return s
}
+// SetMaxConcurrency sets the MaxConcurrency field's value.
+func (s *AssociationVersionInfo) SetMaxConcurrency(v string) *AssociationVersionInfo {
+ s.MaxConcurrency = &v
+ return s
+}
+
+// SetMaxErrors sets the MaxErrors field's value.
+func (s *AssociationVersionInfo) SetMaxErrors(v string) *AssociationVersionInfo {
+ s.MaxErrors = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *AssociationVersionInfo) SetName(v string) *AssociationVersionInfo {
s.Name = &v
@@ -11710,6 +12094,138 @@ func (s *AssociationVersionInfo) SetTargets(v []*Target) *AssociationVersionInfo
return s
}
+// A structure that includes attributes that describe a document attachment.
+type AttachmentContent struct {
+ _ struct{} `type:"structure"`
+
+ // The cryptographic hash value of the document content.
+ Hash *string `type:"string"`
+
+ // The hash algorithm used to calculate the hash value.
+ HashType *string `type:"string" enum:"AttachmentHashType"`
+
+ // The name of an attachment.
+ Name *string `type:"string"`
+
+ // The size of an attachment in bytes.
+ Size *int64 `type:"long"`
+
+ // The URL location of the attachment content.
+ Url *string `type:"string"`
+}
+
+// String returns the string representation
+func (s AttachmentContent) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AttachmentContent) GoString() string {
+ return s.String()
+}
+
+// SetHash sets the Hash field's value.
+func (s *AttachmentContent) SetHash(v string) *AttachmentContent {
+ s.Hash = &v
+ return s
+}
+
+// SetHashType sets the HashType field's value.
+func (s *AttachmentContent) SetHashType(v string) *AttachmentContent {
+ s.HashType = &v
+ return s
+}
+
+// SetName sets the Name field's value.
+func (s *AttachmentContent) SetName(v string) *AttachmentContent {
+ s.Name = &v
+ return s
+}
+
+// SetSize sets the Size field's value.
+func (s *AttachmentContent) SetSize(v int64) *AttachmentContent {
+ s.Size = &v
+ return s
+}
+
+// SetUrl sets the Url field's value.
+func (s *AttachmentContent) SetUrl(v string) *AttachmentContent {
+ s.Url = &v
+ return s
+}
+
+// An attribute of an attachment, such as the attachment name.
+type AttachmentInformation struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the attachment.
+ Name *string `type:"string"`
+}
+
+// String returns the string representation
+func (s AttachmentInformation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AttachmentInformation) GoString() string {
+ return s.String()
+}
+
+// SetName sets the Name field's value.
+func (s *AttachmentInformation) SetName(v string) *AttachmentInformation {
+ s.Name = &v
+ return s
+}
+
+// A key and value pair that identifies the location of an attachment to a document.
+type AttachmentsSource struct {
+ _ struct{} `type:"structure"`
+
+ // The key of a key and value pair that identifies the location of an attachment
+ // to a document.
+ Key *string `type:"string" enum:"AttachmentsSourceKey"`
+
+ // The URL of the location of a document attachment, such as the URL of an Amazon
+ // S3 bucket.
+ Values []*string `min:"1" type:"list"`
+}
+
+// String returns the string representation
+func (s AttachmentsSource) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AttachmentsSource) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AttachmentsSource) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "AttachmentsSource"}
+ if s.Values != nil && len(s.Values) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Values", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetKey sets the Key field's value.
+func (s *AttachmentsSource) SetKey(v string) *AttachmentsSource {
+ s.Key = &v
+ return s
+}
+
+// SetValues sets the Values field's value.
+func (s *AttachmentsSource) SetValues(v []*string) *AttachmentsSource {
+ s.Values = v
+ return s
+}
+
// Detailed information about the current state of an individual Automation
// execution.
type AutomationExecution struct {
@@ -11765,6 +12281,10 @@ type AutomationExecution struct {
// The AutomationExecutionId of the parent automation.
ParentAutomationExecutionId *string `min:"36" type:"string"`
+ // An aggregate of step execution statuses displayed in the AWS Console for
+ // a multi-Region and multi-account Automation execution.
+ ProgressCounters *ProgressCounters `type:"structure"`
+
// A list of resolved targets in the rate control execution.
ResolvedTargets *ResolvedTargets `type:"structure"`
@@ -11780,6 +12300,10 @@ type AutomationExecution struct {
// The target of the execution.
Target *string `type:"string"`
+ // The combination of AWS Regions and/or AWS accounts where you want to execute
+ // the Automation.
+ TargetLocations []*TargetLocation `min:"1" type:"list"`
+
// The specified key-value mapping of document parameters to target resources.
TargetMaps []map[string][]*string `type:"list"`
@@ -11896,6 +12420,12 @@ func (s *AutomationExecution) SetParentAutomationExecutionId(v string) *Automati
return s
}
+// SetProgressCounters sets the ProgressCounters field's value.
+func (s *AutomationExecution) SetProgressCounters(v *ProgressCounters) *AutomationExecution {
+ s.ProgressCounters = v
+ return s
+}
+
// SetResolvedTargets sets the ResolvedTargets field's value.
func (s *AutomationExecution) SetResolvedTargets(v *ResolvedTargets) *AutomationExecution {
s.ResolvedTargets = v
@@ -11920,6 +12450,12 @@ func (s *AutomationExecution) SetTarget(v string) *AutomationExecution {
return s
}
+// SetTargetLocations sets the TargetLocations field's value.
+func (s *AutomationExecution) SetTargetLocations(v []*TargetLocation) *AutomationExecution {
+ s.TargetLocations = v
+ return s
+}
+
// SetTargetMaps sets the TargetMaps field's value.
func (s *AutomationExecution) SetTargetMaps(v []map[string][]*string) *AutomationExecution {
s.TargetMaps = v
@@ -12009,6 +12545,13 @@ type AutomationExecutionMetadata struct {
// Timed out, or Cancelled.
AutomationExecutionStatus *string `type:"string" enum:"AutomationExecutionStatus"`
+ // Use this filter with DescribeAutomationExecutions. Specify either Local or
+ // CrossAccount. CrossAccount is an Automation that executes in multiple AWS
+ // Regions and accounts. For more information, see Concurrently Executing Automations
+ // in Multiple AWS Regions and Accounts (http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html)
+ // in the AWS Systems Manager User Guide.
+ AutomationType *string `type:"string" enum:"AutomationType"`
+
// The action of the currently executing step.
CurrentAction *string `type:"string"`
@@ -12090,6 +12633,12 @@ func (s *AutomationExecutionMetadata) SetAutomationExecutionStatus(v string) *Au
return s
}
+// SetAutomationType sets the AutomationType field's value.
+func (s *AutomationExecutionMetadata) SetAutomationType(v string) *AutomationExecutionMetadata {
+ s.AutomationType = &v
+ return s
+}
+
// SetCurrentAction sets the CurrentAction field's value.
func (s *AutomationExecutionMetadata) SetCurrentAction(v string) *AutomationExecutionMetadata {
s.CurrentAction = &v
@@ -12272,6 +12821,70 @@ func (s CancelCommandOutput) GoString() string {
return s.String()
}
+type CancelMaintenanceWindowExecutionInput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Maintenance Window execution to stop.
+ //
+ // WindowExecutionId is a required field
+ WindowExecutionId *string `min:"36" type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s CancelMaintenanceWindowExecutionInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CancelMaintenanceWindowExecutionInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CancelMaintenanceWindowExecutionInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "CancelMaintenanceWindowExecutionInput"}
+ if s.WindowExecutionId == nil {
+ invalidParams.Add(request.NewErrParamRequired("WindowExecutionId"))
+ }
+ if s.WindowExecutionId != nil && len(*s.WindowExecutionId) < 36 {
+ invalidParams.Add(request.NewErrParamMinLen("WindowExecutionId", 36))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetWindowExecutionId sets the WindowExecutionId field's value.
+func (s *CancelMaintenanceWindowExecutionInput) SetWindowExecutionId(v string) *CancelMaintenanceWindowExecutionInput {
+ s.WindowExecutionId = &v
+ return s
+}
+
+type CancelMaintenanceWindowExecutionOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The ID of the Maintenance Window execution that has been stopped.
+ WindowExecutionId *string `min:"36" type:"string"`
+}
+
+// String returns the string representation
+func (s CancelMaintenanceWindowExecutionOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s CancelMaintenanceWindowExecutionOutput) GoString() string {
+ return s.String()
+}
+
+// SetWindowExecutionId sets the WindowExecutionId field's value.
+func (s *CancelMaintenanceWindowExecutionOutput) SetWindowExecutionId(v string) *CancelMaintenanceWindowExecutionOutput {
+ s.WindowExecutionId = &v
+ return s
+}
+
// Configuration options for sending command output to CloudWatch Logs.
type CloudWatchOutputConfig struct {
_ struct{} `type:"structure"`
@@ -12610,11 +13223,13 @@ type CommandFilter struct {
// The filter value. Valid values for each filter key are as follows:
//
- // * InvokedAfter: A timestamp to limit your results. For example, specify
- // 2018-07-07T00:00:00Z to see results occurring July 7, 2018, and later.
+ // * InvokedAfter: Specify a timestamp to limit your results. For example,
+ // specify 2018-07-07T00:00:00Z to see a list of command executions occurring
+ // July 7, 2018, and later.
//
- // * InvokedBefore: A timestamp to limit your results. For example, specify
- // 2018-07-07T00:00:00Z to see results before July 7, 2018.
+ // * InvokedBefore: Specify a timestamp to limit your results. For example,
+ // specify 2018-07-07T00:00:00Z to see a list of command executions from
+ // before July 7, 2018.
//
// * Status: Specify a valid command status to see a list of all command
// executions with that status. Status values you can specify include:
@@ -12633,19 +13248,17 @@ type CommandFilter struct {
//
// Cancelling
//
- // * DocumentName: The name of the SSM document for which you want to see
- // command results.
+ // * DocumentName: Specify name of the SSM document for which you want to
+ // see command execution results. For example, specify AWS-RunPatchBaseline
+ // to see command executions that used this SSM document to perform security
+ // patching operations on instances.
//
- // For example, specify AWS-RunPatchBaseline to see command executions that
- // used this SSM document to perform security patching operations on instances.
+ // * ExecutionStage: Specify one of the following values:
//
+ // Executing: Returns a list of command executions that are currently still
+ // running.
//
- // * ExecutionStage: An enum whose value can be either Executing or Complete.
- //
- // Specify Executing to see a list of command executions that are currently
- // still running.
- //
- // Specify Complete to see a list of command exeuctions that have already completed.
+ // Complete: Returns a list of command executions that have already completed.
//
// Value is a required field
Value *string `locationName:"value" min:"1" type:"string" required:"true"`
@@ -13697,19 +14310,52 @@ func (s *CreateAssociationBatchOutput) SetSuccessful(v []*AssociationDescription
return s
}
-// Describes the association of a Systems Manager document and an instance.
+// Describes the association of a Systems Manager SSM document and an instance.
type CreateAssociationBatchRequestEntry struct {
_ struct{} `type:"structure"`
// Specify a descriptive name for the association.
AssociationName *string `type:"string"`
+ // Specify the target for the association. This target is required for associations
+ // that use an Automation document and target resources by using rate controls.
+ AutomationTargetParameterName *string `min:"1" type:"string"`
+
+ // The severity level to assign to the association.
+ ComplianceSeverity *string `type:"string" enum:"AssociationComplianceSeverity"`
+
// The document version.
DocumentVersion *string `type:"string"`
// The ID of the instance.
InstanceId *string `type:"string"`
+ // The maximum number of targets allowed to run the association at the same
+ // time. You can specify a number, for example 10, or a percentage of the target
+ // set, for example 10%. The default value is 100%, which means all targets
+ // run the association at the same time.
+ //
+ // If a new instance starts and attempts to execute an association while Systems
+ // Manager is executing MaxConcurrency associations, the association is allowed
+ // to run. During the next association interval, the new instance will process
+ // its association within the limit specified for MaxConcurrency.
+ MaxConcurrency *string `min:"1" type:"string"`
+
+ // The number of errors that are allowed before the system stops sending requests
+ // to run the association on additional targets. You can specify either an absolute
+ // number of errors, for example 10, or a percentage of the target set, for
+ // example 10%. If you specify 3, for example, the system stops sending requests
+ // when the fourth error is received. If you specify 0, then the system stops
+ // sending requests after the first error is returned. If you run an association
+ // on 50 instances and set MaxError to 10%, then the system stops sending the
+ // request when the sixth error is received.
+ //
+ // Executions that are already running an association when MaxErrors is reached
+ // are allowed to complete, but some of these executions may fail as well. If
+ // you need to ensure that there won't be more than max-errors failed executions,
+ // set MaxConcurrency to 1 so that executions proceed one at a time.
+ MaxErrors *string `min:"1" type:"string"`
+
// The name of the configuration document.
//
// Name is a required field
@@ -13741,6 +14387,15 @@ func (s CreateAssociationBatchRequestEntry) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssociationBatchRequestEntry) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "CreateAssociationBatchRequestEntry"}
+ if s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("AutomationTargetParameterName", 1))
+ }
+ if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1))
+ }
+ if s.MaxErrors != nil && len(*s.MaxErrors) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1))
+ }
if s.Name == nil {
invalidParams.Add(request.NewErrParamRequired("Name"))
}
@@ -13775,6 +14430,18 @@ func (s *CreateAssociationBatchRequestEntry) SetAssociationName(v string) *Creat
return s
}
+// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.
+func (s *CreateAssociationBatchRequestEntry) SetAutomationTargetParameterName(v string) *CreateAssociationBatchRequestEntry {
+ s.AutomationTargetParameterName = &v
+ return s
+}
+
+// SetComplianceSeverity sets the ComplianceSeverity field's value.
+func (s *CreateAssociationBatchRequestEntry) SetComplianceSeverity(v string) *CreateAssociationBatchRequestEntry {
+ s.ComplianceSeverity = &v
+ return s
+}
+
// SetDocumentVersion sets the DocumentVersion field's value.
func (s *CreateAssociationBatchRequestEntry) SetDocumentVersion(v string) *CreateAssociationBatchRequestEntry {
s.DocumentVersion = &v
@@ -13787,6 +14454,18 @@ func (s *CreateAssociationBatchRequestEntry) SetInstanceId(v string) *CreateAsso
return s
}
+// SetMaxConcurrency sets the MaxConcurrency field's value.
+func (s *CreateAssociationBatchRequestEntry) SetMaxConcurrency(v string) *CreateAssociationBatchRequestEntry {
+ s.MaxConcurrency = &v
+ return s
+}
+
+// SetMaxErrors sets the MaxErrors field's value.
+func (s *CreateAssociationBatchRequestEntry) SetMaxErrors(v string) *CreateAssociationBatchRequestEntry {
+ s.MaxErrors = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *CreateAssociationBatchRequestEntry) SetName(v string) *CreateAssociationBatchRequestEntry {
s.Name = &v
@@ -13823,6 +14502,13 @@ type CreateAssociationInput struct {
// Specify a descriptive name for the association.
AssociationName *string `type:"string"`
+ // Specify the target for the association. This target is required for associations
+ // that use an Automation document and target resources by using rate controls.
+ AutomationTargetParameterName *string `min:"1" type:"string"`
+
+ // The severity level to assign to the association.
+ ComplianceSeverity *string `type:"string" enum:"AssociationComplianceSeverity"`
+
// The document version you want to associate with the target(s). Can be a specific
// version or the default version.
DocumentVersion *string `type:"string"`
@@ -13830,6 +14516,32 @@ type CreateAssociationInput struct {
// The instance ID.
InstanceId *string `type:"string"`
+ // The maximum number of targets allowed to run the association at the same
+ // time. You can specify a number, for example 10, or a percentage of the target
+ // set, for example 10%. The default value is 100%, which means all targets
+ // run the association at the same time.
+ //
+ // If a new instance starts and attempts to execute an association while Systems
+ // Manager is executing MaxConcurrency associations, the association is allowed
+ // to run. During the next association interval, the new instance will process
+ // its association within the limit specified for MaxConcurrency.
+ MaxConcurrency *string `min:"1" type:"string"`
+
+ // The number of errors that are allowed before the system stops sending requests
+ // to run the association on additional targets. You can specify either an absolute
+ // number of errors, for example 10, or a percentage of the target set, for
+ // example 10%. If you specify 3, for example, the system stops sending requests
+ // when the fourth error is received. If you specify 0, then the system stops
+ // sending requests after the first error is returned. If you run an association
+ // on 50 instances and set MaxError to 10%, then the system stops sending the
+ // request when the sixth error is received.
+ //
+ // Executions that are already running an association when MaxErrors is reached
+ // are allowed to complete, but some of these executions may fail as well. If
+ // you need to ensure that there won't be more than max-errors failed executions,
+ // set MaxConcurrency to 1 so that executions proceed one at a time.
+ MaxErrors *string `min:"1" type:"string"`
+
// The name of the Systems Manager document.
//
// Name is a required field
@@ -13861,6 +14573,15 @@ func (s CreateAssociationInput) GoString() string {
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssociationInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "CreateAssociationInput"}
+ if s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("AutomationTargetParameterName", 1))
+ }
+ if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1))
+ }
+ if s.MaxErrors != nil && len(*s.MaxErrors) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1))
+ }
if s.Name == nil {
invalidParams.Add(request.NewErrParamRequired("Name"))
}
@@ -13895,6 +14616,18 @@ func (s *CreateAssociationInput) SetAssociationName(v string) *CreateAssociation
return s
}
+// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.
+func (s *CreateAssociationInput) SetAutomationTargetParameterName(v string) *CreateAssociationInput {
+ s.AutomationTargetParameterName = &v
+ return s
+}
+
+// SetComplianceSeverity sets the ComplianceSeverity field's value.
+func (s *CreateAssociationInput) SetComplianceSeverity(v string) *CreateAssociationInput {
+ s.ComplianceSeverity = &v
+ return s
+}
+
// SetDocumentVersion sets the DocumentVersion field's value.
func (s *CreateAssociationInput) SetDocumentVersion(v string) *CreateAssociationInput {
s.DocumentVersion = &v
@@ -13907,6 +14640,18 @@ func (s *CreateAssociationInput) SetInstanceId(v string) *CreateAssociationInput
return s
}
+// SetMaxConcurrency sets the MaxConcurrency field's value.
+func (s *CreateAssociationInput) SetMaxConcurrency(v string) *CreateAssociationInput {
+ s.MaxConcurrency = &v
+ return s
+}
+
+// SetMaxErrors sets the MaxErrors field's value.
+func (s *CreateAssociationInput) SetMaxErrors(v string) *CreateAssociationInput {
+ s.MaxErrors = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *CreateAssociationInput) SetName(v string) *CreateAssociationInput {
s.Name = &v
@@ -13963,6 +14708,10 @@ func (s *CreateAssociationOutput) SetAssociationDescription(v *AssociationDescri
type CreateDocumentInput struct {
_ struct{} `type:"structure"`
+ // A list of key and value pairs that describe attachments to a version of a
+ // document.
+ Attachments []*AttachmentsSource `type:"list"`
+
// A valid JSON or YAML string.
//
// Content is a required field
@@ -13972,8 +14721,8 @@ type CreateDocumentInput struct {
// JSON or YAML. JSON is the default format.
DocumentFormat *string `type:"string" enum:"DocumentFormat"`
- // The type of document to create. Valid document types include: Policy, Automation,
- // and Command.
+ // The type of document to create. Valid document types include: Command, Policy,
+ // Automation, Session, and Package.
DocumentType *string `type:"string" enum:"DocumentType"`
// A name for the Systems Manager document.
@@ -13998,6 +14747,11 @@ type CreateDocumentInput struct {
// Types Reference (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
// in the AWS CloudFormation User Guide.
TargetType *string `type:"string"`
+
+ // An optional field specifying the version of the artifact you are creating
+ // with the document. For example, "Release 12, Update 6". This value is unique
+ // across all versions of a document, and cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -14022,6 +14776,16 @@ func (s *CreateDocumentInput) Validate() error {
if s.Name == nil {
invalidParams.Add(request.NewErrParamRequired("Name"))
}
+ if s.Attachments != nil {
+ for i, v := range s.Attachments {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attachments", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
if invalidParams.Len() > 0 {
return invalidParams
@@ -14029,6 +14793,12 @@ func (s *CreateDocumentInput) Validate() error {
return nil
}
+// SetAttachments sets the Attachments field's value.
+func (s *CreateDocumentInput) SetAttachments(v []*AttachmentsSource) *CreateDocumentInput {
+ s.Attachments = v
+ return s
+}
+
// SetContent sets the Content field's value.
func (s *CreateDocumentInput) SetContent(v string) *CreateDocumentInput {
s.Content = &v
@@ -14059,6 +14829,12 @@ func (s *CreateDocumentInput) SetTargetType(v string) *CreateDocumentInput {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *CreateDocumentInput) SetVersionName(v string) *CreateDocumentInput {
+ s.VersionName = &v
+ return s
+}
+
type CreateDocumentOutput struct {
_ struct{} `type:"structure"`
@@ -14107,13 +14883,18 @@ type CreateMaintenanceWindowInput struct {
// An optional description for the Maintenance Window. We recommend specifying
// a description to help you organize your Maintenance Windows.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The duration of the Maintenance Window in hours.
//
// Duration is a required field
Duration *int64 `min:"1" type:"integer" required:"true"`
+ // The date and time, in ISO-8601 Extended format, for when you want the Maintenance
+ // Window to become inactive. EndDate allows you to set a date and time in the
+ // future when the Maintenance Window will no longer run.
+ EndDate *string `type:"string"`
+
// The name of the Maintenance Window.
//
// Name is a required field
@@ -14123,6 +14904,17 @@ type CreateMaintenanceWindowInput struct {
//
// Schedule is a required field
Schedule *string `min:"1" type:"string" required:"true"`
+
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles",
+ // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database
+ // (https://www.iana.org/time-zones) on the IANA website.
+ ScheduleTimezone *string `type:"string"`
+
+ // The date and time, in ISO-8601 Extended format, for when you want the Maintenance
+ // Window to become active. StartDate allows you to delay activation of the
+ // Maintenance Window until the specified future date.
+ StartDate *string `type:"string"`
}
// String returns the string representation
@@ -14205,6 +14997,12 @@ func (s *CreateMaintenanceWindowInput) SetDuration(v int64) *CreateMaintenanceWi
return s
}
+// SetEndDate sets the EndDate field's value.
+func (s *CreateMaintenanceWindowInput) SetEndDate(v string) *CreateMaintenanceWindowInput {
+ s.EndDate = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *CreateMaintenanceWindowInput) SetName(v string) *CreateMaintenanceWindowInput {
s.Name = &v
@@ -14217,6 +15015,18 @@ func (s *CreateMaintenanceWindowInput) SetSchedule(v string) *CreateMaintenanceW
return s
}
+// SetScheduleTimezone sets the ScheduleTimezone field's value.
+func (s *CreateMaintenanceWindowInput) SetScheduleTimezone(v string) *CreateMaintenanceWindowInput {
+ s.ScheduleTimezone = &v
+ return s
+}
+
+// SetStartDate sets the StartDate field's value.
+func (s *CreateMaintenanceWindowInput) SetStartDate(v string) *CreateMaintenanceWindowInput {
+ s.StartDate = &v
+ return s
+}
+
type CreateMaintenanceWindowOutput struct {
_ struct{} `type:"structure"`
@@ -14290,6 +15100,21 @@ type CreatePatchBaselineInput struct {
// in the AWS Systems Manager User Guide.
RejectedPatches []*string `type:"list"`
+ // The action for Patch Manager to take on patches included in the RejectedPackages
+ // list.
+ //
+ // * ALLOW_AS_DEPENDENCY: A package in the Rejected patches list is installed
+ // only if it is a dependency of another package. It is considered compliant
+ // with the patch baseline, and its status is reported as InstalledOther.
+ // This is the default action if no option is specified.
+ //
+ // * BLOCK: Packages in the RejectedPatches list, and packages that include
+ // them as dependencies, are not installed under any circumstances. If a
+ // package was installed before it was added to the Rejected patches list,
+ // it is considered non-compliant with the patch baseline, and its status
+ // is reported as InstalledRejected.
+ RejectedPatchesAction *string `type:"string" enum:"PatchAction"`
+
// Information about the patches to use to update the instances, including target
// operating systems and source repositories. Applies to Linux instances only.
Sources []*PatchSource `type:"list"`
@@ -14407,6 +15232,12 @@ func (s *CreatePatchBaselineInput) SetRejectedPatches(v []*string) *CreatePatchB
return s
}
+// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.
+func (s *CreatePatchBaselineInput) SetRejectedPatchesAction(v string) *CreatePatchBaselineInput {
+ s.RejectedPatchesAction = &v
+ return s
+}
+
// SetSources sets the Sources field's value.
func (s *CreatePatchBaselineInput) SetSources(v []*PatchSource) *CreatePatchBaselineInput {
s.Sources = v
@@ -16249,6 +17080,11 @@ type DescribeDocumentInput struct {
//
// Name is a required field
Name *string `type:"string" required:"true"`
+
+ // An optional field specifying the version of the artifact associated with
+ // the document. For example, "Release 12, Update 6". This value is unique across
+ // all versions of a document, and cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -16286,6 +17122,12 @@ func (s *DescribeDocumentInput) SetName(v string) *DescribeDocumentInput {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *DescribeDocumentInput) SetVersionName(v string) *DescribeDocumentInput {
+ s.VersionName = &v
+ return s
+}
+
type DescribeDocumentOutput struct {
_ struct{} `type:"structure"`
@@ -16675,6 +17517,7 @@ type DescribeInstanceInformationInput struct {
_ struct{} `type:"structure"`
// One or more filters. Use a filter to return a more specific list of instances.
+ // You can filter on Amazon EC2 tag. Specify tags by using a key-value mapping.
Filters []*InstanceInformationStringFilter `type:"list"`
// This is a legacy method. We recommend that you don't use this method. Instead,
@@ -17112,8 +17955,7 @@ type DescribeInstancePatchesOutput struct {
//
// Severity (string)
//
- // State (string: "INSTALLED", "INSTALLED OTHER", "MISSING", "NOT APPLICABLE",
- // "FAILED")
+ // State (string, such as "INSTALLED" or "FAILED")
//
// InstalledTime (DateTime)
//
@@ -17614,6 +18456,150 @@ func (s *DescribeMaintenanceWindowExecutionsOutput) SetWindowExecutions(v []*Mai
return s
}
+type DescribeMaintenanceWindowScheduleInput struct {
+ _ struct{} `type:"structure"`
+
+ // Filters used to limit the range of results. For example, you can limit Maintenance
+ // Window executions to only those scheduled before or after a certain date
+ // and time.
+ Filters []*PatchOrchestratorFilter `type:"list"`
+
+ // The maximum number of items to return for this call. The call also returns
+ // a token that you can specify in a subsequent call to get the next set of
+ // results.
+ MaxResults *int64 `min:"1" type:"integer"`
+
+ // The token for the next set of items to return. (You received this token from
+ // a previous call.)
+ NextToken *string `type:"string"`
+
+ // The type of resource you want to retrieve information about. For example,
+ // "INSTANCE".
+ ResourceType *string `type:"string" enum:"MaintenanceWindowResourceType"`
+
+ // The instance ID or key/value pair to retrieve information about.
+ Targets []*Target `type:"list"`
+
+ // The ID of the Maintenance Window to retrieve information about.
+ WindowId *string `min:"20" type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeMaintenanceWindowScheduleInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeMaintenanceWindowScheduleInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeMaintenanceWindowScheduleInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowScheduleInput"}
+ if s.MaxResults != nil && *s.MaxResults < 1 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
+ }
+ if s.WindowId != nil && len(*s.WindowId) < 20 {
+ invalidParams.Add(request.NewErrParamMinLen("WindowId", 20))
+ }
+ if s.Filters != nil {
+ for i, v := range s.Filters {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
+ if s.Targets != nil {
+ for i, v := range s.Targets {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetFilters sets the Filters field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetFilters(v []*PatchOrchestratorFilter) *DescribeMaintenanceWindowScheduleInput {
+ s.Filters = v
+ return s
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetMaxResults(v int64) *DescribeMaintenanceWindowScheduleInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetNextToken(v string) *DescribeMaintenanceWindowScheduleInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetResourceType(v string) *DescribeMaintenanceWindowScheduleInput {
+ s.ResourceType = &v
+ return s
+}
+
+// SetTargets sets the Targets field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetTargets(v []*Target) *DescribeMaintenanceWindowScheduleInput {
+ s.Targets = v
+ return s
+}
+
+// SetWindowId sets the WindowId field's value.
+func (s *DescribeMaintenanceWindowScheduleInput) SetWindowId(v string) *DescribeMaintenanceWindowScheduleInput {
+ s.WindowId = &v
+ return s
+}
+
+type DescribeMaintenanceWindowScheduleOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token for the next set of items to return. (You use this token in the
+ // next call.)
+ NextToken *string `type:"string"`
+
+ // Information about Maintenance Window executions scheduled for the specified
+ // time range.
+ ScheduledWindowExecutions []*ScheduledWindowExecution `type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeMaintenanceWindowScheduleOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeMaintenanceWindowScheduleOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeMaintenanceWindowScheduleOutput) SetNextToken(v string) *DescribeMaintenanceWindowScheduleOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetScheduledWindowExecutions sets the ScheduledWindowExecutions field's value.
+func (s *DescribeMaintenanceWindowScheduleOutput) SetScheduledWindowExecutions(v []*ScheduledWindowExecution) *DescribeMaintenanceWindowScheduleOutput {
+ s.ScheduledWindowExecutions = v
+ return s
+}
+
type DescribeMaintenanceWindowTargetsInput struct {
_ struct{} `type:"structure"`
@@ -17850,6 +18836,127 @@ func (s *DescribeMaintenanceWindowTasksOutput) SetTasks(v []*MaintenanceWindowTa
return s
}
+type DescribeMaintenanceWindowsForTargetInput struct {
+ _ struct{} `type:"structure"`
+
+ // The maximum number of items to return for this call. The call also returns
+ // a token that you can specify in a subsequent call to get the next set of
+ // results.
+ MaxResults *int64 `min:"1" type:"integer"`
+
+ // The token for the next set of items to return. (You received this token from
+ // a previous call.)
+ NextToken *string `type:"string"`
+
+ // The type of resource you want to retrieve information about. For example,
+ // "INSTANCE".
+ //
+ // ResourceType is a required field
+ ResourceType *string `type:"string" required:"true" enum:"MaintenanceWindowResourceType"`
+
+ // The instance ID or key/value pair to retrieve information about.
+ //
+ // Targets is a required field
+ Targets []*Target `type:"list" required:"true"`
+}
+
+// String returns the string representation
+func (s DescribeMaintenanceWindowsForTargetInput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeMaintenanceWindowsForTargetInput) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DescribeMaintenanceWindowsForTargetInput) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "DescribeMaintenanceWindowsForTargetInput"}
+ if s.MaxResults != nil && *s.MaxResults < 1 {
+ invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
+ }
+ if s.ResourceType == nil {
+ invalidParams.Add(request.NewErrParamRequired("ResourceType"))
+ }
+ if s.Targets == nil {
+ invalidParams.Add(request.NewErrParamRequired("Targets"))
+ }
+ if s.Targets != nil {
+ for i, v := range s.Targets {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetMaxResults sets the MaxResults field's value.
+func (s *DescribeMaintenanceWindowsForTargetInput) SetMaxResults(v int64) *DescribeMaintenanceWindowsForTargetInput {
+ s.MaxResults = &v
+ return s
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeMaintenanceWindowsForTargetInput) SetNextToken(v string) *DescribeMaintenanceWindowsForTargetInput {
+ s.NextToken = &v
+ return s
+}
+
+// SetResourceType sets the ResourceType field's value.
+func (s *DescribeMaintenanceWindowsForTargetInput) SetResourceType(v string) *DescribeMaintenanceWindowsForTargetInput {
+ s.ResourceType = &v
+ return s
+}
+
+// SetTargets sets the Targets field's value.
+func (s *DescribeMaintenanceWindowsForTargetInput) SetTargets(v []*Target) *DescribeMaintenanceWindowsForTargetInput {
+ s.Targets = v
+ return s
+}
+
+type DescribeMaintenanceWindowsForTargetOutput struct {
+ _ struct{} `type:"structure"`
+
+ // The token for the next set of items to return. (You use this token in the
+ // next call.)
+ NextToken *string `type:"string"`
+
+ // Information about the Maintenance Window targets and tasks an instance is
+ // associated with.
+ WindowIdentities []*MaintenanceWindowIdentityForTarget `type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeMaintenanceWindowsForTargetOutput) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeMaintenanceWindowsForTargetOutput) GoString() string {
+ return s.String()
+}
+
+// SetNextToken sets the NextToken field's value.
+func (s *DescribeMaintenanceWindowsForTargetOutput) SetNextToken(v string) *DescribeMaintenanceWindowsForTargetOutput {
+ s.NextToken = &v
+ return s
+}
+
+// SetWindowIdentities sets the WindowIdentities field's value.
+func (s *DescribeMaintenanceWindowsForTargetOutput) SetWindowIdentities(v []*MaintenanceWindowIdentityForTarget) *DescribeMaintenanceWindowsForTargetOutput {
+ s.WindowIdentities = v
+ return s
+}
+
type DescribeMaintenanceWindowsInput struct {
_ struct{} `type:"structure"`
@@ -18230,6 +19337,14 @@ type DescribePatchGroupStateOutput struct {
// The number of instances with installed patches.
InstancesWithInstalledPatches *int64 `type:"integer"`
+ // The number of instances with patches installed that are specified in a RejectedPatches
+ // list. Patches with a status of INSTALLED_REJECTED were typically installed
+ // before they were added to a RejectedPatches list.
+ //
+ // If ALLOW_AS_DEPENDENCY is the specified option for RejectedPatchesAction,
+ // the value of InstancesWithInstalledRejectedPatches will always be 0 (zero).
+ InstancesWithInstalledRejectedPatches *int64 `type:"integer"`
+
// The number of instances with missing patches from the patch baseline.
InstancesWithMissingPatches *int64 `type:"integer"`
@@ -18271,6 +19386,12 @@ func (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledPatches(v int64
return s
}
+// SetInstancesWithInstalledRejectedPatches sets the InstancesWithInstalledRejectedPatches field's value.
+func (s *DescribePatchGroupStateOutput) SetInstancesWithInstalledRejectedPatches(v int64) *DescribePatchGroupStateOutput {
+ s.InstancesWithInstalledRejectedPatches = &v
+ return s
+}
+
// SetInstancesWithMissingPatches sets the InstancesWithMissingPatches field's value.
func (s *DescribePatchGroupStateOutput) SetInstancesWithMissingPatches(v int64) *DescribePatchGroupStateOutput {
s.InstancesWithMissingPatches = &v
@@ -18400,7 +19521,7 @@ type DescribeSessionsInput struct {
// a previous call.)
NextToken *string `type:"string"`
- // The session status to retrieve a list of sessions for. For example, "active".
+ // The session status to retrieve a list of sessions for. For example, "Active".
//
// State is a required field
State *string `type:"string" required:"true" enum:"SessionState"`
@@ -18509,6 +19630,9 @@ type DocumentDefaultVersionDescription struct {
// The default version of the document.
DefaultVersion *string `type:"string"`
+ // The default version of the artifact associated with the document.
+ DefaultVersionName *string `type:"string"`
+
// The name of the document.
Name *string `type:"string"`
}
@@ -18529,6 +19653,12 @@ func (s *DocumentDefaultVersionDescription) SetDefaultVersion(v string) *Documen
return s
}
+// SetDefaultVersionName sets the DefaultVersionName field's value.
+func (s *DocumentDefaultVersionDescription) SetDefaultVersionName(v string) *DocumentDefaultVersionDescription {
+ s.DefaultVersionName = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *DocumentDefaultVersionDescription) SetName(v string) *DocumentDefaultVersionDescription {
s.Name = &v
@@ -18539,6 +19669,10 @@ func (s *DocumentDefaultVersionDescription) SetName(v string) *DocumentDefaultVe
type DocumentDescription struct {
_ struct{} `type:"structure"`
+ // Details about the document attachments, including names, locations, sizes,
+ // etc.
+ AttachmentsInformation []*AttachmentInformation `type:"list"`
+
// The date when the document was created.
CreatedDate *time.Time `type:"timestamp"`
@@ -18562,7 +19696,7 @@ type DocumentDescription struct {
// Sha1 hashes have been deprecated.
Hash *string `type:"string"`
- // Sha256 or Sha1.
+ // The hash type of the document. Valid values include Sha256 or Sha1.
//
// Sha1 hashes have been deprecated.
HashType *string `type:"string" enum:"DocumentHashType"`
@@ -18591,6 +19725,12 @@ type DocumentDescription struct {
// The status of the Systems Manager document.
Status *string `type:"string" enum:"DocumentStatus"`
+ // A message returned by AWS Systems Manager that explains the Status value.
+ // For example, a Failed status might be explained by the StatusInformation
+ // message, "The specified S3 bucket does not exist. Verify that the URL of
+ // the S3 bucket is correct."
+ StatusInformation *string `type:"string"`
+
// The tags, or metadata, that have been applied to the document.
Tags []*Tag `type:"list"`
@@ -18599,6 +19739,9 @@ type DocumentDescription struct {
// see AWS Resource Types Reference (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
// in the AWS CloudFormation User Guide.
TargetType *string `type:"string"`
+
+ // The version of the artifact associated with the document.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -18611,6 +19754,12 @@ func (s DocumentDescription) GoString() string {
return s.String()
}
+// SetAttachmentsInformation sets the AttachmentsInformation field's value.
+func (s *DocumentDescription) SetAttachmentsInformation(v []*AttachmentInformation) *DocumentDescription {
+ s.AttachmentsInformation = v
+ return s
+}
+
// SetCreatedDate sets the CreatedDate field's value.
func (s *DocumentDescription) SetCreatedDate(v time.Time) *DocumentDescription {
s.CreatedDate = &v
@@ -18707,6 +19856,12 @@ func (s *DocumentDescription) SetStatus(v string) *DocumentDescription {
return s
}
+// SetStatusInformation sets the StatusInformation field's value.
+func (s *DocumentDescription) SetStatusInformation(v string) *DocumentDescription {
+ s.StatusInformation = &v
+ return s
+}
+
// SetTags sets the Tags field's value.
func (s *DocumentDescription) SetTags(v []*Tag) *DocumentDescription {
s.Tags = v
@@ -18719,6 +19874,12 @@ func (s *DocumentDescription) SetTargetType(v string) *DocumentDescription {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *DocumentDescription) SetVersionName(v string) *DocumentDescription {
+ s.VersionName = &v
+ return s
+}
+
// Describes a filter.
type DocumentFilter struct {
_ struct{} `type:"structure"`
@@ -18808,6 +19969,11 @@ type DocumentIdentifier struct {
// see AWS Resource Types Reference (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
// in the AWS CloudFormation User Guide.
TargetType *string `type:"string"`
+
+ // An optional field specifying the version of the artifact associated with
+ // the document. For example, "Release 12, Update 6". This value is unique across
+ // all versions of a document, and cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -18874,6 +20040,12 @@ func (s *DocumentIdentifier) SetTargetType(v string) *DocumentIdentifier {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *DocumentIdentifier) SetVersionName(v string) *DocumentIdentifier {
+ s.VersionName = &v
+ return s
+}
+
// One or more filters. Use a filter to return a more specific list of documents.
//
// For keys, you can specify one or more tags that have been applied to a document.
@@ -19016,6 +20188,21 @@ type DocumentVersionInfo struct {
// The document name.
Name *string `type:"string"`
+
+ // The status of the Systems Manager document, such as Creating, Active, Failed,
+ // and Deleting.
+ Status *string `type:"string" enum:"DocumentStatus"`
+
+ // A message returned by AWS Systems Manager that explains the Status value.
+ // For example, a Failed status might be explained by the StatusInformation
+ // message, "The specified S3 bucket does not exist. Verify that the URL of
+ // the S3 bucket is correct."
+ StatusInformation *string `type:"string"`
+
+ // The version of the artifact associated with the document. For example, "Release
+ // 12, Update 6". This value is unique across all versions of a document, and
+ // cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -19058,6 +20245,24 @@ func (s *DocumentVersionInfo) SetName(v string) *DocumentVersionInfo {
return s
}
+// SetStatus sets the Status field's value.
+func (s *DocumentVersionInfo) SetStatus(v string) *DocumentVersionInfo {
+ s.Status = &v
+ return s
+}
+
+// SetStatusInformation sets the StatusInformation field's value.
+func (s *DocumentVersionInfo) SetStatusInformation(v string) *DocumentVersionInfo {
+ s.StatusInformation = &v
+ return s
+}
+
+// SetVersionName sets the VersionName field's value.
+func (s *DocumentVersionInfo) SetVersionName(v string) *DocumentVersionInfo {
+ s.VersionName = &v
+ return s
+}
+
// The EffectivePatch structure defines metadata about a patch along with the
// approval state of the patch in a particular patch baseline. The approval
// state includes information about whether the patch is currently approved,
@@ -19808,6 +21013,11 @@ type GetDocumentInput struct {
//
// Name is a required field
Name *string `type:"string" required:"true"`
+
+ // An optional field specifying the version of the artifact associated with
+ // the document. For example, "Release 12, Update 6". This value is unique across
+ // all versions of a document, and cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -19851,9 +21061,19 @@ func (s *GetDocumentInput) SetName(v string) *GetDocumentInput {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *GetDocumentInput) SetVersionName(v string) *GetDocumentInput {
+ s.VersionName = &v
+ return s
+}
+
type GetDocumentOutput struct {
_ struct{} `type:"structure"`
+ // A description of the document attachments, including names, locations, sizes,
+ // etc.
+ AttachmentsContent []*AttachmentContent `type:"list"`
+
// The contents of the Systems Manager document.
Content *string `min:"1" type:"string"`
@@ -19868,6 +21088,21 @@ type GetDocumentOutput struct {
// The name of the Systems Manager document.
Name *string `type:"string"`
+
+ // The status of the Systems Manager document, such as Creating, Active, Updating,
+ // Failed, and Deleting.
+ Status *string `type:"string" enum:"DocumentStatus"`
+
+ // A message returned by AWS Systems Manager that explains the Status value.
+ // For example, a Failed status might be explained by the StatusInformation
+ // message, "The specified S3 bucket does not exist. Verify that the URL of
+ // the S3 bucket is correct."
+ StatusInformation *string `type:"string"`
+
+ // The version of the artifact associated with the document. For example, "Release
+ // 12, Update 6". This value is unique across all versions of a document, and
+ // cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -19880,6 +21115,12 @@ func (s GetDocumentOutput) GoString() string {
return s.String()
}
+// SetAttachmentsContent sets the AttachmentsContent field's value.
+func (s *GetDocumentOutput) SetAttachmentsContent(v []*AttachmentContent) *GetDocumentOutput {
+ s.AttachmentsContent = v
+ return s
+}
+
// SetContent sets the Content field's value.
func (s *GetDocumentOutput) SetContent(v string) *GetDocumentOutput {
s.Content = &v
@@ -19910,6 +21151,24 @@ func (s *GetDocumentOutput) SetName(v string) *GetDocumentOutput {
return s
}
+// SetStatus sets the Status field's value.
+func (s *GetDocumentOutput) SetStatus(v string) *GetDocumentOutput {
+ s.Status = &v
+ return s
+}
+
+// SetStatusInformation sets the StatusInformation field's value.
+func (s *GetDocumentOutput) SetStatusInformation(v string) *GetDocumentOutput {
+ s.StatusInformation = &v
+ return s
+}
+
+// SetVersionName sets the VersionName field's value.
+func (s *GetDocumentOutput) SetVersionName(v string) *GetDocumentOutput {
+ s.VersionName = &v
+ return s
+}
+
type GetInventoryInput struct {
_ struct{} `type:"structure"`
@@ -20428,10 +21687,10 @@ type GetMaintenanceWindowExecutionTaskInvocationOutput struct {
// User-provided value to be included in any CloudWatch events raised while
// running tasks for these targets in this Maintenance Window.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The parameters used at the time that the task executed.
- Parameters *string `type:"string"`
+ Parameters *string `type:"string" sensitive:"true"`
// The time that the task started executing on the target.
StartTime *time.Time `type:"timestamp"`
@@ -20586,7 +21845,7 @@ type GetMaintenanceWindowExecutionTaskOutput struct {
// Key: string, between 1 and 255 characters
//
// Value: an array of strings, each string is between 1 and 255 characters
- TaskParameters []map[string]*MaintenanceWindowTaskParameterValueExpression `type:"list"`
+ TaskParameters []map[string]*MaintenanceWindowTaskParameterValueExpression `type:"list" sensitive:"true"`
// The type of task executed.
Type *string `type:"string" enum:"MaintenanceWindowTaskType"`
@@ -20739,7 +21998,7 @@ type GetMaintenanceWindowOutput struct {
Cutoff *int64 `type:"integer"`
// The description of the Maintenance Window.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The duration of the Maintenance Window in hours.
Duration *int64 `min:"1" type:"integer"`
@@ -20747,15 +22006,35 @@ type GetMaintenanceWindowOutput struct {
// Whether the Maintenance Windows is enabled.
Enabled *bool `type:"boolean"`
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become inactive. The Maintenance Window will not run
+ // after this specified time.
+ EndDate *string `type:"string"`
+
// The date the Maintenance Window was last modified.
ModifiedDate *time.Time `type:"timestamp"`
// The name of the Maintenance Window.
Name *string `min:"3" type:"string"`
+ // The next time the Maintenance Window will actually run, taking into account
+ // any specified times for the Maintenance Window to become active or inactive.
+ NextExecutionTime *string `type:"string"`
+
// The schedule of the Maintenance Window in the form of a cron or rate expression.
Schedule *string `min:"1" type:"string"`
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles",
+ // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database
+ // (https://www.iana.org/time-zones) on the IANA website.
+ ScheduleTimezone *string `type:"string"`
+
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become active. The Maintenance Window will not run
+ // before this specified time.
+ StartDate *string `type:"string"`
+
// The ID of the created Maintenance Window.
WindowId *string `min:"20" type:"string"`
}
@@ -20806,6 +22085,12 @@ func (s *GetMaintenanceWindowOutput) SetEnabled(v bool) *GetMaintenanceWindowOut
return s
}
+// SetEndDate sets the EndDate field's value.
+func (s *GetMaintenanceWindowOutput) SetEndDate(v string) *GetMaintenanceWindowOutput {
+ s.EndDate = &v
+ return s
+}
+
// SetModifiedDate sets the ModifiedDate field's value.
func (s *GetMaintenanceWindowOutput) SetModifiedDate(v time.Time) *GetMaintenanceWindowOutput {
s.ModifiedDate = &v
@@ -20818,12 +22103,30 @@ func (s *GetMaintenanceWindowOutput) SetName(v string) *GetMaintenanceWindowOutp
return s
}
+// SetNextExecutionTime sets the NextExecutionTime field's value.
+func (s *GetMaintenanceWindowOutput) SetNextExecutionTime(v string) *GetMaintenanceWindowOutput {
+ s.NextExecutionTime = &v
+ return s
+}
+
// SetSchedule sets the Schedule field's value.
func (s *GetMaintenanceWindowOutput) SetSchedule(v string) *GetMaintenanceWindowOutput {
s.Schedule = &v
return s
}
+// SetScheduleTimezone sets the ScheduleTimezone field's value.
+func (s *GetMaintenanceWindowOutput) SetScheduleTimezone(v string) *GetMaintenanceWindowOutput {
+ s.ScheduleTimezone = &v
+ return s
+}
+
+// SetStartDate sets the StartDate field's value.
+func (s *GetMaintenanceWindowOutput) SetStartDate(v string) *GetMaintenanceWindowOutput {
+ s.StartDate = &v
+ return s
+}
+
// SetWindowId sets the WindowId field's value.
func (s *GetMaintenanceWindowOutput) SetWindowId(v string) *GetMaintenanceWindowOutput {
s.WindowId = &v
@@ -20892,7 +22195,7 @@ type GetMaintenanceWindowTaskOutput struct {
_ struct{} `type:"structure"`
// The retrieved task description.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The location in Amazon S3 where the task results are logged.
//
@@ -20936,7 +22239,7 @@ type GetMaintenanceWindowTaskOutput struct {
// when it runs, instead use the Parameters option in the TaskInvocationParameters
// structure. For information about how Systems Manager handles these options
// for the supported Maintenance Window task types, see MaintenanceWindowTaskInvocationParameters.
- TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`
+ TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map" sensitive:"true"`
// The type of task to execute.
TaskType *string `type:"string" enum:"MaintenanceWindowTaskType"`
@@ -21631,6 +22934,11 @@ type GetPatchBaselineOutput struct {
// A list of explicitly rejected patches for the baseline.
RejectedPatches []*string `type:"list"`
+ // The action specified to take on patches included in the RejectedPatches list.
+ // A patch can be allowed only if it is a dependency of another package, or
+ // blocked entirely along with packages that include it as a dependency.
+ RejectedPatchesAction *string `type:"string" enum:"PatchAction"`
+
// Information about the patches to use to update the instances, including target
// operating systems and source repositories. Applies to Linux instances only.
Sources []*PatchSource `type:"list"`
@@ -21724,6 +23032,12 @@ func (s *GetPatchBaselineOutput) SetRejectedPatches(v []*string) *GetPatchBaseli
return s
}
+// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.
+func (s *GetPatchBaselineOutput) SetRejectedPatchesAction(v string) *GetPatchBaselineOutput {
+ s.RejectedPatchesAction = &v
+ return s
+}
+
// SetSources sets the Sources field's value.
func (s *GetPatchBaselineOutput) SetSources(v []*PatchSource) *GetPatchBaselineOutput {
s.Sources = v
@@ -22331,6 +23645,16 @@ type InstancePatchState struct {
// during the last patching operation, but failed to install.
FailedCount *int64 `type:"integer"`
+ // An https URL or an Amazon S3 path-style URL to a list of patches to be installed.
+ // This patch installation list, which you maintain in an Amazon S3 bucket in
+ // YAML format and specify in the SSM document AWS-RunPatchBaseline, overrides
+ // the patches specified by the default patch baseline.
+ //
+ // For more information about the InstallOverrideList parameter, see About the
+ // SSM Document AWS-RunPatchBaseline (http://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-about-aws-runpatchbaseline.html)
+ // in the AWS Systems Manager User Guide.
+ InstallOverrideList *string `min:"1" type:"string"`
+
// The number of patches from the patch baseline that are installed on the instance.
InstalledCount *int64 `type:"integer"`
@@ -22338,6 +23662,14 @@ type InstancePatchState struct {
// on the instance.
InstalledOtherCount *int64 `type:"integer"`
+ // The number of instances with patches installed that are specified in a RejectedPatches
+ // list. Patches with a status of InstalledRejected were typically installed
+ // before they were added to a RejectedPatches list.
+ //
+ // If ALLOW_AS_DEPENDENCY is the specified option for RejectedPatchesAction,
+ // the value of InstalledRejectedCount will always be 0 (zero).
+ InstalledRejectedCount *int64 `type:"integer"`
+
// The ID of the managed instance the high-level patch compliance information
// was collected for.
//
@@ -22370,7 +23702,7 @@ type InstancePatchState struct {
// Placeholder information. This field will always be empty in the current release
// of the service.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The name of the patch group the managed instance belongs to.
//
@@ -22404,6 +23736,12 @@ func (s *InstancePatchState) SetFailedCount(v int64) *InstancePatchState {
return s
}
+// SetInstallOverrideList sets the InstallOverrideList field's value.
+func (s *InstancePatchState) SetInstallOverrideList(v string) *InstancePatchState {
+ s.InstallOverrideList = &v
+ return s
+}
+
// SetInstalledCount sets the InstalledCount field's value.
func (s *InstancePatchState) SetInstalledCount(v int64) *InstancePatchState {
s.InstalledCount = &v
@@ -22416,6 +23754,12 @@ func (s *InstancePatchState) SetInstalledOtherCount(v int64) *InstancePatchState
return s
}
+// SetInstalledRejectedCount sets the InstalledRejectedCount field's value.
+func (s *InstancePatchState) SetInstalledRejectedCount(v int64) *InstancePatchState {
+ s.InstalledRejectedCount = &v
+ return s
+}
+
// SetInstanceId sets the InstanceId field's value.
func (s *InstancePatchState) SetInstanceId(v string) *InstancePatchState {
s.InstanceId = &v
@@ -24982,10 +26326,10 @@ type MaintenanceWindowExecutionTaskInvocationIdentity struct {
// User-provided value that was specified when the target was registered with
// the Maintenance Window. This was also included in any CloudWatch events raised
// during the task invocation.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The parameters that were provided for the invocation when it was executed.
- Parameters *string `type:"string"`
+ Parameters *string `type:"string" sensitive:"true"`
// The time the invocation started.
StartTime *time.Time `type:"timestamp"`
@@ -25093,7 +26437,7 @@ func (s *MaintenanceWindowExecutionTaskInvocationIdentity) SetWindowTargetId(v s
return s
}
-// Filter used in the request.
+// Filter used in the request. Supported filter keys are Name and Enabled.
type MaintenanceWindowFilter struct {
_ struct{} `type:"structure"`
@@ -25148,7 +26492,7 @@ type MaintenanceWindowIdentity struct {
Cutoff *int64 `type:"integer"`
// A description of the Maintenance Window.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The duration of the Maintenance Window in hours.
Duration *int64 `min:"1" type:"integer"`
@@ -25156,9 +26500,28 @@ type MaintenanceWindowIdentity struct {
// Whether the Maintenance Window is enabled.
Enabled *bool `type:"boolean"`
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become inactive.
+ EndDate *string `type:"string"`
+
// The name of the Maintenance Window.
Name *string `min:"3" type:"string"`
+ // The next time the Maintenance Window will actually run, taking into account
+ // any specified times for the Maintenance Window to become active or inactive.
+ NextExecutionTime *string `type:"string"`
+
+ // The schedule of the Maintenance Window in the form of a cron or rate expression.
+ Schedule *string `min:"1" type:"string"`
+
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format.
+ ScheduleTimezone *string `type:"string"`
+
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become active.
+ StartDate *string `type:"string"`
+
// The ID of the Maintenance Window.
WindowId *string `min:"20" type:"string"`
}
@@ -25197,18 +26560,81 @@ func (s *MaintenanceWindowIdentity) SetEnabled(v bool) *MaintenanceWindowIdentit
return s
}
+// SetEndDate sets the EndDate field's value.
+func (s *MaintenanceWindowIdentity) SetEndDate(v string) *MaintenanceWindowIdentity {
+ s.EndDate = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *MaintenanceWindowIdentity) SetName(v string) *MaintenanceWindowIdentity {
s.Name = &v
return s
}
+// SetNextExecutionTime sets the NextExecutionTime field's value.
+func (s *MaintenanceWindowIdentity) SetNextExecutionTime(v string) *MaintenanceWindowIdentity {
+ s.NextExecutionTime = &v
+ return s
+}
+
+// SetSchedule sets the Schedule field's value.
+func (s *MaintenanceWindowIdentity) SetSchedule(v string) *MaintenanceWindowIdentity {
+ s.Schedule = &v
+ return s
+}
+
+// SetScheduleTimezone sets the ScheduleTimezone field's value.
+func (s *MaintenanceWindowIdentity) SetScheduleTimezone(v string) *MaintenanceWindowIdentity {
+ s.ScheduleTimezone = &v
+ return s
+}
+
+// SetStartDate sets the StartDate field's value.
+func (s *MaintenanceWindowIdentity) SetStartDate(v string) *MaintenanceWindowIdentity {
+ s.StartDate = &v
+ return s
+}
+
// SetWindowId sets the WindowId field's value.
func (s *MaintenanceWindowIdentity) SetWindowId(v string) *MaintenanceWindowIdentity {
s.WindowId = &v
return s
}
+// The Maintenance Window to which the specified target belongs.
+type MaintenanceWindowIdentityForTarget struct {
+ _ struct{} `type:"structure"`
+
+ // The name of the Maintenance Window.
+ Name *string `min:"3" type:"string"`
+
+ // The ID of the Maintenance Window.
+ WindowId *string `min:"20" type:"string"`
+}
+
+// String returns the string representation
+func (s MaintenanceWindowIdentityForTarget) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s MaintenanceWindowIdentityForTarget) GoString() string {
+ return s.String()
+}
+
+// SetName sets the Name field's value.
+func (s *MaintenanceWindowIdentityForTarget) SetName(v string) *MaintenanceWindowIdentityForTarget {
+ s.Name = &v
+ return s
+}
+
+// SetWindowId sets the WindowId field's value.
+func (s *MaintenanceWindowIdentityForTarget) SetWindowId(v string) *MaintenanceWindowIdentityForTarget {
+ s.WindowId = &v
+ return s
+}
+
// The parameters for a LAMBDA task type.
//
// For information about specifying and updating task parameters, see RegisterTaskWithMaintenanceWindow
@@ -25237,7 +26663,7 @@ type MaintenanceWindowLambdaParameters struct {
// JSON to provide to your Lambda function as input.
//
// Payload is automatically base64 encoded/decoded by the SDK.
- Payload []byte `type:"blob"`
+ Payload []byte `type:"blob" sensitive:"true"`
// (Optional) Specify a Lambda function version or alias name. If you specify
// a function version, the action uses the qualified function ARN to invoke
@@ -25337,7 +26763,7 @@ type MaintenanceWindowRunCommandParameters struct {
ServiceRoleArn *string `type:"string"`
// If this time is reached and the command has not already started executing,
- // it doesn not execute.
+ // it doesn't run.
TimeoutSeconds *int64 `min:"30" type:"integer"`
}
@@ -25442,7 +26868,7 @@ type MaintenanceWindowStepFunctionsParameters struct {
_ struct{} `type:"structure"`
// The inputs for the STEP_FUNCTION task.
- Input *string `type:"string"`
+ Input *string `type:"string" sensitive:"true"`
// The name of the STEP_FUNCTION task.
Name *string `min:"1" type:"string"`
@@ -25488,14 +26914,14 @@ type MaintenanceWindowTarget struct {
_ struct{} `type:"structure"`
// A description of the target.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The target name.
Name *string `min:"3" type:"string"`
// User-provided value that will be included in any CloudWatch events raised
// while running tasks for these targets in this Maintenance Window.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The type of target.
ResourceType *string `type:"string" enum:"MaintenanceWindowResourceType"`
@@ -25568,7 +26994,7 @@ type MaintenanceWindowTask struct {
_ struct{} `type:"structure"`
// A description of the task.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// Information about an Amazon S3 bucket to write task-level logs to.
//
@@ -25611,7 +27037,7 @@ type MaintenanceWindowTask struct {
// when it runs, instead use the Parameters option in the TaskInvocationParameters
// structure. For information about how Systems Manager handles these options
// for the supported Maintenance Window task types, see MaintenanceWindowTaskInvocationParameters.
- TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`
+ TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map" sensitive:"true"`
// The type of task. The type can be one of the following: RUN_COMMAND, AUTOMATION,
// LAMBDA, or STEP_FUNCTION.
@@ -25795,11 +27221,11 @@ func (s *MaintenanceWindowTaskInvocationParameters) SetStepFunctions(v *Maintena
// Defines the values for a task parameter.
type MaintenanceWindowTaskParameterValueExpression struct {
- _ struct{} `type:"structure"`
+ _ struct{} `type:"structure" sensitive:"true"`
// This field contains an array of 0 or more strings, each 1 to 255 characters
// in length.
- Values []*string `type:"list"`
+ Values []*string `type:"list" sensitive:"true"`
}
// String returns the string representation
@@ -26664,8 +28090,10 @@ type PatchComplianceData struct {
// Severity is a required field
Severity *string `type:"string" required:"true"`
- // The state of the patch on the instance (INSTALLED, INSTALLED_OTHER, MISSING,
- // NOT_APPLICABLE or FAILED).
+ // The state of the patch on the instance, such as INSTALLED or FAILED.
+ //
+ // For descriptions of each patch state, see About Patch Compliance (http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-compliance-about.html#sysman-compliance-monitor-patch)
+ // in the AWS Systems Manager User Guide.
//
// State is a required field
State *string `type:"string" required:"true" enum:"PatchComplianceDataState"`
@@ -27459,16 +28887,16 @@ type PatchSource struct {
// The value of the yum repo configuration. For example:
//
- // cachedir=/var/cache/yum/$basesearch
+ // [main]
//
- // $releasever
+ // cachedir=/var/cache/yum/$basesearch$releasever
//
// keepcache=0
//
// debuglevel=2
//
// Configuration is a required field
- Configuration *string `min:"1" type:"string" required:"true"`
+ Configuration *string `min:"1" type:"string" required:"true" sensitive:"true"`
// The name specified to identify the patch source.
//
@@ -27579,6 +29007,72 @@ func (s *PatchStatus) SetDeploymentStatus(v string) *PatchStatus {
return s
}
+// An aggregate of step execution statuses displayed in the AWS Console for
+// a multi-Region and multi-account Automation execution.
+type ProgressCounters struct {
+ _ struct{} `type:"structure"`
+
+ // The total number of steps that the system cancelled in all specified AWS
+ // Regions and accounts for the current Automation execution.
+ CancelledSteps *int64 `type:"integer"`
+
+ // The total number of steps that failed to execute in all specified AWS Regions
+ // and accounts for the current Automation execution.
+ FailedSteps *int64 `type:"integer"`
+
+ // The total number of steps that successfully completed in all specified AWS
+ // Regions and accounts for the current Automation execution.
+ SuccessSteps *int64 `type:"integer"`
+
+ // The total number of steps that timed out in all specified AWS Regions and
+ // accounts for the current Automation execution.
+ TimedOutSteps *int64 `type:"integer"`
+
+ // The total number of steps executed in all specified AWS Regions and accounts
+ // for the current Automation execution.
+ TotalSteps *int64 `type:"integer"`
+}
+
+// String returns the string representation
+func (s ProgressCounters) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ProgressCounters) GoString() string {
+ return s.String()
+}
+
+// SetCancelledSteps sets the CancelledSteps field's value.
+func (s *ProgressCounters) SetCancelledSteps(v int64) *ProgressCounters {
+ s.CancelledSteps = &v
+ return s
+}
+
+// SetFailedSteps sets the FailedSteps field's value.
+func (s *ProgressCounters) SetFailedSteps(v int64) *ProgressCounters {
+ s.FailedSteps = &v
+ return s
+}
+
+// SetSuccessSteps sets the SuccessSteps field's value.
+func (s *ProgressCounters) SetSuccessSteps(v int64) *ProgressCounters {
+ s.SuccessSteps = &v
+ return s
+}
+
+// SetTimedOutSteps sets the TimedOutSteps field's value.
+func (s *ProgressCounters) SetTimedOutSteps(v int64) *ProgressCounters {
+ s.TimedOutSteps = &v
+ return s
+}
+
+// SetTotalSteps sets the TotalSteps field's value.
+func (s *ProgressCounters) SetTotalSteps(v int64) *ProgressCounters {
+ s.TotalSteps = &v
+ return s
+}
+
type PutComplianceItemsInput struct {
_ struct{} `type:"structure"`
@@ -28167,14 +29661,14 @@ type RegisterTargetWithMaintenanceWindowInput struct {
ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`
// An optional description for the target.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// An optional name for the target.
Name *string `min:"3" type:"string"`
// User-provided value that will be included in any CloudWatch events raised
// while running tasks for these targets in this Maintenance Window.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The type of target being registered with the Maintenance Window.
//
@@ -28328,7 +29822,7 @@ type RegisterTaskWithMaintenanceWindowInput struct {
ClientToken *string `min:"1" type:"string" idempotencyToken:"true"`
// An optional description for the task.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// A structure containing information about an Amazon S3 bucket to write instance-level
// logs to.
@@ -28400,7 +29894,7 @@ type RegisterTaskWithMaintenanceWindowInput struct {
// when it runs, instead use the Parameters option in the TaskInvocationParameters
// structure. For information about how Systems Manager handles these options
// for the supported Maintenance Window task types, see MaintenanceWindowTaskInvocationParameters.
- TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`
+ TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map" sensitive:"true"`
// The type of task being registered.
//
@@ -28579,7 +30073,7 @@ func (s *RegisterTaskWithMaintenanceWindowInput) SetWindowId(v string) *Register
type RegisterTaskWithMaintenanceWindowOutput struct {
_ struct{} `type:"structure"`
- // The id of the task in the Maintenance Window.
+ // The ID of the task in the Maintenance Window.
WindowTaskId *string `min:"36" type:"string"`
}
@@ -29216,6 +30710,49 @@ func (s *S3OutputUrl) SetOutputUrl(v string) *S3OutputUrl {
return s
}
+// Information about a scheduled execution for a Maintenance Window.
+type ScheduledWindowExecution struct {
+ _ struct{} `type:"structure"`
+
+ // The time, in ISO-8601 Extended format, that the Maintenance Window is scheduled
+ // to be run.
+ ExecutionTime *string `type:"string"`
+
+ // The name of the Maintenance Window to be run.
+ Name *string `min:"3" type:"string"`
+
+ // The ID of the Maintenance Window to be run.
+ WindowId *string `min:"20" type:"string"`
+}
+
+// String returns the string representation
+func (s ScheduledWindowExecution) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ScheduledWindowExecution) GoString() string {
+ return s.String()
+}
+
+// SetExecutionTime sets the ExecutionTime field's value.
+func (s *ScheduledWindowExecution) SetExecutionTime(v string) *ScheduledWindowExecution {
+ s.ExecutionTime = &v
+ return s
+}
+
+// SetName sets the Name field's value.
+func (s *ScheduledWindowExecution) SetName(v string) *ScheduledWindowExecution {
+ s.Name = &v
+ return s
+}
+
+// SetWindowId sets the WindowId field's value.
+func (s *ScheduledWindowExecution) SetWindowId(v string) *ScheduledWindowExecution {
+ s.WindowId = &v
+ return s
+}
+
type SendAutomationSignalInput struct {
_ struct{} `type:"structure"`
@@ -29342,7 +30879,7 @@ type SendCommandInput struct {
// The instance IDs where the command should execute. You can specify a maximum
// of 50 IDs. If you prefer not to list individual instance IDs, you can instead
// send commands to a fleet of instances using the Targets parameter, which
- // accepts EC2 tags. For more information about how to use Targets, see Sending
+ // accepts EC2 tags. For more information about how to use targets, see Sending
// Commands to a Fleet (http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html)
// in the AWS Systems Manager User Guide.
InstanceIds []*string `type:"list"`
@@ -29385,7 +30922,7 @@ type SendCommandInput struct {
// (Optional) An array of search criteria that targets instances using a Key,Value
// combination that you specify. Targets is required if you don't provide one
- // or more instance IDs in the call. For more information about how to use Targets,
+ // or more instance IDs in the call. For more information about how to use targets,
// see Sending Commands to a Fleet (http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html)
// in the AWS Systems Manager User Guide.
Targets []*Target `type:"list"`
@@ -29969,12 +31506,19 @@ type StartAutomationExecutionInput struct {
// in the Automation document.
Parameters map[string][]*string `min:"1" type:"map"`
+ // A location is a combination of AWS Regions and/or AWS accounts where you
+ // want to execute the Automation. Use this action to start an Automation in
+ // multiple Regions and multiple accounts. For more information, see Concurrently
+ // Executing Automations in Multiple AWS Regions and Accounts (http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html)
+ // in the AWS Systems Manager User Guide.
+ TargetLocations []*TargetLocation `min:"1" type:"list"`
+
// A key-value mapping of document parameters to target resources. Both Targets
// and TargetMaps cannot be specified together.
TargetMaps []map[string][]*string `type:"list"`
// The name of the parameter used as the target resource for the rate-controlled
- // execution. Required if you specify Targets.
+ // execution. Required if you specify targets.
TargetParameterName *string `min:"1" type:"string"`
// A key-value mapping to target resources. Required if you specify TargetParameterName.
@@ -30009,9 +31553,22 @@ func (s *StartAutomationExecutionInput) Validate() error {
if s.Parameters != nil && len(s.Parameters) < 1 {
invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
}
+ if s.TargetLocations != nil && len(s.TargetLocations) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("TargetLocations", 1))
+ }
if s.TargetParameterName != nil && len(*s.TargetParameterName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("TargetParameterName", 1))
}
+ if s.TargetLocations != nil {
+ for i, v := range s.TargetLocations {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetLocations", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
if s.Targets != nil {
for i, v := range s.Targets {
if v == nil {
@@ -30071,6 +31628,12 @@ func (s *StartAutomationExecutionInput) SetParameters(v map[string][]*string) *S
return s
}
+// SetTargetLocations sets the TargetLocations field's value.
+func (s *StartAutomationExecutionInput) SetTargetLocations(v []*TargetLocation) *StartAutomationExecutionInput {
+ s.TargetLocations = v
+ return s
+}
+
// SetTargetMaps sets the TargetMaps field's value.
func (s *StartAutomationExecutionInput) SetTargetMaps(v []map[string][]*string) *StartAutomationExecutionInput {
s.TargetMaps = v
@@ -30289,6 +31852,13 @@ type StepExecution struct {
// Success, Cancelled, Failed, and TimedOut.
StepStatus *string `type:"string" enum:"AutomationExecutionStatus"`
+ // The combination of AWS Regions and accounts targeted by the current Automation
+ // execution.
+ TargetLocation *TargetLocation `type:"structure"`
+
+ // The targets for the step execution.
+ Targets []*Target `type:"list"`
+
// The timeout seconds of the step.
TimeoutSeconds *int64 `type:"long"`
@@ -30418,6 +31988,18 @@ func (s *StepExecution) SetStepStatus(v string) *StepExecution {
return s
}
+// SetTargetLocation sets the TargetLocation field's value.
+func (s *StepExecution) SetTargetLocation(v *TargetLocation) *StepExecution {
+ s.TargetLocation = v
+ return s
+}
+
+// SetTargets sets the Targets field's value.
+func (s *StepExecution) SetTargets(v []*Target) *StepExecution {
+ s.Targets = v
+ return s
+}
+
// SetTimeoutSeconds sets the TimeoutSeconds field's value.
func (s *StepExecution) SetTimeoutSeconds(v int64) *StepExecution {
s.TimeoutSeconds = &v
@@ -30673,6 +32255,94 @@ func (s *Target) SetValues(v []*string) *Target {
return s
}
+// The combination of AWS Regions and accounts targeted by the current Automation
+// execution.
+type TargetLocation struct {
+ _ struct{} `type:"structure"`
+
+ // The AWS accounts targeted by the current Automation execution.
+ Accounts []*string `min:"1" type:"list"`
+
+ // The Automation execution role used by the currently executing Automation.
+ ExecutionRoleName *string `min:"1" type:"string"`
+
+ // The AWS Regions targeted by the current Automation execution.
+ Regions []*string `min:"1" type:"list"`
+
+ // The maxium number of AWS accounts and AWS regions allowed to run the Automation
+ // concurrently
+ TargetLocationMaxConcurrency *string `min:"1" type:"string"`
+
+ // The maxium number of errors allowed before the system stops queueing additional
+ // Automation executions for the currently executing Automation.
+ TargetLocationMaxErrors *string `min:"1" type:"string"`
+}
+
+// String returns the string representation
+func (s TargetLocation) String() string {
+ return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s TargetLocation) GoString() string {
+ return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *TargetLocation) Validate() error {
+ invalidParams := request.ErrInvalidParams{Context: "TargetLocation"}
+ if s.Accounts != nil && len(s.Accounts) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Accounts", 1))
+ }
+ if s.ExecutionRoleName != nil && len(*s.ExecutionRoleName) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("ExecutionRoleName", 1))
+ }
+ if s.Regions != nil && len(s.Regions) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("Regions", 1))
+ }
+ if s.TargetLocationMaxConcurrency != nil && len(*s.TargetLocationMaxConcurrency) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("TargetLocationMaxConcurrency", 1))
+ }
+ if s.TargetLocationMaxErrors != nil && len(*s.TargetLocationMaxErrors) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("TargetLocationMaxErrors", 1))
+ }
+
+ if invalidParams.Len() > 0 {
+ return invalidParams
+ }
+ return nil
+}
+
+// SetAccounts sets the Accounts field's value.
+func (s *TargetLocation) SetAccounts(v []*string) *TargetLocation {
+ s.Accounts = v
+ return s
+}
+
+// SetExecutionRoleName sets the ExecutionRoleName field's value.
+func (s *TargetLocation) SetExecutionRoleName(v string) *TargetLocation {
+ s.ExecutionRoleName = &v
+ return s
+}
+
+// SetRegions sets the Regions field's value.
+func (s *TargetLocation) SetRegions(v []*string) *TargetLocation {
+ s.Regions = v
+ return s
+}
+
+// SetTargetLocationMaxConcurrency sets the TargetLocationMaxConcurrency field's value.
+func (s *TargetLocation) SetTargetLocationMaxConcurrency(v string) *TargetLocation {
+ s.TargetLocationMaxConcurrency = &v
+ return s
+}
+
+// SetTargetLocationMaxErrors sets the TargetLocationMaxErrors field's value.
+func (s *TargetLocation) SetTargetLocationMaxErrors(v string) *TargetLocation {
+ s.TargetLocationMaxErrors = &v
+ return s
+}
+
type TerminateSessionInput struct {
_ struct{} `type:"structure"`
@@ -30753,9 +32423,42 @@ type UpdateAssociationInput struct {
// this request succeeds, either specify $LATEST, or omit this parameter.
AssociationVersion *string `type:"string"`
+ // Specify the target for the association. This target is required for associations
+ // that use an Automation document and target resources by using rate controls.
+ AutomationTargetParameterName *string `min:"1" type:"string"`
+
+ // The severity level to assign to the association.
+ ComplianceSeverity *string `type:"string" enum:"AssociationComplianceSeverity"`
+
// The document version you want update for the association.
DocumentVersion *string `type:"string"`
+ // The maximum number of targets allowed to run the association at the same
+ // time. You can specify a number, for example 10, or a percentage of the target
+ // set, for example 10%. The default value is 100%, which means all targets
+ // run the association at the same time.
+ //
+ // If a new instance starts and attempts to execute an association while Systems
+ // Manager is executing MaxConcurrency associations, the association is allowed
+ // to run. During the next association interval, the new instance will process
+ // its association within the limit specified for MaxConcurrency.
+ MaxConcurrency *string `min:"1" type:"string"`
+
+ // The number of errors that are allowed before the system stops sending requests
+ // to run the association on additional targets. You can specify either an absolute
+ // number of errors, for example 10, or a percentage of the target set, for
+ // example 10%. If you specify 3, for example, the system stops sending requests
+ // when the fourth error is received. If you specify 0, then the system stops
+ // sending requests after the first error is returned. If you run an association
+ // on 50 instances and set MaxError to 10%, then the system stops sending the
+ // request when the sixth error is received.
+ //
+ // Executions that are already running an association when MaxErrors is reached
+ // are allowed to complete, but some of these executions may fail as well. If
+ // you need to ensure that there won't be more than max-errors failed executions,
+ // set MaxConcurrency to 1 so that executions proceed one at a time.
+ MaxErrors *string `min:"1" type:"string"`
+
// The name of the association document.
Name *string `type:"string"`
@@ -30789,6 +32492,15 @@ func (s *UpdateAssociationInput) Validate() error {
if s.AssociationId == nil {
invalidParams.Add(request.NewErrParamRequired("AssociationId"))
}
+ if s.AutomationTargetParameterName != nil && len(*s.AutomationTargetParameterName) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("AutomationTargetParameterName", 1))
+ }
+ if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1))
+ }
+ if s.MaxErrors != nil && len(*s.MaxErrors) < 1 {
+ invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1))
+ }
if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 {
invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1))
}
@@ -30832,12 +32544,36 @@ func (s *UpdateAssociationInput) SetAssociationVersion(v string) *UpdateAssociat
return s
}
+// SetAutomationTargetParameterName sets the AutomationTargetParameterName field's value.
+func (s *UpdateAssociationInput) SetAutomationTargetParameterName(v string) *UpdateAssociationInput {
+ s.AutomationTargetParameterName = &v
+ return s
+}
+
+// SetComplianceSeverity sets the ComplianceSeverity field's value.
+func (s *UpdateAssociationInput) SetComplianceSeverity(v string) *UpdateAssociationInput {
+ s.ComplianceSeverity = &v
+ return s
+}
+
// SetDocumentVersion sets the DocumentVersion field's value.
func (s *UpdateAssociationInput) SetDocumentVersion(v string) *UpdateAssociationInput {
s.DocumentVersion = &v
return s
}
+// SetMaxConcurrency sets the MaxConcurrency field's value.
+func (s *UpdateAssociationInput) SetMaxConcurrency(v string) *UpdateAssociationInput {
+ s.MaxConcurrency = &v
+ return s
+}
+
+// SetMaxErrors sets the MaxErrors field's value.
+func (s *UpdateAssociationInput) SetMaxErrors(v string) *UpdateAssociationInput {
+ s.MaxErrors = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *UpdateAssociationInput) SetName(v string) *UpdateAssociationInput {
s.Name = &v
@@ -31064,7 +32800,11 @@ func (s *UpdateDocumentDefaultVersionOutput) SetDescription(v *DocumentDefaultVe
type UpdateDocumentInput struct {
_ struct{} `type:"structure"`
- // The content in a document that you want to update.
+ // A list of key and value pairs that describe attachments to a version of a
+ // document.
+ Attachments []*AttachmentsSource `type:"list"`
+
+ // A valid JSON or YAML string.
//
// Content is a required field
Content *string `min:"1" type:"string" required:"true"`
@@ -31083,6 +32823,11 @@ type UpdateDocumentInput struct {
// Specify a new target type for the document.
TargetType *string `type:"string"`
+
+ // An optional field specifying the version of the artifact you are updating
+ // with the document. For example, "Release 12, Update 6". This value is unique
+ // across all versions of a document, and cannot be changed.
+ VersionName *string `type:"string"`
}
// String returns the string representation
@@ -31107,6 +32852,16 @@ func (s *UpdateDocumentInput) Validate() error {
if s.Name == nil {
invalidParams.Add(request.NewErrParamRequired("Name"))
}
+ if s.Attachments != nil {
+ for i, v := range s.Attachments {
+ if v == nil {
+ continue
+ }
+ if err := v.Validate(); err != nil {
+ invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attachments", i), err.(request.ErrInvalidParams))
+ }
+ }
+ }
if invalidParams.Len() > 0 {
return invalidParams
@@ -31114,6 +32869,12 @@ func (s *UpdateDocumentInput) Validate() error {
return nil
}
+// SetAttachments sets the Attachments field's value.
+func (s *UpdateDocumentInput) SetAttachments(v []*AttachmentsSource) *UpdateDocumentInput {
+ s.Attachments = v
+ return s
+}
+
// SetContent sets the Content field's value.
func (s *UpdateDocumentInput) SetContent(v string) *UpdateDocumentInput {
s.Content = &v
@@ -31144,6 +32905,12 @@ func (s *UpdateDocumentInput) SetTargetType(v string) *UpdateDocumentInput {
return s
}
+// SetVersionName sets the VersionName field's value.
+func (s *UpdateDocumentInput) SetVersionName(v string) *UpdateDocumentInput {
+ s.VersionName = &v
+ return s
+}
+
type UpdateDocumentOutput struct {
_ struct{} `type:"structure"`
@@ -31179,7 +32946,7 @@ type UpdateMaintenanceWindowInput struct {
Cutoff *int64 `type:"integer"`
// An optional description for the update request.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The duration of the Maintenance Window in hours.
Duration *int64 `min:"1" type:"integer"`
@@ -31187,6 +32954,11 @@ type UpdateMaintenanceWindowInput struct {
// Whether the Maintenance Window is enabled.
Enabled *bool `type:"boolean"`
+ // The date and time, in ISO-8601 Extended format, for when you want the Maintenance
+ // Window to become inactive. EndDate allows you to set a date and time in the
+ // future when the Maintenance Window will no longer run.
+ EndDate *string `type:"string"`
+
// The name of the Maintenance Window.
Name *string `min:"3" type:"string"`
@@ -31198,6 +32970,18 @@ type UpdateMaintenanceWindowInput struct {
// The schedule of the Maintenance Window in the form of a cron or rate expression.
Schedule *string `min:"1" type:"string"`
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles",
+ // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database
+ // (https://www.iana.org/time-zones) on the IANA website.
+ ScheduleTimezone *string `type:"string"`
+
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles",
+ // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database
+ // (https://www.iana.org/time-zones) on the IANA website.
+ StartDate *string `type:"string"`
+
// The ID of the Maintenance Window to update.
//
// WindowId is a required field
@@ -31272,6 +33056,12 @@ func (s *UpdateMaintenanceWindowInput) SetEnabled(v bool) *UpdateMaintenanceWind
return s
}
+// SetEndDate sets the EndDate field's value.
+func (s *UpdateMaintenanceWindowInput) SetEndDate(v string) *UpdateMaintenanceWindowInput {
+ s.EndDate = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *UpdateMaintenanceWindowInput) SetName(v string) *UpdateMaintenanceWindowInput {
s.Name = &v
@@ -31290,6 +33080,18 @@ func (s *UpdateMaintenanceWindowInput) SetSchedule(v string) *UpdateMaintenanceW
return s
}
+// SetScheduleTimezone sets the ScheduleTimezone field's value.
+func (s *UpdateMaintenanceWindowInput) SetScheduleTimezone(v string) *UpdateMaintenanceWindowInput {
+ s.ScheduleTimezone = &v
+ return s
+}
+
+// SetStartDate sets the StartDate field's value.
+func (s *UpdateMaintenanceWindowInput) SetStartDate(v string) *UpdateMaintenanceWindowInput {
+ s.StartDate = &v
+ return s
+}
+
// SetWindowId sets the WindowId field's value.
func (s *UpdateMaintenanceWindowInput) SetWindowId(v string) *UpdateMaintenanceWindowInput {
s.WindowId = &v
@@ -31308,7 +33110,7 @@ type UpdateMaintenanceWindowOutput struct {
Cutoff *int64 `type:"integer"`
// An optional description of the update.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The duration of the Maintenance Window in hours.
Duration *int64 `min:"1" type:"integer"`
@@ -31316,12 +33118,28 @@ type UpdateMaintenanceWindowOutput struct {
// Whether the Maintenance Window is enabled.
Enabled *bool `type:"boolean"`
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become inactive. The Maintenance Window will not run
+ // after this specified time.
+ EndDate *string `type:"string"`
+
// The name of the Maintenance Window.
Name *string `min:"3" type:"string"`
// The schedule of the Maintenance Window in the form of a cron or rate expression.
Schedule *string `min:"1" type:"string"`
+ // The time zone that the scheduled Maintenance Window executions are based
+ // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles",
+ // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database
+ // (https://www.iana.org/time-zones) on the IANA website.
+ ScheduleTimezone *string `type:"string"`
+
+ // The date and time, in ISO-8601 Extended format, for when the Maintenance
+ // Window is scheduled to become active. The Maintenance Window will not run
+ // before this specified time.
+ StartDate *string `type:"string"`
+
// The ID of the created Maintenance Window.
WindowId *string `min:"20" type:"string"`
}
@@ -31366,6 +33184,12 @@ func (s *UpdateMaintenanceWindowOutput) SetEnabled(v bool) *UpdateMaintenanceWin
return s
}
+// SetEndDate sets the EndDate field's value.
+func (s *UpdateMaintenanceWindowOutput) SetEndDate(v string) *UpdateMaintenanceWindowOutput {
+ s.EndDate = &v
+ return s
+}
+
// SetName sets the Name field's value.
func (s *UpdateMaintenanceWindowOutput) SetName(v string) *UpdateMaintenanceWindowOutput {
s.Name = &v
@@ -31378,6 +33202,18 @@ func (s *UpdateMaintenanceWindowOutput) SetSchedule(v string) *UpdateMaintenance
return s
}
+// SetScheduleTimezone sets the ScheduleTimezone field's value.
+func (s *UpdateMaintenanceWindowOutput) SetScheduleTimezone(v string) *UpdateMaintenanceWindowOutput {
+ s.ScheduleTimezone = &v
+ return s
+}
+
+// SetStartDate sets the StartDate field's value.
+func (s *UpdateMaintenanceWindowOutput) SetStartDate(v string) *UpdateMaintenanceWindowOutput {
+ s.StartDate = &v
+ return s
+}
+
// SetWindowId sets the WindowId field's value.
func (s *UpdateMaintenanceWindowOutput) SetWindowId(v string) *UpdateMaintenanceWindowOutput {
s.WindowId = &v
@@ -31388,14 +33224,14 @@ type UpdateMaintenanceWindowTargetInput struct {
_ struct{} `type:"structure"`
// An optional description for the update.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// A name for the update.
Name *string `min:"3" type:"string"`
// User-provided value that will be included in any CloudWatch events raised
// while running tasks for these targets in this Maintenance Window.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow
// action are also required for this API request. Optional fields that are not
@@ -31513,13 +33349,13 @@ type UpdateMaintenanceWindowTargetOutput struct {
_ struct{} `type:"structure"`
// The updated description.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The updated name.
Name *string `min:"3" type:"string"`
// The updated owner.
- OwnerInformation *string `min:"1" type:"string"`
+ OwnerInformation *string `min:"1" type:"string" sensitive:"true"`
// The updated targets.
Targets []*Target `type:"list"`
@@ -31581,7 +33417,7 @@ type UpdateMaintenanceWindowTaskInput struct {
_ struct{} `type:"structure"`
// The new task description to specify.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The new logging location in Amazon S3 to specify.
//
@@ -31651,7 +33487,7 @@ type UpdateMaintenanceWindowTaskInput struct {
// Key: string, between 1 and 255 characters
//
// Value: an array of strings, each string is between 1 and 255 characters
- TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`
+ TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map" sensitive:"true"`
// The Maintenance Window ID that contains the task to modify.
//
@@ -31819,7 +33655,7 @@ type UpdateMaintenanceWindowTaskOutput struct {
_ struct{} `type:"structure"`
// The updated task description.
- Description *string `min:"1" type:"string"`
+ Description *string `min:"1" type:"string" sensitive:"true"`
// The updated logging information in Amazon S3.
//
@@ -31859,7 +33695,7 @@ type UpdateMaintenanceWindowTaskOutput struct {
// when it runs, instead use the Parameters option in the TaskInvocationParameters
// structure. For information about how Systems Manager handles these options
// for the supported Maintenance Window task types, see MaintenanceWindowTaskInvocationParameters.
- TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map"`
+ TaskParameters map[string]*MaintenanceWindowTaskParameterValueExpression `type:"map" sensitive:"true"`
// The ID of the Maintenance Window that was updated.
WindowId *string `min:"20" type:"string"`
@@ -32066,6 +33902,21 @@ type UpdatePatchBaselineInput struct {
// in the AWS Systems Manager User Guide.
RejectedPatches []*string `type:"list"`
+ // The action for Patch Manager to take on patches included in the RejectedPackages
+ // list.
+ //
+ // * ALLOW_AS_DEPENDENCY: A package in the Rejected patches list is installed
+ // only if it is a dependency of another package. It is considered compliant
+ // with the patch baseline, and its status is reported as InstalledOther.
+ // This is the default action if no option is specified.
+ //
+ // * BLOCK: Packages in the RejectedPatches list, and packages that include
+ // them as dependencies, are not installed under any circumstances. If a
+ // package was installed before it was added to the Rejected patches list,
+ // it is considered non-compliant with the patch baseline, and its status
+ // is reported as InstalledRejected.
+ RejectedPatchesAction *string `type:"string" enum:"PatchAction"`
+
// If True, then all fields that are required by the CreatePatchBaseline action
// are also required for this API request. Optional fields that are not specified
// are set to null.
@@ -32182,6 +34033,12 @@ func (s *UpdatePatchBaselineInput) SetRejectedPatches(v []*string) *UpdatePatchB
return s
}
+// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.
+func (s *UpdatePatchBaselineInput) SetRejectedPatchesAction(v string) *UpdatePatchBaselineInput {
+ s.RejectedPatchesAction = &v
+ return s
+}
+
// SetReplace sets the Replace field's value.
func (s *UpdatePatchBaselineInput) SetReplace(v bool) *UpdatePatchBaselineInput {
s.Replace = &v
@@ -32236,6 +34093,11 @@ type UpdatePatchBaselineOutput struct {
// A list of explicitly rejected patches for the baseline.
RejectedPatches []*string `type:"list"`
+ // The action specified to take on patches included in the RejectedPatches list.
+ // A patch can be allowed only if it is a dependency of another package, or
+ // blocked entirely along with packages that include it as a dependency.
+ RejectedPatchesAction *string `type:"string" enum:"PatchAction"`
+
// Information about the patches to use to update the instances, including target
// operating systems and source repositories. Applies to Linux instances only.
Sources []*PatchSource `type:"list"`
@@ -32323,6 +34185,12 @@ func (s *UpdatePatchBaselineOutput) SetRejectedPatches(v []*string) *UpdatePatch
return s
}
+// SetRejectedPatchesAction sets the RejectedPatchesAction field's value.
+func (s *UpdatePatchBaselineOutput) SetRejectedPatchesAction(v string) *UpdatePatchBaselineOutput {
+ s.RejectedPatchesAction = &v
+ return s
+}
+
// SetSources sets the Sources field's value.
func (s *UpdatePatchBaselineOutput) SetSources(v []*PatchSource) *UpdatePatchBaselineOutput {
s.Sources = v
@@ -32330,6 +34198,23 @@ func (s *UpdatePatchBaselineOutput) SetSources(v []*PatchSource) *UpdatePatchBas
}
const (
+ // AssociationComplianceSeverityCritical is a AssociationComplianceSeverity enum value
+ AssociationComplianceSeverityCritical = "CRITICAL"
+
+ // AssociationComplianceSeverityHigh is a AssociationComplianceSeverity enum value
+ AssociationComplianceSeverityHigh = "HIGH"
+
+ // AssociationComplianceSeverityMedium is a AssociationComplianceSeverity enum value
+ AssociationComplianceSeverityMedium = "MEDIUM"
+
+ // AssociationComplianceSeverityLow is a AssociationComplianceSeverity enum value
+ AssociationComplianceSeverityLow = "LOW"
+
+ // AssociationComplianceSeverityUnspecified is a AssociationComplianceSeverity enum value
+ AssociationComplianceSeverityUnspecified = "UNSPECIFIED"
+)
+
+const (
// AssociationExecutionFilterKeyExecutionId is a AssociationExecutionFilterKey enum value
AssociationExecutionFilterKeyExecutionId = "ExecutionId"
@@ -32397,6 +34282,16 @@ const (
)
const (
+ // AttachmentHashTypeSha256 is a AttachmentHashType enum value
+ AttachmentHashTypeSha256 = "Sha256"
+)
+
+const (
+ // AttachmentsSourceKeySourceUrl is a AttachmentsSourceKey enum value
+ AttachmentsSourceKeySourceUrl = "SourceUrl"
+)
+
+const (
// AutomationExecutionFilterKeyDocumentNamePrefix is a AutomationExecutionFilterKey enum value
AutomationExecutionFilterKeyDocumentNamePrefix = "DocumentNamePrefix"
@@ -32417,6 +34312,9 @@ const (
// AutomationExecutionFilterKeyStartTimeAfter is a AutomationExecutionFilterKey enum value
AutomationExecutionFilterKeyStartTimeAfter = "StartTimeAfter"
+
+ // AutomationExecutionFilterKeyAutomationType is a AutomationExecutionFilterKey enum value
+ AutomationExecutionFilterKeyAutomationType = "AutomationType"
)
const (
@@ -32446,6 +34344,14 @@ const (
)
const (
+ // AutomationTypeCrossAccount is a AutomationType enum value
+ AutomationTypeCrossAccount = "CrossAccount"
+
+ // AutomationTypeLocal is a AutomationType enum value
+ AutomationTypeLocal = "Local"
+)
+
+const (
// CommandFilterKeyInvokedAfter is a CommandFilterKey enum value
CommandFilterKeyInvokedAfter = "InvokedAfter"
@@ -32638,6 +34544,7 @@ const (
DocumentPermissionTypeShare = "Share"
)
+// The status of a document.
const (
// DocumentStatusCreating is a DocumentStatus enum value
DocumentStatusCreating = "Creating"
@@ -32650,6 +34557,9 @@ const (
// DocumentStatusDeleting is a DocumentStatus enum value
DocumentStatusDeleting = "Deleting"
+
+ // DocumentStatusFailed is a DocumentStatus enum value
+ DocumentStatusFailed = "Failed"
)
const (
@@ -32664,6 +34574,9 @@ const (
// DocumentTypeSession is a DocumentType enum value
DocumentTypeSession = "Session"
+
+ // DocumentTypePackage is a DocumentType enum value
+ DocumentTypePackage = "Package"
)
const (
@@ -32899,12 +34812,23 @@ const (
)
const (
+ // PatchActionAllowAsDependency is a PatchAction enum value
+ PatchActionAllowAsDependency = "ALLOW_AS_DEPENDENCY"
+
+ // PatchActionBlock is a PatchAction enum value
+ PatchActionBlock = "BLOCK"
+)
+
+const (
// PatchComplianceDataStateInstalled is a PatchComplianceDataState enum value
PatchComplianceDataStateInstalled = "INSTALLED"
// PatchComplianceDataStateInstalledOther is a PatchComplianceDataState enum value
PatchComplianceDataStateInstalledOther = "INSTALLED_OTHER"
+ // PatchComplianceDataStateInstalledRejected is a PatchComplianceDataState enum value
+ PatchComplianceDataStateInstalledRejected = "INSTALLED_REJECTED"
+
// PatchComplianceDataStateMissing is a PatchComplianceDataState enum value
PatchComplianceDataStateMissing = "MISSING"
diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go
index da7ff9e6..44d3bac8 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go
@@ -140,6 +140,13 @@ const (
// the content of the document and try again.
ErrCodeDuplicateDocumentContent = "DuplicateDocumentContent"
+ // ErrCodeDuplicateDocumentVersionName for service response error code
+ // "DuplicateDocumentVersionName".
+ //
+ // The version name has already been used in this document. Specify a different
+ // version name, and then try again.
+ ErrCodeDuplicateDocumentVersionName = "DuplicateDocumentVersionName"
+
// ErrCodeDuplicateInstanceId for service response error code
// "DuplicateInstanceId".
//
diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/api.go b/vendor/github.com/aws/aws-sdk-go/service/sts/api.go
index 6f89a796..ee908f91 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/sts/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/sts/api.go
@@ -15,7 +15,7 @@ const opAssumeRole = "AssumeRole"
// AssumeRoleRequest generates a "aws/request.Request" representing the
// client's request for the AssumeRole operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -209,7 +209,7 @@ const opAssumeRoleWithSAML = "AssumeRoleWithSAML"
// AssumeRoleWithSAMLRequest generates a "aws/request.Request" representing the
// client's request for the AssumeRoleWithSAML operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -391,7 +391,7 @@ const opAssumeRoleWithWebIdentity = "AssumeRoleWithWebIdentity"
// AssumeRoleWithWebIdentityRequest generates a "aws/request.Request" representing the
// client's request for the AssumeRoleWithWebIdentity operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -602,7 +602,7 @@ const opDecodeAuthorizationMessage = "DecodeAuthorizationMessage"
// DecodeAuthorizationMessageRequest generates a "aws/request.Request" representing the
// client's request for the DecodeAuthorizationMessage operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -714,7 +714,7 @@ const opGetCallerIdentity = "GetCallerIdentity"
// GetCallerIdentityRequest generates a "aws/request.Request" representing the
// client's request for the GetCallerIdentity operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -789,7 +789,7 @@ const opGetFederationToken = "GetFederationToken"
// GetFederationTokenRequest generates a "aws/request.Request" representing the
// client's request for the GetFederationToken operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
@@ -958,7 +958,7 @@ const opGetSessionToken = "GetSessionToken"
// GetSessionTokenRequest generates a "aws/request.Request" representing the
// client's request for the GetSessionToken operation. The "output" return
// value will be populated with the request's response once the request completes
-// successfuly.
+// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
diff --git a/vendor/github.com/go-ini/ini/LICENSE b/vendor/github.com/go-ini/ini/LICENSE
deleted file mode 100644
index d361bbcd..00000000
--- a/vendor/github.com/go-ini/ini/LICENSE
+++ /dev/null
@@ -1,191 +0,0 @@
-Apache License
-Version 2.0, January 2004
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and
-distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright
-owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities
-that control, are controlled by, or are under common control with that entity.
-For the purposes of this definition, "control" means (i) the power, direct or
-indirect, to cause the direction or management of such entity, whether by
-contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
-outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising
-permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including
-but not limited to software source code, documentation source, and configuration
-files.
-
-"Object" form shall mean any form resulting from mechanical transformation or
-translation of a Source form, including but not limited to compiled object code,
-generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made
-available under the License, as indicated by a copyright notice that is included
-in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that
-is based on (or derived from) the Work and for which the editorial revisions,
-annotations, elaborations, or other modifications represent, as a whole, an
-original work of authorship. For the purposes of this License, Derivative Works
-shall not include works that remain separable from, or merely link (or bind by
-name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version
-of the Work and any modifications or additions to that Work or Derivative Works
-thereof, that is intentionally submitted to Licensor for inclusion in the Work
-by the copyright owner or by an individual or Legal Entity authorized to submit
-on behalf of the copyright owner. For the purposes of this definition,
-"submitted" means any form of electronic, verbal, or written communication sent
-to the Licensor or its representatives, including but not limited to
-communication on electronic mailing lists, source code control systems, and
-issue tracking systems that are managed by, or on behalf of, the Licensor for
-the purpose of discussing and improving the Work, but excluding communication
-that is conspicuously marked or otherwise designated in writing by the copyright
-owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
-of whom a Contribution has been received by Licensor and subsequently
-incorporated within the Work.
-
-2. Grant of Copyright License.
-
-Subject to the terms and conditions of this License, each Contributor hereby
-grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
-irrevocable copyright license to reproduce, prepare Derivative Works of,
-publicly display, publicly perform, sublicense, and distribute the Work and such
-Derivative Works in Source or Object form.
-
-3. Grant of Patent License.
-
-Subject to the terms and conditions of this License, each Contributor hereby
-grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
-irrevocable (except as stated in this section) patent license to make, have
-made, use, offer to sell, sell, import, and otherwise transfer the Work, where
-such license applies only to those patent claims licensable by such Contributor
-that are necessarily infringed by their Contribution(s) alone or by combination
-of their Contribution(s) with the Work to which such Contribution(s) was
-submitted. If You institute patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Work or a
-Contribution incorporated within the Work constitutes direct or contributory
-patent infringement, then any patent licenses granted to You under this License
-for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution.
-
-You may reproduce and distribute copies of the Work or Derivative Works thereof
-in any medium, with or without modifications, and in Source or Object form,
-provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of
-this License; and
-You must cause any modified files to carry prominent notices stating that You
-changed the files; and
-You must retain, in the Source form of any Derivative Works that You distribute,
-all copyright, patent, trademark, and attribution notices from the Source form
-of the Work, excluding those notices that do not pertain to any part of the
-Derivative Works; and
-If the Work includes a "NOTICE" text file as part of its distribution, then any
-Derivative Works that You distribute must include a readable copy of the
-attribution notices contained within such NOTICE file, excluding those notices
-that do not pertain to any part of the Derivative Works, in at least one of the
-following places: within a NOTICE text file distributed as part of the
-Derivative Works; within the Source form or documentation, if provided along
-with the Derivative Works; or, within a display generated by the Derivative
-Works, if and wherever such third-party notices normally appear. The contents of
-the NOTICE file are for informational purposes only and do not modify the
-License. You may add Your own attribution notices within Derivative Works that
-You distribute, alongside or as an addendum to the NOTICE text from the Work,
-provided that such additional attribution notices cannot be construed as
-modifying the License.
-You may add Your own copyright statement to Your modifications and may provide
-additional or different license terms and conditions for use, reproduction, or
-distribution of Your modifications, or for any such Derivative Works as a whole,
-provided Your use, reproduction, and distribution of the Work otherwise complies
-with the conditions stated in this License.
-
-5. Submission of Contributions.
-
-Unless You explicitly state otherwise, any Contribution intentionally submitted
-for inclusion in the Work by You to the Licensor shall be under the terms and
-conditions of this License, without any additional terms or conditions.
-Notwithstanding the above, nothing herein shall supersede or modify the terms of
-any separate license agreement you may have executed with Licensor regarding
-such Contributions.
-
-6. Trademarks.
-
-This License does not grant permission to use the trade names, trademarks,
-service marks, or product names of the Licensor, except as required for
-reasonable and customary use in describing the origin of the Work and
-reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty.
-
-Unless required by applicable law or agreed to in writing, Licensor provides the
-Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
-including, without limitation, any warranties or conditions of TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
-solely responsible for determining the appropriateness of using or
-redistributing the Work and assume any risks associated with Your exercise of
-permissions under this License.
-
-8. Limitation of Liability.
-
-In no event and under no legal theory, whether in tort (including negligence),
-contract, or otherwise, unless required by applicable law (such as deliberate
-and grossly negligent acts) or agreed to in writing, shall any Contributor be
-liable to You for damages, including any direct, indirect, special, incidental,
-or consequential damages of any character arising as a result of this License or
-out of the use or inability to use the Work (including but not limited to
-damages for loss of goodwill, work stoppage, computer failure or malfunction, or
-any and all other commercial damages or losses), even if such Contributor has
-been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability.
-
-While redistributing the Work or Derivative Works thereof, You may choose to
-offer, and charge a fee for, acceptance of support, warranty, indemnity, or
-other liability obligations and/or rights consistent with this License. However,
-in accepting such obligations, You may act only on Your own behalf and on Your
-sole responsibility, not on behalf of any other Contributor, and only if You
-agree to indemnify, defend, and hold each Contributor harmless for any liability
-incurred by, or claims asserted against, such Contributor by reason of your
-accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work
-
-To apply the Apache License to your work, attach the following boilerplate
-notice, with the fields enclosed by brackets "[]" replaced with your own
-identifying information. (Don't include the brackets!) The text should be
-enclosed in the appropriate comment syntax for the file format. We also
-recommend that a file or class name and description of purpose be included on
-the same "printed page" as the copyright notice for easier identification within
-third-party archives.
-
- Copyright 2014 Unknwon
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/vendor/github.com/go-ini/ini/error.go b/vendor/github.com/go-ini/ini/error.go
deleted file mode 100644
index 80afe743..00000000
--- a/vendor/github.com/go-ini/ini/error.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2016 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "fmt"
-)
-
-type ErrDelimiterNotFound struct {
- Line string
-}
-
-func IsErrDelimiterNotFound(err error) bool {
- _, ok := err.(ErrDelimiterNotFound)
- return ok
-}
-
-func (err ErrDelimiterNotFound) Error() string {
- return fmt.Sprintf("key-value delimiter not found: %s", err.Line)
-}
diff --git a/vendor/github.com/go-ini/ini/file.go b/vendor/github.com/go-ini/ini/file.go
deleted file mode 100644
index 1a3186b9..00000000
--- a/vendor/github.com/go-ini/ini/file.go
+++ /dev/null
@@ -1,414 +0,0 @@
-// Copyright 2017 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "bytes"
- "errors"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "strings"
- "sync"
-)
-
-// File represents a combination of a or more INI file(s) in memory.
-type File struct {
- options LoadOptions
- dataSources []dataSource
-
- // Should make things safe, but sometimes doesn't matter.
- BlockMode bool
- lock sync.RWMutex
-
- // To keep data in order.
- sectionList []string
- // Actual data is stored here.
- sections map[string]*Section
-
- NameMapper
- ValueMapper
-}
-
-// newFile initializes File object with given data sources.
-func newFile(dataSources []dataSource, opts LoadOptions) *File {
- return &File{
- BlockMode: true,
- dataSources: dataSources,
- sections: make(map[string]*Section),
- sectionList: make([]string, 0, 10),
- options: opts,
- }
-}
-
-// Empty returns an empty file object.
-func Empty() *File {
- // Ignore error here, we sure our data is good.
- f, _ := Load([]byte(""))
- return f
-}
-
-// NewSection creates a new section.
-func (f *File) NewSection(name string) (*Section, error) {
- if len(name) == 0 {
- return nil, errors.New("error creating new section: empty section name")
- } else if f.options.Insensitive && name != DEFAULT_SECTION {
- name = strings.ToLower(name)
- }
-
- if f.BlockMode {
- f.lock.Lock()
- defer f.lock.Unlock()
- }
-
- if inSlice(name, f.sectionList) {
- return f.sections[name], nil
- }
-
- f.sectionList = append(f.sectionList, name)
- f.sections[name] = newSection(f, name)
- return f.sections[name], nil
-}
-
-// NewRawSection creates a new section with an unparseable body.
-func (f *File) NewRawSection(name, body string) (*Section, error) {
- section, err := f.NewSection(name)
- if err != nil {
- return nil, err
- }
-
- section.isRawSection = true
- section.rawBody = body
- return section, nil
-}
-
-// NewSections creates a list of sections.
-func (f *File) NewSections(names ...string) (err error) {
- for _, name := range names {
- if _, err = f.NewSection(name); err != nil {
- return err
- }
- }
- return nil
-}
-
-// GetSection returns section by given name.
-func (f *File) GetSection(name string) (*Section, error) {
- if len(name) == 0 {
- name = DEFAULT_SECTION
- }
- if f.options.Insensitive {
- name = strings.ToLower(name)
- }
-
- if f.BlockMode {
- f.lock.RLock()
- defer f.lock.RUnlock()
- }
-
- sec := f.sections[name]
- if sec == nil {
- return nil, fmt.Errorf("section '%s' does not exist", name)
- }
- return sec, nil
-}
-
-// Section assumes named section exists and returns a zero-value when not.
-func (f *File) Section(name string) *Section {
- sec, err := f.GetSection(name)
- if err != nil {
- // Note: It's OK here because the only possible error is empty section name,
- // but if it's empty, this piece of code won't be executed.
- sec, _ = f.NewSection(name)
- return sec
- }
- return sec
-}
-
-// Section returns list of Section.
-func (f *File) Sections() []*Section {
- if f.BlockMode {
- f.lock.RLock()
- defer f.lock.RUnlock()
- }
-
- sections := make([]*Section, len(f.sectionList))
- for i, name := range f.sectionList {
- sections[i] = f.sections[name]
- }
- return sections
-}
-
-// ChildSections returns a list of child sections of given section name.
-func (f *File) ChildSections(name string) []*Section {
- return f.Section(name).ChildSections()
-}
-
-// SectionStrings returns list of section names.
-func (f *File) SectionStrings() []string {
- list := make([]string, len(f.sectionList))
- copy(list, f.sectionList)
- return list
-}
-
-// DeleteSection deletes a section.
-func (f *File) DeleteSection(name string) {
- if f.BlockMode {
- f.lock.Lock()
- defer f.lock.Unlock()
- }
-
- if len(name) == 0 {
- name = DEFAULT_SECTION
- }
-
- for i, s := range f.sectionList {
- if s == name {
- f.sectionList = append(f.sectionList[:i], f.sectionList[i+1:]...)
- delete(f.sections, name)
- return
- }
- }
-}
-
-func (f *File) reload(s dataSource) error {
- r, err := s.ReadCloser()
- if err != nil {
- return err
- }
- defer r.Close()
-
- return f.parse(r)
-}
-
-// Reload reloads and parses all data sources.
-func (f *File) Reload() (err error) {
- for _, s := range f.dataSources {
- if err = f.reload(s); err != nil {
- // In loose mode, we create an empty default section for nonexistent files.
- if os.IsNotExist(err) && f.options.Loose {
- f.parse(bytes.NewBuffer(nil))
- continue
- }
- return err
- }
- }
- return nil
-}
-
-// Append appends one or more data sources and reloads automatically.
-func (f *File) Append(source interface{}, others ...interface{}) error {
- ds, err := parseDataSource(source)
- if err != nil {
- return err
- }
- f.dataSources = append(f.dataSources, ds)
- for _, s := range others {
- ds, err = parseDataSource(s)
- if err != nil {
- return err
- }
- f.dataSources = append(f.dataSources, ds)
- }
- return f.Reload()
-}
-
-func (f *File) writeToBuffer(indent string) (*bytes.Buffer, error) {
- equalSign := "="
- if PrettyFormat || PrettyEqual {
- equalSign = " = "
- }
-
- // Use buffer to make sure target is safe until finish encoding.
- buf := bytes.NewBuffer(nil)
- for i, sname := range f.sectionList {
- sec := f.Section(sname)
- if len(sec.Comment) > 0 {
- // Support multiline comments
- lines := strings.Split(sec.Comment, LineBreak)
- for i := range lines {
- if lines[i][0] != '#' && lines[i][0] != ';' {
- lines[i] = "; " + lines[i]
- } else {
- lines[i] = lines[i][:1] + " " + strings.TrimSpace(lines[i][1:])
- }
-
- if _, err := buf.WriteString(lines[i] + LineBreak); err != nil {
- return nil, err
- }
- }
- }
-
- if i > 0 || DefaultHeader {
- if _, err := buf.WriteString("[" + sname + "]" + LineBreak); err != nil {
- return nil, err
- }
- } else {
- // Write nothing if default section is empty
- if len(sec.keyList) == 0 {
- continue
- }
- }
-
- if sec.isRawSection {
- if _, err := buf.WriteString(sec.rawBody); err != nil {
- return nil, err
- }
-
- if PrettySection {
- // Put a line between sections
- if _, err := buf.WriteString(LineBreak); err != nil {
- return nil, err
- }
- }
- continue
- }
-
- // Count and generate alignment length and buffer spaces using the
- // longest key. Keys may be modifed if they contain certain characters so
- // we need to take that into account in our calculation.
- alignLength := 0
- if PrettyFormat {
- for _, kname := range sec.keyList {
- keyLength := len(kname)
- // First case will surround key by ` and second by """
- if strings.ContainsAny(kname, "\"=:") {
- keyLength += 2
- } else if strings.Contains(kname, "`") {
- keyLength += 6
- }
-
- if keyLength > alignLength {
- alignLength = keyLength
- }
- }
- }
- alignSpaces := bytes.Repeat([]byte(" "), alignLength)
-
- KEY_LIST:
- for _, kname := range sec.keyList {
- key := sec.Key(kname)
- if len(key.Comment) > 0 {
- if len(indent) > 0 && sname != DEFAULT_SECTION {
- buf.WriteString(indent)
- }
-
- // Support multiline comments
- lines := strings.Split(key.Comment, LineBreak)
- for i := range lines {
- if lines[i][0] != '#' && lines[i][0] != ';' {
- lines[i] = "; " + lines[i]
- } else {
- lines[i] = lines[i][:1] + " " + strings.TrimSpace(lines[i][1:])
- }
-
- if _, err := buf.WriteString(lines[i] + LineBreak); err != nil {
- return nil, err
- }
- }
- }
-
- if len(indent) > 0 && sname != DEFAULT_SECTION {
- buf.WriteString(indent)
- }
-
- switch {
- case key.isAutoIncrement:
- kname = "-"
- case strings.ContainsAny(kname, "\"=:"):
- kname = "`" + kname + "`"
- case strings.Contains(kname, "`"):
- kname = `"""` + kname + `"""`
- }
-
- for _, val := range key.ValueWithShadows() {
- if _, err := buf.WriteString(kname); err != nil {
- return nil, err
- }
-
- if key.isBooleanType {
- if kname != sec.keyList[len(sec.keyList)-1] {
- buf.WriteString(LineBreak)
- }
- continue KEY_LIST
- }
-
- // Write out alignment spaces before "=" sign
- if PrettyFormat {
- buf.Write(alignSpaces[:alignLength-len(kname)])
- }
-
- // In case key value contains "\n", "`", "\"", "#" or ";"
- if strings.ContainsAny(val, "\n`") {
- val = `"""` + val + `"""`
- } else if !f.options.IgnoreInlineComment && strings.ContainsAny(val, "#;") {
- val = "`" + val + "`"
- }
- if _, err := buf.WriteString(equalSign + val + LineBreak); err != nil {
- return nil, err
- }
- }
-
- for _, val := range key.nestedValues {
- if _, err := buf.WriteString(indent + " " + val + LineBreak); err != nil {
- return nil, err
- }
- }
- }
-
- if PrettySection {
- // Put a line between sections
- if _, err := buf.WriteString(LineBreak); err != nil {
- return nil, err
- }
- }
- }
-
- return buf, nil
-}
-
-// WriteToIndent writes content into io.Writer with given indention.
-// If PrettyFormat has been set to be true,
-// it will align "=" sign with spaces under each section.
-func (f *File) WriteToIndent(w io.Writer, indent string) (int64, error) {
- buf, err := f.writeToBuffer(indent)
- if err != nil {
- return 0, err
- }
- return buf.WriteTo(w)
-}
-
-// WriteTo writes file content into io.Writer.
-func (f *File) WriteTo(w io.Writer) (int64, error) {
- return f.WriteToIndent(w, "")
-}
-
-// SaveToIndent writes content to file system with given value indention.
-func (f *File) SaveToIndent(filename, indent string) error {
- // Note: Because we are truncating with os.Create,
- // so it's safer to save to a temporary file location and rename afte done.
- buf, err := f.writeToBuffer(indent)
- if err != nil {
- return err
- }
-
- return ioutil.WriteFile(filename, buf.Bytes(), 0666)
-}
-
-// SaveTo writes content to file system.
-func (f *File) SaveTo(filename string) error {
- return f.SaveToIndent(filename, "")
-}
diff --git a/vendor/github.com/go-ini/ini/ini.go b/vendor/github.com/go-ini/ini/ini.go
deleted file mode 100644
index cb55997a..00000000
--- a/vendor/github.com/go-ini/ini/ini.go
+++ /dev/null
@@ -1,211 +0,0 @@
-// +build go1.6
-
-// Copyright 2014 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-// Package ini provides INI file read and write functionality in Go.
-package ini
-
-import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "regexp"
- "runtime"
-)
-
-const (
- // Name for default section. You can use this constant or the string literal.
- // In most of cases, an empty string is all you need to access the section.
- DEFAULT_SECTION = "DEFAULT"
-
- // Maximum allowed depth when recursively substituing variable names.
- _DEPTH_VALUES = 99
- _VERSION = "1.38.2"
-)
-
-// Version returns current package version literal.
-func Version() string {
- return _VERSION
-}
-
-var (
- // Delimiter to determine or compose a new line.
- // This variable will be changed to "\r\n" automatically on Windows
- // at package init time.
- LineBreak = "\n"
-
- // Variable regexp pattern: %(variable)s
- varPattern = regexp.MustCompile(`%\(([^\)]+)\)s`)
-
- // Indicate whether to align "=" sign with spaces to produce pretty output
- // or reduce all possible spaces for compact format.
- PrettyFormat = true
-
- // Place spaces around "=" sign even when PrettyFormat is false
- PrettyEqual = false
-
- // Explicitly write DEFAULT section header
- DefaultHeader = false
-
- // Indicate whether to put a line between sections
- PrettySection = true
-)
-
-func init() {
- if runtime.GOOS == "windows" {
- LineBreak = "\r\n"
- }
-}
-
-func inSlice(str string, s []string) bool {
- for _, v := range s {
- if str == v {
- return true
- }
- }
- return false
-}
-
-// dataSource is an interface that returns object which can be read and closed.
-type dataSource interface {
- ReadCloser() (io.ReadCloser, error)
-}
-
-// sourceFile represents an object that contains content on the local file system.
-type sourceFile struct {
- name string
-}
-
-func (s sourceFile) ReadCloser() (_ io.ReadCloser, err error) {
- return os.Open(s.name)
-}
-
-// sourceData represents an object that contains content in memory.
-type sourceData struct {
- data []byte
-}
-
-func (s *sourceData) ReadCloser() (io.ReadCloser, error) {
- return ioutil.NopCloser(bytes.NewReader(s.data)), nil
-}
-
-// sourceReadCloser represents an input stream with Close method.
-type sourceReadCloser struct {
- reader io.ReadCloser
-}
-
-func (s *sourceReadCloser) ReadCloser() (io.ReadCloser, error) {
- return s.reader, nil
-}
-
-func parseDataSource(source interface{}) (dataSource, error) {
- switch s := source.(type) {
- case string:
- return sourceFile{s}, nil
- case []byte:
- return &sourceData{s}, nil
- case io.ReadCloser:
- return &sourceReadCloser{s}, nil
- default:
- return nil, fmt.Errorf("error parsing data source: unknown type '%s'", s)
- }
-}
-
-type LoadOptions struct {
- // Loose indicates whether the parser should ignore nonexistent files or return error.
- Loose bool
- // Insensitive indicates whether the parser forces all section and key names to lowercase.
- Insensitive bool
- // IgnoreContinuation indicates whether to ignore continuation lines while parsing.
- IgnoreContinuation bool
- // IgnoreInlineComment indicates whether to ignore comments at the end of value and treat it as part of value.
- IgnoreInlineComment bool
- // SkipUnrecognizableLines indicates whether to skip unrecognizable lines that do not conform to key/value pairs.
- SkipUnrecognizableLines bool
- // AllowBooleanKeys indicates whether to allow boolean type keys or treat as value is missing.
- // This type of keys are mostly used in my.cnf.
- AllowBooleanKeys bool
- // AllowShadows indicates whether to keep track of keys with same name under same section.
- AllowShadows bool
- // AllowNestedValues indicates whether to allow AWS-like nested values.
- // Docs: http://docs.aws.amazon.com/cli/latest/topic/config-vars.html#nested-values
- AllowNestedValues bool
- // AllowPythonMultilineValues indicates whether to allow Python-like multi-line values.
- // Docs: https://docs.python.org/3/library/configparser.html#supported-ini-file-structure
- // Relevant quote: Values can also span multiple lines, as long as they are indented deeper
- // than the first line of the value.
- AllowPythonMultilineValues bool
- // SpaceBeforeInlineComment indicates whether to allow comment symbols (\# and \;) inside value.
- // Docs: https://docs.python.org/2/library/configparser.html
- // Quote: Comments may appear on their own in an otherwise empty line, or may be entered in lines holding values or section names.
- // In the latter case, they need to be preceded by a whitespace character to be recognized as a comment.
- SpaceBeforeInlineComment bool
- // UnescapeValueDoubleQuotes indicates whether to unescape double quotes inside value to regular format
- // when value is surrounded by double quotes, e.g. key="a \"value\"" => key=a "value"
- UnescapeValueDoubleQuotes bool
- // UnescapeValueCommentSymbols indicates to unescape comment symbols (\# and \;) inside value to regular format
- // when value is NOT surrounded by any quotes.
- // Note: UNSTABLE, behavior might change to only unescape inside double quotes but may noy necessary at all.
- UnescapeValueCommentSymbols bool
- // UnparseableSections stores a list of blocks that are allowed with raw content which do not otherwise
- // conform to key/value pairs. Specify the names of those blocks here.
- UnparseableSections []string
-}
-
-func LoadSources(opts LoadOptions, source interface{}, others ...interface{}) (_ *File, err error) {
- sources := make([]dataSource, len(others)+1)
- sources[0], err = parseDataSource(source)
- if err != nil {
- return nil, err
- }
- for i := range others {
- sources[i+1], err = parseDataSource(others[i])
- if err != nil {
- return nil, err
- }
- }
- f := newFile(sources, opts)
- if err = f.Reload(); err != nil {
- return nil, err
- }
- return f, nil
-}
-
-// Load loads and parses from INI data sources.
-// Arguments can be mixed of file name with string type, or raw data in []byte.
-// It will return error if list contains nonexistent files.
-func Load(source interface{}, others ...interface{}) (*File, error) {
- return LoadSources(LoadOptions{}, source, others...)
-}
-
-// LooseLoad has exactly same functionality as Load function
-// except it ignores nonexistent files instead of returning error.
-func LooseLoad(source interface{}, others ...interface{}) (*File, error) {
- return LoadSources(LoadOptions{Loose: true}, source, others...)
-}
-
-// InsensitiveLoad has exactly same functionality as Load function
-// except it forces all section and key names to be lowercased.
-func InsensitiveLoad(source interface{}, others ...interface{}) (*File, error) {
- return LoadSources(LoadOptions{Insensitive: true}, source, others...)
-}
-
-// ShadowLoad has exactly same functionality as Load function
-// except it allows have shadow keys.
-func ShadowLoad(source interface{}, others ...interface{}) (*File, error) {
- return LoadSources(LoadOptions{AllowShadows: true}, source, others...)
-}
diff --git a/vendor/github.com/go-ini/ini/key.go b/vendor/github.com/go-ini/ini/key.go
deleted file mode 100644
index 7c8566a1..00000000
--- a/vendor/github.com/go-ini/ini/key.go
+++ /dev/null
@@ -1,751 +0,0 @@
-// Copyright 2014 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "bytes"
- "errors"
- "fmt"
- "strconv"
- "strings"
- "time"
-)
-
-// Key represents a key under a section.
-type Key struct {
- s *Section
- Comment string
- name string
- value string
- isAutoIncrement bool
- isBooleanType bool
-
- isShadow bool
- shadows []*Key
-
- nestedValues []string
-}
-
-// newKey simply return a key object with given values.
-func newKey(s *Section, name, val string) *Key {
- return &Key{
- s: s,
- name: name,
- value: val,
- }
-}
-
-func (k *Key) addShadow(val string) error {
- if k.isShadow {
- return errors.New("cannot add shadow to another shadow key")
- } else if k.isAutoIncrement || k.isBooleanType {
- return errors.New("cannot add shadow to auto-increment or boolean key")
- }
-
- shadow := newKey(k.s, k.name, val)
- shadow.isShadow = true
- k.shadows = append(k.shadows, shadow)
- return nil
-}
-
-// AddShadow adds a new shadow key to itself.
-func (k *Key) AddShadow(val string) error {
- if !k.s.f.options.AllowShadows {
- return errors.New("shadow key is not allowed")
- }
- return k.addShadow(val)
-}
-
-func (k *Key) addNestedValue(val string) error {
- if k.isAutoIncrement || k.isBooleanType {
- return errors.New("cannot add nested value to auto-increment or boolean key")
- }
-
- k.nestedValues = append(k.nestedValues, val)
- return nil
-}
-
-func (k *Key) AddNestedValue(val string) error {
- if !k.s.f.options.AllowNestedValues {
- return errors.New("nested value is not allowed")
- }
- return k.addNestedValue(val)
-}
-
-// ValueMapper represents a mapping function for values, e.g. os.ExpandEnv
-type ValueMapper func(string) string
-
-// Name returns name of key.
-func (k *Key) Name() string {
- return k.name
-}
-
-// Value returns raw value of key for performance purpose.
-func (k *Key) Value() string {
- return k.value
-}
-
-// ValueWithShadows returns raw values of key and its shadows if any.
-func (k *Key) ValueWithShadows() []string {
- if len(k.shadows) == 0 {
- return []string{k.value}
- }
- vals := make([]string, len(k.shadows)+1)
- vals[0] = k.value
- for i := range k.shadows {
- vals[i+1] = k.shadows[i].value
- }
- return vals
-}
-
-// NestedValues returns nested values stored in the key.
-// It is possible returned value is nil if no nested values stored in the key.
-func (k *Key) NestedValues() []string {
- return k.nestedValues
-}
-
-// transformValue takes a raw value and transforms to its final string.
-func (k *Key) transformValue(val string) string {
- if k.s.f.ValueMapper != nil {
- val = k.s.f.ValueMapper(val)
- }
-
- // Fail-fast if no indicate char found for recursive value
- if !strings.Contains(val, "%") {
- return val
- }
- for i := 0; i < _DEPTH_VALUES; i++ {
- vr := varPattern.FindString(val)
- if len(vr) == 0 {
- break
- }
-
- // Take off leading '%(' and trailing ')s'.
- noption := strings.TrimLeft(vr, "%(")
- noption = strings.TrimRight(noption, ")s")
-
- // Search in the same section.
- nk, err := k.s.GetKey(noption)
- if err != nil || k == nk {
- // Search again in default section.
- nk, _ = k.s.f.Section("").GetKey(noption)
- }
-
- // Substitute by new value and take off leading '%(' and trailing ')s'.
- val = strings.Replace(val, vr, nk.value, -1)
- }
- return val
-}
-
-// String returns string representation of value.
-func (k *Key) String() string {
- return k.transformValue(k.value)
-}
-
-// Validate accepts a validate function which can
-// return modifed result as key value.
-func (k *Key) Validate(fn func(string) string) string {
- return fn(k.String())
-}
-
-// parseBool returns the boolean value represented by the string.
-//
-// It accepts 1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On,
-// 0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off.
-// Any other value returns an error.
-func parseBool(str string) (value bool, err error) {
- switch str {
- case "1", "t", "T", "true", "TRUE", "True", "YES", "yes", "Yes", "y", "ON", "on", "On":
- return true, nil
- case "0", "f", "F", "false", "FALSE", "False", "NO", "no", "No", "n", "OFF", "off", "Off":
- return false, nil
- }
- return false, fmt.Errorf("parsing \"%s\": invalid syntax", str)
-}
-
-// Bool returns bool type value.
-func (k *Key) Bool() (bool, error) {
- return parseBool(k.String())
-}
-
-// Float64 returns float64 type value.
-func (k *Key) Float64() (float64, error) {
- return strconv.ParseFloat(k.String(), 64)
-}
-
-// Int returns int type value.
-func (k *Key) Int() (int, error) {
- return strconv.Atoi(k.String())
-}
-
-// Int64 returns int64 type value.
-func (k *Key) Int64() (int64, error) {
- return strconv.ParseInt(k.String(), 10, 64)
-}
-
-// Uint returns uint type valued.
-func (k *Key) Uint() (uint, error) {
- u, e := strconv.ParseUint(k.String(), 10, 64)
- return uint(u), e
-}
-
-// Uint64 returns uint64 type value.
-func (k *Key) Uint64() (uint64, error) {
- return strconv.ParseUint(k.String(), 10, 64)
-}
-
-// Duration returns time.Duration type value.
-func (k *Key) Duration() (time.Duration, error) {
- return time.ParseDuration(k.String())
-}
-
-// TimeFormat parses with given format and returns time.Time type value.
-func (k *Key) TimeFormat(format string) (time.Time, error) {
- return time.Parse(format, k.String())
-}
-
-// Time parses with RFC3339 format and returns time.Time type value.
-func (k *Key) Time() (time.Time, error) {
- return k.TimeFormat(time.RFC3339)
-}
-
-// MustString returns default value if key value is empty.
-func (k *Key) MustString(defaultVal string) string {
- val := k.String()
- if len(val) == 0 {
- k.value = defaultVal
- return defaultVal
- }
- return val
-}
-
-// MustBool always returns value without error,
-// it returns false if error occurs.
-func (k *Key) MustBool(defaultVal ...bool) bool {
- val, err := k.Bool()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatBool(defaultVal[0])
- return defaultVal[0]
- }
- return val
-}
-
-// MustFloat64 always returns value without error,
-// it returns 0.0 if error occurs.
-func (k *Key) MustFloat64(defaultVal ...float64) float64 {
- val, err := k.Float64()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatFloat(defaultVal[0], 'f', -1, 64)
- return defaultVal[0]
- }
- return val
-}
-
-// MustInt always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustInt(defaultVal ...int) int {
- val, err := k.Int()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatInt(int64(defaultVal[0]), 10)
- return defaultVal[0]
- }
- return val
-}
-
-// MustInt64 always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustInt64(defaultVal ...int64) int64 {
- val, err := k.Int64()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatInt(defaultVal[0], 10)
- return defaultVal[0]
- }
- return val
-}
-
-// MustUint always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustUint(defaultVal ...uint) uint {
- val, err := k.Uint()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatUint(uint64(defaultVal[0]), 10)
- return defaultVal[0]
- }
- return val
-}
-
-// MustUint64 always returns value without error,
-// it returns 0 if error occurs.
-func (k *Key) MustUint64(defaultVal ...uint64) uint64 {
- val, err := k.Uint64()
- if len(defaultVal) > 0 && err != nil {
- k.value = strconv.FormatUint(defaultVal[0], 10)
- return defaultVal[0]
- }
- return val
-}
-
-// MustDuration always returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustDuration(defaultVal ...time.Duration) time.Duration {
- val, err := k.Duration()
- if len(defaultVal) > 0 && err != nil {
- k.value = defaultVal[0].String()
- return defaultVal[0]
- }
- return val
-}
-
-// MustTimeFormat always parses with given format and returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustTimeFormat(format string, defaultVal ...time.Time) time.Time {
- val, err := k.TimeFormat(format)
- if len(defaultVal) > 0 && err != nil {
- k.value = defaultVal[0].Format(format)
- return defaultVal[0]
- }
- return val
-}
-
-// MustTime always parses with RFC3339 format and returns value without error,
-// it returns zero value if error occurs.
-func (k *Key) MustTime(defaultVal ...time.Time) time.Time {
- return k.MustTimeFormat(time.RFC3339, defaultVal...)
-}
-
-// In always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) In(defaultVal string, candidates []string) string {
- val := k.String()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InFloat64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InFloat64(defaultVal float64, candidates []float64) float64 {
- val := k.MustFloat64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InInt always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InInt(defaultVal int, candidates []int) int {
- val := k.MustInt()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InInt64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InInt64(defaultVal int64, candidates []int64) int64 {
- val := k.MustInt64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InUint always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InUint(defaultVal uint, candidates []uint) uint {
- val := k.MustUint()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InUint64 always returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InUint64(defaultVal uint64, candidates []uint64) uint64 {
- val := k.MustUint64()
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InTimeFormat always parses with given format and returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InTimeFormat(format string, defaultVal time.Time, candidates []time.Time) time.Time {
- val := k.MustTimeFormat(format)
- for _, cand := range candidates {
- if val == cand {
- return val
- }
- }
- return defaultVal
-}
-
-// InTime always parses with RFC3339 format and returns value without error,
-// it returns default value if error occurs or doesn't fit into candidates.
-func (k *Key) InTime(defaultVal time.Time, candidates []time.Time) time.Time {
- return k.InTimeFormat(time.RFC3339, defaultVal, candidates)
-}
-
-// RangeFloat64 checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeFloat64(defaultVal, min, max float64) float64 {
- val := k.MustFloat64()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeInt checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeInt(defaultVal, min, max int) int {
- val := k.MustInt()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeInt64 checks if value is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeInt64(defaultVal, min, max int64) int64 {
- val := k.MustInt64()
- if val < min || val > max {
- return defaultVal
- }
- return val
-}
-
-// RangeTimeFormat checks if value with given format is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeTimeFormat(format string, defaultVal, min, max time.Time) time.Time {
- val := k.MustTimeFormat(format)
- if val.Unix() < min.Unix() || val.Unix() > max.Unix() {
- return defaultVal
- }
- return val
-}
-
-// RangeTime checks if value with RFC3339 format is in given range inclusively,
-// and returns default value if it's not.
-func (k *Key) RangeTime(defaultVal, min, max time.Time) time.Time {
- return k.RangeTimeFormat(time.RFC3339, defaultVal, min, max)
-}
-
-// Strings returns list of string divided by given delimiter.
-func (k *Key) Strings(delim string) []string {
- str := k.String()
- if len(str) == 0 {
- return []string{}
- }
-
- runes := []rune(str)
- vals := make([]string, 0, 2)
- var buf bytes.Buffer
- escape := false
- idx := 0
- for {
- if escape {
- escape = false
- if runes[idx] != '\\' && !strings.HasPrefix(string(runes[idx:]), delim) {
- buf.WriteRune('\\')
- }
- buf.WriteRune(runes[idx])
- } else {
- if runes[idx] == '\\' {
- escape = true
- } else if strings.HasPrefix(string(runes[idx:]), delim) {
- idx += len(delim) - 1
- vals = append(vals, strings.TrimSpace(buf.String()))
- buf.Reset()
- } else {
- buf.WriteRune(runes[idx])
- }
- }
- idx += 1
- if idx == len(runes) {
- break
- }
- }
-
- if buf.Len() > 0 {
- vals = append(vals, strings.TrimSpace(buf.String()))
- }
-
- return vals
-}
-
-// StringsWithShadows returns list of string divided by given delimiter.
-// Shadows will also be appended if any.
-func (k *Key) StringsWithShadows(delim string) []string {
- vals := k.ValueWithShadows()
- results := make([]string, 0, len(vals)*2)
- for i := range vals {
- if len(vals) == 0 {
- continue
- }
-
- results = append(results, strings.Split(vals[i], delim)...)
- }
-
- for i := range results {
- results[i] = k.transformValue(strings.TrimSpace(results[i]))
- }
- return results
-}
-
-// Float64s returns list of float64 divided by given delimiter. Any invalid input will be treated as zero value.
-func (k *Key) Float64s(delim string) []float64 {
- vals, _ := k.parseFloat64s(k.Strings(delim), true, false)
- return vals
-}
-
-// Ints returns list of int divided by given delimiter. Any invalid input will be treated as zero value.
-func (k *Key) Ints(delim string) []int {
- vals, _ := k.parseInts(k.Strings(delim), true, false)
- return vals
-}
-
-// Int64s returns list of int64 divided by given delimiter. Any invalid input will be treated as zero value.
-func (k *Key) Int64s(delim string) []int64 {
- vals, _ := k.parseInt64s(k.Strings(delim), true, false)
- return vals
-}
-
-// Uints returns list of uint divided by given delimiter. Any invalid input will be treated as zero value.
-func (k *Key) Uints(delim string) []uint {
- vals, _ := k.parseUints(k.Strings(delim), true, false)
- return vals
-}
-
-// Uint64s returns list of uint64 divided by given delimiter. Any invalid input will be treated as zero value.
-func (k *Key) Uint64s(delim string) []uint64 {
- vals, _ := k.parseUint64s(k.Strings(delim), true, false)
- return vals
-}
-
-// TimesFormat parses with given format and returns list of time.Time divided by given delimiter.
-// Any invalid input will be treated as zero value (0001-01-01 00:00:00 +0000 UTC).
-func (k *Key) TimesFormat(format, delim string) []time.Time {
- vals, _ := k.parseTimesFormat(format, k.Strings(delim), true, false)
- return vals
-}
-
-// Times parses with RFC3339 format and returns list of time.Time divided by given delimiter.
-// Any invalid input will be treated as zero value (0001-01-01 00:00:00 +0000 UTC).
-func (k *Key) Times(delim string) []time.Time {
- return k.TimesFormat(time.RFC3339, delim)
-}
-
-// ValidFloat64s returns list of float64 divided by given delimiter. If some value is not float, then
-// it will not be included to result list.
-func (k *Key) ValidFloat64s(delim string) []float64 {
- vals, _ := k.parseFloat64s(k.Strings(delim), false, false)
- return vals
-}
-
-// ValidInts returns list of int divided by given delimiter. If some value is not integer, then it will
-// not be included to result list.
-func (k *Key) ValidInts(delim string) []int {
- vals, _ := k.parseInts(k.Strings(delim), false, false)
- return vals
-}
-
-// ValidInt64s returns list of int64 divided by given delimiter. If some value is not 64-bit integer,
-// then it will not be included to result list.
-func (k *Key) ValidInt64s(delim string) []int64 {
- vals, _ := k.parseInt64s(k.Strings(delim), false, false)
- return vals
-}
-
-// ValidUints returns list of uint divided by given delimiter. If some value is not unsigned integer,
-// then it will not be included to result list.
-func (k *Key) ValidUints(delim string) []uint {
- vals, _ := k.parseUints(k.Strings(delim), false, false)
- return vals
-}
-
-// ValidUint64s returns list of uint64 divided by given delimiter. If some value is not 64-bit unsigned
-// integer, then it will not be included to result list.
-func (k *Key) ValidUint64s(delim string) []uint64 {
- vals, _ := k.parseUint64s(k.Strings(delim), false, false)
- return vals
-}
-
-// ValidTimesFormat parses with given format and returns list of time.Time divided by given delimiter.
-func (k *Key) ValidTimesFormat(format, delim string) []time.Time {
- vals, _ := k.parseTimesFormat(format, k.Strings(delim), false, false)
- return vals
-}
-
-// ValidTimes parses with RFC3339 format and returns list of time.Time divided by given delimiter.
-func (k *Key) ValidTimes(delim string) []time.Time {
- return k.ValidTimesFormat(time.RFC3339, delim)
-}
-
-// StrictFloat64s returns list of float64 divided by given delimiter or error on first invalid input.
-func (k *Key) StrictFloat64s(delim string) ([]float64, error) {
- return k.parseFloat64s(k.Strings(delim), false, true)
-}
-
-// StrictInts returns list of int divided by given delimiter or error on first invalid input.
-func (k *Key) StrictInts(delim string) ([]int, error) {
- return k.parseInts(k.Strings(delim), false, true)
-}
-
-// StrictInt64s returns list of int64 divided by given delimiter or error on first invalid input.
-func (k *Key) StrictInt64s(delim string) ([]int64, error) {
- return k.parseInt64s(k.Strings(delim), false, true)
-}
-
-// StrictUints returns list of uint divided by given delimiter or error on first invalid input.
-func (k *Key) StrictUints(delim string) ([]uint, error) {
- return k.parseUints(k.Strings(delim), false, true)
-}
-
-// StrictUint64s returns list of uint64 divided by given delimiter or error on first invalid input.
-func (k *Key) StrictUint64s(delim string) ([]uint64, error) {
- return k.parseUint64s(k.Strings(delim), false, true)
-}
-
-// StrictTimesFormat parses with given format and returns list of time.Time divided by given delimiter
-// or error on first invalid input.
-func (k *Key) StrictTimesFormat(format, delim string) ([]time.Time, error) {
- return k.parseTimesFormat(format, k.Strings(delim), false, true)
-}
-
-// StrictTimes parses with RFC3339 format and returns list of time.Time divided by given delimiter
-// or error on first invalid input.
-func (k *Key) StrictTimes(delim string) ([]time.Time, error) {
- return k.StrictTimesFormat(time.RFC3339, delim)
-}
-
-// parseFloat64s transforms strings to float64s.
-func (k *Key) parseFloat64s(strs []string, addInvalid, returnOnInvalid bool) ([]float64, error) {
- vals := make([]float64, 0, len(strs))
- for _, str := range strs {
- val, err := strconv.ParseFloat(str, 64)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, val)
- }
- }
- return vals, nil
-}
-
-// parseInts transforms strings to ints.
-func (k *Key) parseInts(strs []string, addInvalid, returnOnInvalid bool) ([]int, error) {
- vals := make([]int, 0, len(strs))
- for _, str := range strs {
- val, err := strconv.Atoi(str)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, val)
- }
- }
- return vals, nil
-}
-
-// parseInt64s transforms strings to int64s.
-func (k *Key) parseInt64s(strs []string, addInvalid, returnOnInvalid bool) ([]int64, error) {
- vals := make([]int64, 0, len(strs))
- for _, str := range strs {
- val, err := strconv.ParseInt(str, 10, 64)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, val)
- }
- }
- return vals, nil
-}
-
-// parseUints transforms strings to uints.
-func (k *Key) parseUints(strs []string, addInvalid, returnOnInvalid bool) ([]uint, error) {
- vals := make([]uint, 0, len(strs))
- for _, str := range strs {
- val, err := strconv.ParseUint(str, 10, 0)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, uint(val))
- }
- }
- return vals, nil
-}
-
-// parseUint64s transforms strings to uint64s.
-func (k *Key) parseUint64s(strs []string, addInvalid, returnOnInvalid bool) ([]uint64, error) {
- vals := make([]uint64, 0, len(strs))
- for _, str := range strs {
- val, err := strconv.ParseUint(str, 10, 64)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, val)
- }
- }
- return vals, nil
-}
-
-// parseTimesFormat transforms strings to times in given format.
-func (k *Key) parseTimesFormat(format string, strs []string, addInvalid, returnOnInvalid bool) ([]time.Time, error) {
- vals := make([]time.Time, 0, len(strs))
- for _, str := range strs {
- val, err := time.Parse(format, str)
- if err != nil && returnOnInvalid {
- return nil, err
- }
- if err == nil || addInvalid {
- vals = append(vals, val)
- }
- }
- return vals, nil
-}
-
-// SetValue changes key value.
-func (k *Key) SetValue(v string) {
- if k.s.f.BlockMode {
- k.s.f.lock.Lock()
- defer k.s.f.lock.Unlock()
- }
-
- k.value = v
- k.s.keysHash[k.name] = v
-}
diff --git a/vendor/github.com/go-ini/ini/parser.go b/vendor/github.com/go-ini/ini/parser.go
deleted file mode 100644
index 3daf54c3..00000000
--- a/vendor/github.com/go-ini/ini/parser.go
+++ /dev/null
@@ -1,494 +0,0 @@
-// Copyright 2015 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "bufio"
- "bytes"
- "fmt"
- "io"
- "regexp"
- "strconv"
- "strings"
- "unicode"
-)
-
-var pythonMultiline = regexp.MustCompile("^(\\s+)([^\n]+)")
-
-type tokenType int
-
-const (
- _TOKEN_INVALID tokenType = iota
- _TOKEN_COMMENT
- _TOKEN_SECTION
- _TOKEN_KEY
-)
-
-type parser struct {
- buf *bufio.Reader
- isEOF bool
- count int
- comment *bytes.Buffer
-}
-
-func newParser(r io.Reader) *parser {
- return &parser{
- buf: bufio.NewReader(r),
- count: 1,
- comment: &bytes.Buffer{},
- }
-}
-
-// BOM handles header of UTF-8, UTF-16 LE and UTF-16 BE's BOM format.
-// http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding
-func (p *parser) BOM() error {
- mask, err := p.buf.Peek(2)
- if err != nil && err != io.EOF {
- return err
- } else if len(mask) < 2 {
- return nil
- }
-
- switch {
- case mask[0] == 254 && mask[1] == 255:
- fallthrough
- case mask[0] == 255 && mask[1] == 254:
- p.buf.Read(mask)
- case mask[0] == 239 && mask[1] == 187:
- mask, err := p.buf.Peek(3)
- if err != nil && err != io.EOF {
- return err
- } else if len(mask) < 3 {
- return nil
- }
- if mask[2] == 191 {
- p.buf.Read(mask)
- }
- }
- return nil
-}
-
-func (p *parser) readUntil(delim byte) ([]byte, error) {
- data, err := p.buf.ReadBytes(delim)
- if err != nil {
- if err == io.EOF {
- p.isEOF = true
- } else {
- return nil, err
- }
- }
- return data, nil
-}
-
-func cleanComment(in []byte) ([]byte, bool) {
- i := bytes.IndexAny(in, "#;")
- if i == -1 {
- return nil, false
- }
- return in[i:], true
-}
-
-func readKeyName(in []byte) (string, int, error) {
- line := string(in)
-
- // Check if key name surrounded by quotes.
- var keyQuote string
- if line[0] == '"' {
- if len(line) > 6 && string(line[0:3]) == `"""` {
- keyQuote = `"""`
- } else {
- keyQuote = `"`
- }
- } else if line[0] == '`' {
- keyQuote = "`"
- }
-
- // Get out key name
- endIdx := -1
- if len(keyQuote) > 0 {
- startIdx := len(keyQuote)
- // FIXME: fail case -> """"""name"""=value
- pos := strings.Index(line[startIdx:], keyQuote)
- if pos == -1 {
- return "", -1, fmt.Errorf("missing closing key quote: %s", line)
- }
- pos += startIdx
-
- // Find key-value delimiter
- i := strings.IndexAny(line[pos+startIdx:], "=:")
- if i < 0 {
- return "", -1, ErrDelimiterNotFound{line}
- }
- endIdx = pos + i
- return strings.TrimSpace(line[startIdx:pos]), endIdx + startIdx + 1, nil
- }
-
- endIdx = strings.IndexAny(line, "=:")
- if endIdx < 0 {
- return "", -1, ErrDelimiterNotFound{line}
- }
- return strings.TrimSpace(line[0:endIdx]), endIdx + 1, nil
-}
-
-func (p *parser) readMultilines(line, val, valQuote string) (string, error) {
- for {
- data, err := p.readUntil('\n')
- if err != nil {
- return "", err
- }
- next := string(data)
-
- pos := strings.LastIndex(next, valQuote)
- if pos > -1 {
- val += next[:pos]
-
- comment, has := cleanComment([]byte(next[pos:]))
- if has {
- p.comment.Write(bytes.TrimSpace(comment))
- }
- break
- }
- val += next
- if p.isEOF {
- return "", fmt.Errorf("missing closing key quote from '%s' to '%s'", line, next)
- }
- }
- return val, nil
-}
-
-func (p *parser) readContinuationLines(val string) (string, error) {
- for {
- data, err := p.readUntil('\n')
- if err != nil {
- return "", err
- }
- next := strings.TrimSpace(string(data))
-
- if len(next) == 0 {
- break
- }
- val += next
- if val[len(val)-1] != '\\' {
- break
- }
- val = val[:len(val)-1]
- }
- return val, nil
-}
-
-// hasSurroundedQuote check if and only if the first and last characters
-// are quotes \" or \'.
-// It returns false if any other parts also contain same kind of quotes.
-func hasSurroundedQuote(in string, quote byte) bool {
- return len(in) >= 2 && in[0] == quote && in[len(in)-1] == quote &&
- strings.IndexByte(in[1:], quote) == len(in)-2
-}
-
-func (p *parser) readValue(in []byte,
- parserBufferSize int,
- ignoreContinuation, ignoreInlineComment, unescapeValueDoubleQuotes, unescapeValueCommentSymbols, allowPythonMultilines, spaceBeforeInlineComment bool) (string, error) {
-
- line := strings.TrimLeftFunc(string(in), unicode.IsSpace)
- if len(line) == 0 {
- return "", nil
- }
-
- var valQuote string
- if len(line) > 3 && string(line[0:3]) == `"""` {
- valQuote = `"""`
- } else if line[0] == '`' {
- valQuote = "`"
- } else if unescapeValueDoubleQuotes && line[0] == '"' {
- valQuote = `"`
- }
-
- if len(valQuote) > 0 {
- startIdx := len(valQuote)
- pos := strings.LastIndex(line[startIdx:], valQuote)
- // Check for multi-line value
- if pos == -1 {
- return p.readMultilines(line, line[startIdx:], valQuote)
- }
-
- if unescapeValueDoubleQuotes && valQuote == `"` {
- return strings.Replace(line[startIdx:pos+startIdx], `\"`, `"`, -1), nil
- }
- return line[startIdx : pos+startIdx], nil
- }
-
- lastChar := line[len(line)-1]
- // Won't be able to reach here if value only contains whitespace
- line = strings.TrimSpace(line)
- trimmedLastChar := line[len(line)-1]
-
- // Check continuation lines when desired
- if !ignoreContinuation && trimmedLastChar == '\\' {
- return p.readContinuationLines(line[:len(line)-1])
- }
-
- // Check if ignore inline comment
- if !ignoreInlineComment {
- var i int
- if spaceBeforeInlineComment {
- i = strings.Index(line, " #")
- if i == -1 {
- i = strings.Index(line, " ;")
- }
-
- } else {
- i = strings.IndexAny(line, "#;")
- }
-
- if i > -1 {
- p.comment.WriteString(line[i:])
- line = strings.TrimSpace(line[:i])
- }
-
- }
-
- // Trim single and double quotes
- if hasSurroundedQuote(line, '\'') ||
- hasSurroundedQuote(line, '"') {
- line = line[1 : len(line)-1]
- } else if len(valQuote) == 0 && unescapeValueCommentSymbols {
- if strings.Contains(line, `\;`) {
- line = strings.Replace(line, `\;`, ";", -1)
- }
- if strings.Contains(line, `\#`) {
- line = strings.Replace(line, `\#`, "#", -1)
- }
- } else if allowPythonMultilines && lastChar == '\n' {
- parserBufferPeekResult, _ := p.buf.Peek(parserBufferSize)
- peekBuffer := bytes.NewBuffer(parserBufferPeekResult)
-
- identSize := -1
- val := line
-
- for {
- peekData, peekErr := peekBuffer.ReadBytes('\n')
- if peekErr != nil {
- if peekErr == io.EOF {
- return val, nil
- }
- return "", peekErr
- }
-
- peekMatches := pythonMultiline.FindStringSubmatch(string(peekData))
- if len(peekMatches) != 3 {
- return val, nil
- }
-
- currentIdentSize := len(peekMatches[1])
- // NOTE: Return if not a python-ini multi-line value.
- if currentIdentSize < 0 {
- return val, nil
- }
- identSize = currentIdentSize
-
- // NOTE: Just advance the parser reader (buffer) in-sync with the peek buffer.
- _, err := p.readUntil('\n')
- if err != nil {
- return "", err
- }
-
- val += fmt.Sprintf("\n%s", peekMatches[2])
- }
-
- // NOTE: If it was a Python multi-line value,
- // return the appended value.
- if identSize > 0 {
- return val, nil
- }
- }
-
- return line, nil
-}
-
-// parse parses data through an io.Reader.
-func (f *File) parse(reader io.Reader) (err error) {
- p := newParser(reader)
- if err = p.BOM(); err != nil {
- return fmt.Errorf("BOM: %v", err)
- }
-
- // Ignore error because default section name is never empty string.
- name := DEFAULT_SECTION
- if f.options.Insensitive {
- name = strings.ToLower(DEFAULT_SECTION)
- }
- section, _ := f.NewSection(name)
-
- // This "last" is not strictly equivalent to "previous one" if current key is not the first nested key
- var isLastValueEmpty bool
- var lastRegularKey *Key
-
- var line []byte
- var inUnparseableSection bool
-
- // NOTE: Iterate and increase `currentPeekSize` until
- // the size of the parser buffer is found.
- // TODO(unknwon): When Golang 1.10 is the lowest version supported, replace with `parserBufferSize := p.buf.Size()`.
- parserBufferSize := 0
- // NOTE: Peek 1kb at a time.
- currentPeekSize := 1024
-
- if f.options.AllowPythonMultilineValues {
- for {
- peekBytes, _ := p.buf.Peek(currentPeekSize)
- peekBytesLength := len(peekBytes)
-
- if parserBufferSize >= peekBytesLength {
- break
- }
-
- currentPeekSize *= 2
- parserBufferSize = peekBytesLength
- }
- }
-
- for !p.isEOF {
- line, err = p.readUntil('\n')
- if err != nil {
- return err
- }
-
- if f.options.AllowNestedValues &&
- isLastValueEmpty && len(line) > 0 {
- if line[0] == ' ' || line[0] == '\t' {
- lastRegularKey.addNestedValue(string(bytes.TrimSpace(line)))
- continue
- }
- }
-
- line = bytes.TrimLeftFunc(line, unicode.IsSpace)
- if len(line) == 0 {
- continue
- }
-
- // Comments
- if line[0] == '#' || line[0] == ';' {
- // Note: we do not care ending line break,
- // it is needed for adding second line,
- // so just clean it once at the end when set to value.
- p.comment.Write(line)
- continue
- }
-
- // Section
- if line[0] == '[' {
- // Read to the next ']' (TODO: support quoted strings)
- closeIdx := bytes.LastIndexByte(line, ']')
- if closeIdx == -1 {
- return fmt.Errorf("unclosed section: %s", line)
- }
-
- name := string(line[1:closeIdx])
- section, err = f.NewSection(name)
- if err != nil {
- return err
- }
-
- comment, has := cleanComment(line[closeIdx+1:])
- if has {
- p.comment.Write(comment)
- }
-
- section.Comment = strings.TrimSpace(p.comment.String())
-
- // Reset aotu-counter and comments
- p.comment.Reset()
- p.count = 1
-
- inUnparseableSection = false
- for i := range f.options.UnparseableSections {
- if f.options.UnparseableSections[i] == name ||
- (f.options.Insensitive && strings.ToLower(f.options.UnparseableSections[i]) == strings.ToLower(name)) {
- inUnparseableSection = true
- continue
- }
- }
- continue
- }
-
- if inUnparseableSection {
- section.isRawSection = true
- section.rawBody += string(line)
- continue
- }
-
- kname, offset, err := readKeyName(line)
- if err != nil {
- // Treat as boolean key when desired, and whole line is key name.
- if IsErrDelimiterNotFound(err) {
- switch {
- case f.options.AllowBooleanKeys:
- kname, err := p.readValue(line,
- parserBufferSize,
- f.options.IgnoreContinuation,
- f.options.IgnoreInlineComment,
- f.options.UnescapeValueDoubleQuotes,
- f.options.UnescapeValueCommentSymbols,
- f.options.AllowPythonMultilineValues,
- f.options.SpaceBeforeInlineComment)
- if err != nil {
- return err
- }
- key, err := section.NewBooleanKey(kname)
- if err != nil {
- return err
- }
- key.Comment = strings.TrimSpace(p.comment.String())
- p.comment.Reset()
- continue
-
- case f.options.SkipUnrecognizableLines:
- continue
- }
- }
- return err
- }
-
- // Auto increment.
- isAutoIncr := false
- if kname == "-" {
- isAutoIncr = true
- kname = "#" + strconv.Itoa(p.count)
- p.count++
- }
-
- value, err := p.readValue(line[offset:],
- parserBufferSize,
- f.options.IgnoreContinuation,
- f.options.IgnoreInlineComment,
- f.options.UnescapeValueDoubleQuotes,
- f.options.UnescapeValueCommentSymbols,
- f.options.AllowPythonMultilineValues,
- f.options.SpaceBeforeInlineComment)
- if err != nil {
- return err
- }
- isLastValueEmpty = len(value) == 0
-
- key, err := section.NewKey(kname, value)
- if err != nil {
- return err
- }
- key.isAutoIncrement = isAutoIncr
- key.Comment = strings.TrimSpace(p.comment.String())
- p.comment.Reset()
- lastRegularKey = key
- }
- return nil
-}
diff --git a/vendor/github.com/go-ini/ini/section.go b/vendor/github.com/go-ini/ini/section.go
deleted file mode 100644
index 340a1efa..00000000
--- a/vendor/github.com/go-ini/ini/section.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2014 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "errors"
- "fmt"
- "strings"
-)
-
-// Section represents a config section.
-type Section struct {
- f *File
- Comment string
- name string
- keys map[string]*Key
- keyList []string
- keysHash map[string]string
-
- isRawSection bool
- rawBody string
-}
-
-func newSection(f *File, name string) *Section {
- return &Section{
- f: f,
- name: name,
- keys: make(map[string]*Key),
- keyList: make([]string, 0, 10),
- keysHash: make(map[string]string),
- }
-}
-
-// Name returns name of Section.
-func (s *Section) Name() string {
- return s.name
-}
-
-// Body returns rawBody of Section if the section was marked as unparseable.
-// It still follows the other rules of the INI format surrounding leading/trailing whitespace.
-func (s *Section) Body() string {
- return strings.TrimSpace(s.rawBody)
-}
-
-// SetBody updates body content only if section is raw.
-func (s *Section) SetBody(body string) {
- if !s.isRawSection {
- return
- }
- s.rawBody = body
-}
-
-// NewKey creates a new key to given section.
-func (s *Section) NewKey(name, val string) (*Key, error) {
- if len(name) == 0 {
- return nil, errors.New("error creating new key: empty key name")
- } else if s.f.options.Insensitive {
- name = strings.ToLower(name)
- }
-
- if s.f.BlockMode {
- s.f.lock.Lock()
- defer s.f.lock.Unlock()
- }
-
- if inSlice(name, s.keyList) {
- if s.f.options.AllowShadows {
- if err := s.keys[name].addShadow(val); err != nil {
- return nil, err
- }
- } else {
- s.keys[name].value = val
- s.keysHash[name] = val
- }
- return s.keys[name], nil
- }
-
- s.keyList = append(s.keyList, name)
- s.keys[name] = newKey(s, name, val)
- s.keysHash[name] = val
- return s.keys[name], nil
-}
-
-// NewBooleanKey creates a new boolean type key to given section.
-func (s *Section) NewBooleanKey(name string) (*Key, error) {
- key, err := s.NewKey(name, "true")
- if err != nil {
- return nil, err
- }
-
- key.isBooleanType = true
- return key, nil
-}
-
-// GetKey returns key in section by given name.
-func (s *Section) GetKey(name string) (*Key, error) {
- // FIXME: change to section level lock?
- if s.f.BlockMode {
- s.f.lock.RLock()
- }
- if s.f.options.Insensitive {
- name = strings.ToLower(name)
- }
- key := s.keys[name]
- if s.f.BlockMode {
- s.f.lock.RUnlock()
- }
-
- if key == nil {
- // Check if it is a child-section.
- sname := s.name
- for {
- if i := strings.LastIndex(sname, "."); i > -1 {
- sname = sname[:i]
- sec, err := s.f.GetSection(sname)
- if err != nil {
- continue
- }
- return sec.GetKey(name)
- } else {
- break
- }
- }
- return nil, fmt.Errorf("error when getting key of section '%s': key '%s' not exists", s.name, name)
- }
- return key, nil
-}
-
-// HasKey returns true if section contains a key with given name.
-func (s *Section) HasKey(name string) bool {
- key, _ := s.GetKey(name)
- return key != nil
-}
-
-// Haskey is a backwards-compatible name for HasKey.
-// TODO: delete me in v2
-func (s *Section) Haskey(name string) bool {
- return s.HasKey(name)
-}
-
-// HasValue returns true if section contains given raw value.
-func (s *Section) HasValue(value string) bool {
- if s.f.BlockMode {
- s.f.lock.RLock()
- defer s.f.lock.RUnlock()
- }
-
- for _, k := range s.keys {
- if value == k.value {
- return true
- }
- }
- return false
-}
-
-// Key assumes named Key exists in section and returns a zero-value when not.
-func (s *Section) Key(name string) *Key {
- key, err := s.GetKey(name)
- if err != nil {
- // It's OK here because the only possible error is empty key name,
- // but if it's empty, this piece of code won't be executed.
- key, _ = s.NewKey(name, "")
- return key
- }
- return key
-}
-
-// Keys returns list of keys of section.
-func (s *Section) Keys() []*Key {
- keys := make([]*Key, len(s.keyList))
- for i := range s.keyList {
- keys[i] = s.Key(s.keyList[i])
- }
- return keys
-}
-
-// ParentKeys returns list of keys of parent section.
-func (s *Section) ParentKeys() []*Key {
- var parentKeys []*Key
- sname := s.name
- for {
- if i := strings.LastIndex(sname, "."); i > -1 {
- sname = sname[:i]
- sec, err := s.f.GetSection(sname)
- if err != nil {
- continue
- }
- parentKeys = append(parentKeys, sec.Keys()...)
- } else {
- break
- }
-
- }
- return parentKeys
-}
-
-// KeyStrings returns list of key names of section.
-func (s *Section) KeyStrings() []string {
- list := make([]string, len(s.keyList))
- copy(list, s.keyList)
- return list
-}
-
-// KeysHash returns keys hash consisting of names and values.
-func (s *Section) KeysHash() map[string]string {
- if s.f.BlockMode {
- s.f.lock.RLock()
- defer s.f.lock.RUnlock()
- }
-
- hash := map[string]string{}
- for key, value := range s.keysHash {
- hash[key] = value
- }
- return hash
-}
-
-// DeleteKey deletes a key from section.
-func (s *Section) DeleteKey(name string) {
- if s.f.BlockMode {
- s.f.lock.Lock()
- defer s.f.lock.Unlock()
- }
-
- for i, k := range s.keyList {
- if k == name {
- s.keyList = append(s.keyList[:i], s.keyList[i+1:]...)
- delete(s.keys, name)
- return
- }
- }
-}
-
-// ChildSections returns a list of child sections of current section.
-// For example, "[parent.child1]" and "[parent.child12]" are child sections
-// of section "[parent]".
-func (s *Section) ChildSections() []*Section {
- prefix := s.name + "."
- children := make([]*Section, 0, 3)
- for _, name := range s.f.sectionList {
- if strings.HasPrefix(name, prefix) {
- children = append(children, s.f.sections[name])
- }
- }
- return children
-}
diff --git a/vendor/github.com/go-ini/ini/struct.go b/vendor/github.com/go-ini/ini/struct.go
deleted file mode 100644
index 9719dc69..00000000
--- a/vendor/github.com/go-ini/ini/struct.go
+++ /dev/null
@@ -1,512 +0,0 @@
-// Copyright 2014 Unknwon
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package ini
-
-import (
- "bytes"
- "errors"
- "fmt"
- "reflect"
- "strings"
- "time"
- "unicode"
-)
-
-// NameMapper represents a ini tag name mapper.
-type NameMapper func(string) string
-
-// Built-in name getters.
-var (
- // AllCapsUnderscore converts to format ALL_CAPS_UNDERSCORE.
- AllCapsUnderscore NameMapper = func(raw string) string {
- newstr := make([]rune, 0, len(raw))
- for i, chr := range raw {
- if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
- if i > 0 {
- newstr = append(newstr, '_')
- }
- }
- newstr = append(newstr, unicode.ToUpper(chr))
- }
- return string(newstr)
- }
- // TitleUnderscore converts to format title_underscore.
- TitleUnderscore NameMapper = func(raw string) string {
- newstr := make([]rune, 0, len(raw))
- for i, chr := range raw {
- if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
- if i > 0 {
- newstr = append(newstr, '_')
- }
- chr -= ('A' - 'a')
- }
- newstr = append(newstr, chr)
- }
- return string(newstr)
- }
-)
-
-func (s *Section) parseFieldName(raw, actual string) string {
- if len(actual) > 0 {
- return actual
- }
- if s.f.NameMapper != nil {
- return s.f.NameMapper(raw)
- }
- return raw
-}
-
-func parseDelim(actual string) string {
- if len(actual) > 0 {
- return actual
- }
- return ","
-}
-
-var reflectTime = reflect.TypeOf(time.Now()).Kind()
-
-// setSliceWithProperType sets proper values to slice based on its type.
-func setSliceWithProperType(key *Key, field reflect.Value, delim string, allowShadow, isStrict bool) error {
- var strs []string
- if allowShadow {
- strs = key.StringsWithShadows(delim)
- } else {
- strs = key.Strings(delim)
- }
-
- numVals := len(strs)
- if numVals == 0 {
- return nil
- }
-
- var vals interface{}
- var err error
-
- sliceOf := field.Type().Elem().Kind()
- switch sliceOf {
- case reflect.String:
- vals = strs
- case reflect.Int:
- vals, err = key.parseInts(strs, true, false)
- case reflect.Int64:
- vals, err = key.parseInt64s(strs, true, false)
- case reflect.Uint:
- vals, err = key.parseUints(strs, true, false)
- case reflect.Uint64:
- vals, err = key.parseUint64s(strs, true, false)
- case reflect.Float64:
- vals, err = key.parseFloat64s(strs, true, false)
- case reflectTime:
- vals, err = key.parseTimesFormat(time.RFC3339, strs, true, false)
- default:
- return fmt.Errorf("unsupported type '[]%s'", sliceOf)
- }
- if err != nil && isStrict {
- return err
- }
-
- slice := reflect.MakeSlice(field.Type(), numVals, numVals)
- for i := 0; i < numVals; i++ {
- switch sliceOf {
- case reflect.String:
- slice.Index(i).Set(reflect.ValueOf(vals.([]string)[i]))
- case reflect.Int:
- slice.Index(i).Set(reflect.ValueOf(vals.([]int)[i]))
- case reflect.Int64:
- slice.Index(i).Set(reflect.ValueOf(vals.([]int64)[i]))
- case reflect.Uint:
- slice.Index(i).Set(reflect.ValueOf(vals.([]uint)[i]))
- case reflect.Uint64:
- slice.Index(i).Set(reflect.ValueOf(vals.([]uint64)[i]))
- case reflect.Float64:
- slice.Index(i).Set(reflect.ValueOf(vals.([]float64)[i]))
- case reflectTime:
- slice.Index(i).Set(reflect.ValueOf(vals.([]time.Time)[i]))
- }
- }
- field.Set(slice)
- return nil
-}
-
-func wrapStrictError(err error, isStrict bool) error {
- if isStrict {
- return err
- }
- return nil
-}
-
-// setWithProperType sets proper value to field based on its type,
-// but it does not return error for failing parsing,
-// because we want to use default value that is already assigned to strcut.
-func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string, allowShadow, isStrict bool) error {
- switch t.Kind() {
- case reflect.String:
- if len(key.String()) == 0 {
- return nil
- }
- field.SetString(key.String())
- case reflect.Bool:
- boolVal, err := key.Bool()
- if err != nil {
- return wrapStrictError(err, isStrict)
- }
- field.SetBool(boolVal)
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- durationVal, err := key.Duration()
- // Skip zero value
- if err == nil && int64(durationVal) > 0 {
- field.Set(reflect.ValueOf(durationVal))
- return nil
- }
-
- intVal, err := key.Int64()
- if err != nil {
- return wrapStrictError(err, isStrict)
- }
- field.SetInt(intVal)
- // byte is an alias for uint8, so supporting uint8 breaks support for byte
- case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- durationVal, err := key.Duration()
- // Skip zero value
- if err == nil && int(durationVal) > 0 {
- field.Set(reflect.ValueOf(durationVal))
- return nil
- }
-
- uintVal, err := key.Uint64()
- if err != nil {
- return wrapStrictError(err, isStrict)
- }
- field.SetUint(uintVal)
-
- case reflect.Float32, reflect.Float64:
- floatVal, err := key.Float64()
- if err != nil {
- return wrapStrictError(err, isStrict)
- }
- field.SetFloat(floatVal)
- case reflectTime:
- timeVal, err := key.Time()
- if err != nil {
- return wrapStrictError(err, isStrict)
- }
- field.Set(reflect.ValueOf(timeVal))
- case reflect.Slice:
- return setSliceWithProperType(key, field, delim, allowShadow, isStrict)
- default:
- return fmt.Errorf("unsupported type '%s'", t)
- }
- return nil
-}
-
-func parseTagOptions(tag string) (rawName string, omitEmpty bool, allowShadow bool) {
- opts := strings.SplitN(tag, ",", 3)
- rawName = opts[0]
- if len(opts) > 1 {
- omitEmpty = opts[1] == "omitempty"
- }
- if len(opts) > 2 {
- allowShadow = opts[2] == "allowshadow"
- }
- return rawName, omitEmpty, allowShadow
-}
-
-func (s *Section) mapTo(val reflect.Value, isStrict bool) error {
- if val.Kind() == reflect.Ptr {
- val = val.Elem()
- }
- typ := val.Type()
-
- for i := 0; i < typ.NumField(); i++ {
- field := val.Field(i)
- tpField := typ.Field(i)
-
- tag := tpField.Tag.Get("ini")
- if tag == "-" {
- continue
- }
-
- rawName, _, allowShadow := parseTagOptions(tag)
- fieldName := s.parseFieldName(tpField.Name, rawName)
- if len(fieldName) == 0 || !field.CanSet() {
- continue
- }
-
- isAnonymous := tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous
- isStruct := tpField.Type.Kind() == reflect.Struct
- if isAnonymous {
- field.Set(reflect.New(tpField.Type.Elem()))
- }
-
- if isAnonymous || isStruct {
- if sec, err := s.f.GetSection(fieldName); err == nil {
- if err = sec.mapTo(field, isStrict); err != nil {
- return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
- }
- continue
- }
- }
-
- if key, err := s.GetKey(fieldName); err == nil {
- delim := parseDelim(tpField.Tag.Get("delim"))
- if err = setWithProperType(tpField.Type, key, field, delim, allowShadow, isStrict); err != nil {
- return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
- }
- }
- }
- return nil
-}
-
-// MapTo maps section to given struct.
-func (s *Section) MapTo(v interface{}) error {
- typ := reflect.TypeOf(v)
- val := reflect.ValueOf(v)
- if typ.Kind() == reflect.Ptr {
- typ = typ.Elem()
- val = val.Elem()
- } else {
- return errors.New("cannot map to non-pointer struct")
- }
-
- return s.mapTo(val, false)
-}
-
-// MapTo maps section to given struct in strict mode,
-// which returns all possible error including value parsing error.
-func (s *Section) StrictMapTo(v interface{}) error {
- typ := reflect.TypeOf(v)
- val := reflect.ValueOf(v)
- if typ.Kind() == reflect.Ptr {
- typ = typ.Elem()
- val = val.Elem()
- } else {
- return errors.New("cannot map to non-pointer struct")
- }
-
- return s.mapTo(val, true)
-}
-
-// MapTo maps file to given struct.
-func (f *File) MapTo(v interface{}) error {
- return f.Section("").MapTo(v)
-}
-
-// MapTo maps file to given struct in strict mode,
-// which returns all possible error including value parsing error.
-func (f *File) StrictMapTo(v interface{}) error {
- return f.Section("").StrictMapTo(v)
-}
-
-// MapTo maps data sources to given struct with name mapper.
-func MapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error {
- cfg, err := Load(source, others...)
- if err != nil {
- return err
- }
- cfg.NameMapper = mapper
- return cfg.MapTo(v)
-}
-
-// StrictMapToWithMapper maps data sources to given struct with name mapper in strict mode,
-// which returns all possible error including value parsing error.
-func StrictMapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error {
- cfg, err := Load(source, others...)
- if err != nil {
- return err
- }
- cfg.NameMapper = mapper
- return cfg.StrictMapTo(v)
-}
-
-// MapTo maps data sources to given struct.
-func MapTo(v, source interface{}, others ...interface{}) error {
- return MapToWithMapper(v, nil, source, others...)
-}
-
-// StrictMapTo maps data sources to given struct in strict mode,
-// which returns all possible error including value parsing error.
-func StrictMapTo(v, source interface{}, others ...interface{}) error {
- return StrictMapToWithMapper(v, nil, source, others...)
-}
-
-// reflectSliceWithProperType does the opposite thing as setSliceWithProperType.
-func reflectSliceWithProperType(key *Key, field reflect.Value, delim string) error {
- slice := field.Slice(0, field.Len())
- if field.Len() == 0 {
- return nil
- }
-
- var buf bytes.Buffer
- sliceOf := field.Type().Elem().Kind()
- for i := 0; i < field.Len(); i++ {
- switch sliceOf {
- case reflect.String:
- buf.WriteString(slice.Index(i).String())
- case reflect.Int, reflect.Int64:
- buf.WriteString(fmt.Sprint(slice.Index(i).Int()))
- case reflect.Uint, reflect.Uint64:
- buf.WriteString(fmt.Sprint(slice.Index(i).Uint()))
- case reflect.Float64:
- buf.WriteString(fmt.Sprint(slice.Index(i).Float()))
- case reflectTime:
- buf.WriteString(slice.Index(i).Interface().(time.Time).Format(time.RFC3339))
- default:
- return fmt.Errorf("unsupported type '[]%s'", sliceOf)
- }
- buf.WriteString(delim)
- }
- key.SetValue(buf.String()[:buf.Len()-1])
- return nil
-}
-
-// reflectWithProperType does the opposite thing as setWithProperType.
-func reflectWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error {
- switch t.Kind() {
- case reflect.String:
- key.SetValue(field.String())
- case reflect.Bool:
- key.SetValue(fmt.Sprint(field.Bool()))
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- key.SetValue(fmt.Sprint(field.Int()))
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- key.SetValue(fmt.Sprint(field.Uint()))
- case reflect.Float32, reflect.Float64:
- key.SetValue(fmt.Sprint(field.Float()))
- case reflectTime:
- key.SetValue(fmt.Sprint(field.Interface().(time.Time).Format(time.RFC3339)))
- case reflect.Slice:
- return reflectSliceWithProperType(key, field, delim)
- default:
- return fmt.Errorf("unsupported type '%s'", t)
- }
- return nil
-}
-
-// CR: copied from encoding/json/encode.go with modifications of time.Time support.
-// TODO: add more test coverage.
-func isEmptyValue(v reflect.Value) bool {
- switch v.Kind() {
- case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
- return v.Len() == 0
- case reflect.Bool:
- return !v.Bool()
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- return v.Int() == 0
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
- return v.Uint() == 0
- case reflect.Float32, reflect.Float64:
- return v.Float() == 0
- case reflect.Interface, reflect.Ptr:
- return v.IsNil()
- case reflectTime:
- t, ok := v.Interface().(time.Time)
- return ok && t.IsZero()
- }
- return false
-}
-
-func (s *Section) reflectFrom(val reflect.Value) error {
- if val.Kind() == reflect.Ptr {
- val = val.Elem()
- }
- typ := val.Type()
-
- for i := 0; i < typ.NumField(); i++ {
- field := val.Field(i)
- tpField := typ.Field(i)
-
- tag := tpField.Tag.Get("ini")
- if tag == "-" {
- continue
- }
-
- opts := strings.SplitN(tag, ",", 2)
- if len(opts) == 2 && opts[1] == "omitempty" && isEmptyValue(field) {
- continue
- }
-
- fieldName := s.parseFieldName(tpField.Name, opts[0])
- if len(fieldName) == 0 || !field.CanSet() {
- continue
- }
-
- if (tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous) ||
- (tpField.Type.Kind() == reflect.Struct && tpField.Type.Name() != "Time") {
- // Note: The only error here is section doesn't exist.
- sec, err := s.f.GetSection(fieldName)
- if err != nil {
- // Note: fieldName can never be empty here, ignore error.
- sec, _ = s.f.NewSection(fieldName)
- }
-
- // Add comment from comment tag
- if len(sec.Comment) == 0 {
- sec.Comment = tpField.Tag.Get("comment")
- }
-
- if err = sec.reflectFrom(field); err != nil {
- return fmt.Errorf("error reflecting field (%s): %v", fieldName, err)
- }
- continue
- }
-
- // Note: Same reason as secion.
- key, err := s.GetKey(fieldName)
- if err != nil {
- key, _ = s.NewKey(fieldName, "")
- }
-
- // Add comment from comment tag
- if len(key.Comment) == 0 {
- key.Comment = tpField.Tag.Get("comment")
- }
-
- if err = reflectWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil {
- return fmt.Errorf("error reflecting field (%s): %v", fieldName, err)
- }
-
- }
- return nil
-}
-
-// ReflectFrom reflects secion from given struct.
-func (s *Section) ReflectFrom(v interface{}) error {
- typ := reflect.TypeOf(v)
- val := reflect.ValueOf(v)
- if typ.Kind() == reflect.Ptr {
- typ = typ.Elem()
- val = val.Elem()
- } else {
- return errors.New("cannot reflect from non-pointer struct")
- }
-
- return s.reflectFrom(val)
-}
-
-// ReflectFrom reflects file from given struct.
-func (f *File) ReflectFrom(v interface{}) error {
- return f.Section("").ReflectFrom(v)
-}
-
-// ReflectFrom reflects data sources from given struct with name mapper.
-func ReflectFromWithMapper(cfg *File, v interface{}, mapper NameMapper) error {
- cfg.NameMapper = mapper
- return cfg.ReflectFrom(v)
-}
-
-// ReflectFrom reflects data sources from given struct.
-func ReflectFrom(cfg *File, v interface{}) error {
- return ReflectFromWithMapper(cfg, v, nil)
-}
diff --git a/vendor/github.com/gosimple/slug/languages_substitution.go b/vendor/github.com/gosimple/slug/languages_substitution.go
index f1127406..d6664e26 100644
--- a/vendor/github.com/gosimple/slug/languages_substitution.go
+++ b/vendor/github.com/gosimple/slug/languages_substitution.go
@@ -7,7 +7,9 @@ package slug
func init() {
// Merge language subs with the default one
- for _, sub := range []*map[rune]string{&deSub, &enSub, &plSub, &esSub} {
+ for _, sub := range []*map[rune]string{
+ &deSub, &enSub, &esSub, &fiSub, &grSub, &nlSub, &plSub,
+ } {
for key, value := range defaultSub {
(*sub)[key] = value
}
@@ -24,14 +26,15 @@ var defaultSub = map[rune]string{
'―': "-", // horizontal bar
}
-var nlSub = map[rune]string{
- '&': "en",
- '@': "at",
-}
-
var deSub = map[rune]string{
'&': "und",
'@': "an",
+ 'ä': "ae",
+ 'Ä': "ae",
+ 'ö': "oe",
+ 'Ö': "oe",
+ 'ü': "ue",
+ 'Ü': "ue",
}
var enSub = map[rune]string{
@@ -39,16 +42,16 @@ var enSub = map[rune]string{
'@': "at",
}
-var plSub = map[rune]string{
- '&': "i",
- '@': "na",
-}
-
var esSub = map[rune]string{
'&': "y",
'@': "en",
}
+var fiSub = map[rune]string{
+ '&': "ja",
+ '@': "at",
+}
+
var grSub = map[rune]string{
'&': "kai",
'η': "i",
@@ -56,7 +59,22 @@ var grSub = map[rune]string{
'Η': "i",
'ι': "i",
'ί': "i",
+ 'ϊ': "i",
'Ι': "i",
'χ': "x",
'Χ': "x",
+ 'ω': "w",
+ 'ώ': "w",
+ 'Ω': "w",
+ 'ϋ': "u",
+}
+
+var nlSub = map[rune]string{
+ '&': "en",
+ '@': "at",
+}
+
+var plSub = map[rune]string{
+ '&': "i",
+ '@': "na",
}
diff --git a/vendor/github.com/gosimple/slug/slug.go b/vendor/github.com/gosimple/slug/slug.go
index a1b5f19b..0c6801ff 100644
--- a/vendor/github.com/gosimple/slug/slug.go
+++ b/vendor/github.com/gosimple/slug/slug.go
@@ -56,14 +56,16 @@ func MakeLang(s string, lang string) (slug string) {
slug = SubstituteRune(slug, deSub)
case "en":
slug = SubstituteRune(slug, enSub)
- case "pl":
- slug = SubstituteRune(slug, plSub)
case "es":
slug = SubstituteRune(slug, esSub)
+ case "fi":
+ slug = SubstituteRune(slug, fiSub)
case "gr":
slug = SubstituteRune(slug, grSub)
case "nl":
slug = SubstituteRune(slug, nlSub)
+ case "pl":
+ slug = SubstituteRune(slug, plSub)
default: // fallback to "en" if lang not found
slug = SubstituteRune(slug, enSub)
}
@@ -76,7 +78,7 @@ func MakeLang(s string, lang string) (slug string) {
// Process all remaining symbols
slug = regexpNonAuthorizedChars.ReplaceAllString(slug, "-")
slug = regexpMultipleDashes.ReplaceAllString(slug, "-")
- slug = strings.Trim(slug, "-")
+ slug = strings.Trim(slug, "-_")
if MaxLength > 0 {
slug = smartTruncate(slug)
diff --git a/vendor/github.com/hashicorp/consul/api/acl.go b/vendor/github.com/hashicorp/consul/api/acl.go
index 8ec9aa58..53a05236 100644
--- a/vendor/github.com/hashicorp/consul/api/acl.go
+++ b/vendor/github.com/hashicorp/consul/api/acl.go
@@ -1,6 +1,9 @@
package api
import (
+ "fmt"
+ "io"
+ "io/ioutil"
"time"
)
@@ -12,7 +15,42 @@ const (
ACLManagementType = "management"
)
-// ACLEntry is used to represent an ACL entry
+type ACLTokenPolicyLink struct {
+ ID string
+ Name string
+}
+
+// ACLToken represents an ACL Token
+type ACLToken struct {
+ CreateIndex uint64
+ ModifyIndex uint64
+ AccessorID string
+ SecretID string
+ Description string
+ Policies []*ACLTokenPolicyLink
+ Local bool
+ CreateTime time.Time `json:",omitempty"`
+ Hash []byte `json:",omitempty"`
+
+ // DEPRECATED (ACL-Legacy-Compat)
+ // Rules will only be present for legacy tokens returned via the new APIs
+ Rules string `json:",omitempty"`
+}
+
+type ACLTokenListEntry struct {
+ CreateIndex uint64
+ ModifyIndex uint64
+ AccessorID string
+ Description string
+ Policies []*ACLTokenPolicyLink
+ Local bool
+ CreateTime time.Time
+ Hash []byte
+ Legacy bool
+}
+
+// ACLEntry is used to represent a legacy ACL token
+// The legacy tokens are deprecated.
type ACLEntry struct {
CreateIndex uint64
ModifyIndex uint64
@@ -24,12 +62,36 @@ type ACLEntry struct {
// ACLReplicationStatus is used to represent the status of ACL replication.
type ACLReplicationStatus struct {
- Enabled bool
- Running bool
- SourceDatacenter string
- ReplicatedIndex uint64
- LastSuccess time.Time
- LastError time.Time
+ Enabled bool
+ Running bool
+ SourceDatacenter string
+ ReplicationType string
+ ReplicatedIndex uint64
+ ReplicatedTokenIndex uint64
+ LastSuccess time.Time
+ LastError time.Time
+}
+
+// ACLPolicy represents an ACL Policy.
+type ACLPolicy struct {
+ ID string
+ Name string
+ Description string
+ Rules string
+ Datacenters []string
+ Hash []byte
+ CreateIndex uint64
+ ModifyIndex uint64
+}
+
+type ACLPolicyListEntry struct {
+ ID string
+ Name string
+ Description string
+ Datacenters []string
+ Hash []byte
+ CreateIndex uint64
+ ModifyIndex uint64
}
// ACL can be used to query the ACL endpoints
@@ -44,23 +106,25 @@ func (c *Client) ACL() *ACL {
// Bootstrap is used to perform a one-time ACL bootstrap operation on a cluster
// to get the first management token.
-func (a *ACL) Bootstrap() (string, *WriteMeta, error) {
+func (a *ACL) Bootstrap() (*ACLToken, *WriteMeta, error) {
r := a.c.newRequest("PUT", "/v1/acl/bootstrap")
rtt, resp, err := requireOK(a.c.doRequest(r))
if err != nil {
- return "", nil, err
+ return nil, nil, err
}
defer resp.Body.Close()
wm := &WriteMeta{RequestTime: rtt}
- var out struct{ ID string }
+ var out ACLToken
if err := decodeBody(resp, &out); err != nil {
- return "", nil, err
+ return nil, nil, err
}
- return out.ID, wm, nil
+ return &out, wm, nil
}
// Create is used to generate a new token with the given parameters
+//
+// Deprecated: Use TokenCreate instead.
func (a *ACL) Create(acl *ACLEntry, q *WriteOptions) (string, *WriteMeta, error) {
r := a.c.newRequest("PUT", "/v1/acl/create")
r.setWriteOptions(q)
@@ -80,6 +144,8 @@ func (a *ACL) Create(acl *ACLEntry, q *WriteOptions) (string, *WriteMeta, error)
}
// Update is used to update the rules of an existing token
+//
+// Deprecated: Use TokenUpdate instead.
func (a *ACL) Update(acl *ACLEntry, q *WriteOptions) (*WriteMeta, error) {
r := a.c.newRequest("PUT", "/v1/acl/update")
r.setWriteOptions(q)
@@ -95,6 +161,8 @@ func (a *ACL) Update(acl *ACLEntry, q *WriteOptions) (*WriteMeta, error) {
}
// Destroy is used to destroy a given ACL token ID
+//
+// Deprecated: Use TokenDelete instead.
func (a *ACL) Destroy(id string, q *WriteOptions) (*WriteMeta, error) {
r := a.c.newRequest("PUT", "/v1/acl/destroy/"+id)
r.setWriteOptions(q)
@@ -109,6 +177,8 @@ func (a *ACL) Destroy(id string, q *WriteOptions) (*WriteMeta, error) {
}
// Clone is used to return a new token cloned from an existing one
+//
+// Deprecated: Use TokenClone instead.
func (a *ACL) Clone(id string, q *WriteOptions) (string, *WriteMeta, error) {
r := a.c.newRequest("PUT", "/v1/acl/clone/"+id)
r.setWriteOptions(q)
@@ -127,6 +197,8 @@ func (a *ACL) Clone(id string, q *WriteOptions) (string, *WriteMeta, error) {
}
// Info is used to query for information about an ACL token
+//
+// Deprecated: Use TokenRead instead.
func (a *ACL) Info(id string, q *QueryOptions) (*ACLEntry, *QueryMeta, error) {
r := a.c.newRequest("GET", "/v1/acl/info/"+id)
r.setQueryOptions(q)
@@ -151,6 +223,8 @@ func (a *ACL) Info(id string, q *QueryOptions) (*ACLEntry, *QueryMeta, error) {
}
// List is used to get all the ACL tokens
+//
+// Deprecated: Use TokenList instead.
func (a *ACL) List(q *QueryOptions) ([]*ACLEntry, *QueryMeta, error) {
r := a.c.newRequest("GET", "/v1/acl/list")
r.setQueryOptions(q)
@@ -191,3 +265,324 @@ func (a *ACL) Replication(q *QueryOptions) (*ACLReplicationStatus, *QueryMeta, e
}
return entries, qm, nil
}
+
+// TokenCreate creates a new ACL token. It requires that the AccessorID and SecretID fields
+// of the ACLToken structure to be empty as these will be filled in by Consul.
+func (a *ACL) TokenCreate(token *ACLToken, q *WriteOptions) (*ACLToken, *WriteMeta, error) {
+ if token.AccessorID != "" {
+ return nil, nil, fmt.Errorf("Cannot specify an AccessorID in Token Creation")
+ }
+
+ if token.SecretID != "" {
+ return nil, nil, fmt.Errorf("Cannot specify a SecretID in Token Creation")
+ }
+
+ r := a.c.newRequest("PUT", "/v1/acl/token")
+ r.setWriteOptions(q)
+ r.obj = token
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ var out ACLToken
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, wm, nil
+}
+
+// TokenUpdate updates a token in place without modifying its AccessorID or SecretID. A valid
+// AccessorID must be set in the ACLToken structure passed to this function but the SecretID may
+// be omitted and will be filled in by Consul with its existing value.
+func (a *ACL) TokenUpdate(token *ACLToken, q *WriteOptions) (*ACLToken, *WriteMeta, error) {
+ if token.AccessorID == "" {
+ return nil, nil, fmt.Errorf("Must specify an AccessorID for Token Updating")
+ }
+ r := a.c.newRequest("PUT", "/v1/acl/token/"+token.AccessorID)
+ r.setWriteOptions(q)
+ r.obj = token
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ var out ACLToken
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, wm, nil
+}
+
+// TokenClone will create a new token with the same policies and locality as the original
+// token but will have its own auto-generated AccessorID and SecretID as well having the
+// description passed to this function. The tokenID parameter must be a valid Accessor ID
+// of an existing token.
+func (a *ACL) TokenClone(tokenID string, description string, q *WriteOptions) (*ACLToken, *WriteMeta, error) {
+ if tokenID == "" {
+ return nil, nil, fmt.Errorf("Must specify a tokenID for Token Cloning")
+ }
+
+ r := a.c.newRequest("PUT", "/v1/acl/token/"+tokenID+"/clone")
+ r.setWriteOptions(q)
+ r.obj = struct{ Description string }{description}
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ var out ACLToken
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, wm, nil
+}
+
+// TokenDelete removes a single ACL token. The tokenID parameter must be a valid
+// Accessor ID of an existing token.
+func (a *ACL) TokenDelete(tokenID string, q *WriteOptions) (*WriteMeta, error) {
+ r := a.c.newRequest("DELETE", "/v1/acl/token/"+tokenID)
+ r.setWriteOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, err
+ }
+ resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ return wm, nil
+}
+
+// TokenRead retrieves the full token details. The tokenID parameter must be a valid
+// Accessor ID of an existing token.
+func (a *ACL) TokenRead(tokenID string, q *QueryOptions) (*ACLToken, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/acl/token/"+tokenID)
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var out ACLToken
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, qm, nil
+}
+
+// TokenReadSelf retrieves the full token details of the token currently
+// assigned to the API Client. In this manner its possible to read a token
+// by its Secret ID.
+func (a *ACL) TokenReadSelf(q *QueryOptions) (*ACLToken, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/acl/token/self")
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var out ACLToken
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, qm, nil
+}
+
+// TokenList lists all tokens. The listing does not contain any SecretIDs as those
+// may only be retrieved by a call to TokenRead.
+func (a *ACL) TokenList(q *QueryOptions) ([]*ACLTokenListEntry, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/acl/tokens")
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var entries []*ACLTokenListEntry
+ if err := decodeBody(resp, &entries); err != nil {
+ return nil, nil, err
+ }
+ return entries, qm, nil
+}
+
+// PolicyCreate will create a new policy. It is not allowed for the policy parameters
+// ID field to be set as this will be generated by Consul while processing the request.
+func (a *ACL) PolicyCreate(policy *ACLPolicy, q *WriteOptions) (*ACLPolicy, *WriteMeta, error) {
+ if policy.ID != "" {
+ return nil, nil, fmt.Errorf("Cannot specify an ID in Policy Creation")
+ }
+
+ r := a.c.newRequest("PUT", "/v1/acl/policy")
+ r.setWriteOptions(q)
+ r.obj = policy
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ var out ACLPolicy
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, wm, nil
+}
+
+// PolicyUpdate updates a policy. The ID field of the policy parameter must be set to an
+// existing policy ID
+func (a *ACL) PolicyUpdate(policy *ACLPolicy, q *WriteOptions) (*ACLPolicy, *WriteMeta, error) {
+ if policy.ID == "" {
+ return nil, nil, fmt.Errorf("Must specify an ID in Policy Creation")
+ }
+
+ r := a.c.newRequest("PUT", "/v1/acl/policy/"+policy.ID)
+ r.setWriteOptions(q)
+ r.obj = policy
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ var out ACLPolicy
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, wm, nil
+}
+
+// PolicyDelete deletes a policy given its ID.
+func (a *ACL) PolicyDelete(policyID string, q *WriteOptions) (*WriteMeta, error) {
+ r := a.c.newRequest("DELETE", "/v1/acl/policy/"+policyID)
+ r.setWriteOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, err
+ }
+ resp.Body.Close()
+
+ wm := &WriteMeta{RequestTime: rtt}
+ return wm, nil
+}
+
+// PolicyRead retrieves the policy details including the rule set.
+func (a *ACL) PolicyRead(policyID string, q *QueryOptions) (*ACLPolicy, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/acl/policy/"+policyID)
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var out ACLPolicy
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return &out, qm, nil
+}
+
+// PolicyList retrieves a listing of all policies. The listing does not include the
+// rules for any policy as those should be retrieved by subsequent calls to PolicyRead.
+func (a *ACL) PolicyList(q *QueryOptions) ([]*ACLPolicyListEntry, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/acl/policies")
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var entries []*ACLPolicyListEntry
+ if err := decodeBody(resp, &entries); err != nil {
+ return nil, nil, err
+ }
+ return entries, qm, nil
+}
+
+// RulesTranslate translates the legacy rule syntax into the current syntax.
+//
+// Deprecated: Support for the legacy syntax translation will be removed
+// when legacy ACL support is removed.
+func (a *ACL) RulesTranslate(rules io.Reader) (string, error) {
+ r := a.c.newRequest("POST", "/v1/acl/rules/translate")
+ r.body = rules
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return "", err
+ }
+ defer resp.Body.Close()
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ ruleBytes, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return "", fmt.Errorf("Failed to read translated rule body: %v", err)
+ }
+
+ return string(ruleBytes), nil
+}
+
+// RulesTranslateToken translates the rules associated with the legacy syntax
+// into the current syntax and returns the results.
+//
+// Deprecated: Support for the legacy syntax translation will be removed
+// when legacy ACL support is removed.
+func (a *ACL) RulesTranslateToken(tokenID string) (string, error) {
+ r := a.c.newRequest("GET", "/v1/acl/rules/translate/"+tokenID)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return "", err
+ }
+ defer resp.Body.Close()
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ ruleBytes, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return "", fmt.Errorf("Failed to read translated rule body: %v", err)
+ }
+
+ return string(ruleBytes), nil
+}
diff --git a/vendor/github.com/hashicorp/consul/api/agent.go b/vendor/github.com/hashicorp/consul/api/agent.go
index 41505e76..6a3fb27e 100644
--- a/vendor/github.com/hashicorp/consul/api/agent.go
+++ b/vendor/github.com/hashicorp/consul/api/agent.go
@@ -3,6 +3,8 @@ package api
import (
"bufio"
"fmt"
+ "net/http"
+ "net/url"
)
// ServiceKind is the kind of service being registered.
@@ -38,6 +40,18 @@ const (
ProxyExecModeScript ProxyExecMode = "script"
)
+// UpstreamDestType is the type of upstream discovery mechanism.
+type UpstreamDestType string
+
+const (
+ // UpstreamDestTypeService discovers instances via healthy service lookup.
+ UpstreamDestTypeService UpstreamDestType = "service"
+
+ // UpstreamDestTypePreparedQuery discovers instances via prepared query
+ // execution.
+ UpstreamDestTypePreparedQuery UpstreamDestType = "prepared_query"
+)
+
// AgentCheck represents a check known to the agent
type AgentCheck struct {
Node string
@@ -59,7 +73,7 @@ type AgentWeights struct {
// AgentService represents a service known to the agent
type AgentService struct {
- Kind ServiceKind
+ Kind ServiceKind `json:",omitempty"`
ID string
Service string
Tags []string
@@ -68,24 +82,47 @@ type AgentService struct {
Address string
Weights AgentWeights
EnableTagOverride bool
- CreateIndex uint64
- ModifyIndex uint64
- ProxyDestination string
- Connect *AgentServiceConnect
+ CreateIndex uint64 `json:",omitempty"`
+ ModifyIndex uint64 `json:",omitempty"`
+ ContentHash string `json:",omitempty"`
+ // DEPRECATED (ProxyDestination) - remove this field
+ ProxyDestination string `json:",omitempty"`
+ Proxy *AgentServiceConnectProxyConfig `json:",omitempty"`
+ Connect *AgentServiceConnect `json:",omitempty"`
+}
+
+// AgentServiceChecksInfo returns information about a Service and its checks
+type AgentServiceChecksInfo struct {
+ AggregatedStatus string
+ Service *AgentService
+ Checks HealthChecks
}
// AgentServiceConnect represents the Connect configuration of a service.
type AgentServiceConnect struct {
- Native bool
- Proxy *AgentServiceConnectProxy
+ Native bool `json:",omitempty"`
+ Proxy *AgentServiceConnectProxy `json:",omitempty"`
+ SidecarService *AgentServiceRegistration `json:",omitempty"`
}
// AgentServiceConnectProxy represents the Connect Proxy configuration of a
// service.
type AgentServiceConnectProxy struct {
- ExecMode ProxyExecMode
- Command []string
- Config map[string]interface{}
+ ExecMode ProxyExecMode `json:",omitempty"`
+ Command []string `json:",omitempty"`
+ Config map[string]interface{} `json:",omitempty"`
+ Upstreams []Upstream `json:",omitempty"`
+}
+
+// AgentServiceConnectProxyConfig is the proxy configuration in a connect-proxy
+// ServiceDefinition or response.
+type AgentServiceConnectProxyConfig struct {
+ DestinationServiceName string
+ DestinationServiceID string `json:",omitempty"`
+ LocalServiceAddress string `json:",omitempty"`
+ LocalServicePort int `json:",omitempty"`
+ Config map[string]interface{} `json:",omitempty"`
+ Upstreams []Upstream
}
// AgentMember represents a cluster member known to the agent
@@ -129,8 +166,10 @@ type AgentServiceRegistration struct {
Weights *AgentWeights `json:",omitempty"`
Check *AgentServiceCheck
Checks AgentServiceChecks
- ProxyDestination string `json:",omitempty"`
- Connect *AgentServiceConnect `json:",omitempty"`
+ // DEPRECATED (ProxyDestination) - remove this field
+ ProxyDestination string `json:",omitempty"`
+ Proxy *AgentServiceConnectProxyConfig `json:",omitempty"`
+ Connect *AgentServiceConnect `json:",omitempty"`
}
// AgentCheckRegistration is used to register a new check
@@ -161,6 +200,8 @@ type AgentServiceCheck struct {
TLSSkipVerify bool `json:",omitempty"`
GRPC string `json:",omitempty"`
GRPCUseTLS bool `json:",omitempty"`
+ AliasNode string `json:",omitempty"`
+ AliasService string `json:",omitempty"`
// In Consul 0.7 and later, checks that are associated with a service
// may also contain this optional DeregisterCriticalServiceAfter field,
@@ -233,9 +274,23 @@ type ConnectProxyConfig struct {
TargetServiceID string
TargetServiceName string
ContentHash string
- ExecMode ProxyExecMode
- Command []string
- Config map[string]interface{}
+ // DEPRECATED(managed-proxies) - this struct is re-used for sidecar configs
+ // but they don't need ExecMode or Command
+ ExecMode ProxyExecMode `json:",omitempty"`
+ Command []string `json:",omitempty"`
+ Config map[string]interface{}
+ Upstreams []Upstream
+}
+
+// Upstream is the response structure for a proxy upstream configuration.
+type Upstream struct {
+ DestinationType UpstreamDestType `json:",omitempty"`
+ DestinationNamespace string `json:",omitempty"`
+ DestinationName string
+ Datacenter string `json:",omitempty"`
+ LocalBindAddress string `json:",omitempty"`
+ LocalBindPort int `json:",omitempty"`
+ Config map[string]interface{} `json:",omitempty"`
}
// Agent can be used to query the Agent endpoints
@@ -268,6 +323,24 @@ func (a *Agent) Self() (map[string]map[string]interface{}, error) {
return out, nil
}
+// Host is used to retrieve information about the host the
+// agent is running on such as CPU, memory, and disk. Requires
+// a operator:read ACL token.
+func (a *Agent) Host() (map[string]interface{}, error) {
+ r := a.c.newRequest("GET", "/v1/agent/host")
+ _, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var out map[string]interface{}
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// Metrics is used to query the agent we are speaking to for
// its current internal metric data
func (a *Agent) Metrics() (*MetricsInfo, error) {
@@ -343,6 +416,100 @@ func (a *Agent) Services() (map[string]*AgentService, error) {
return out, nil
}
+// AgentHealthServiceByID returns for a given serviceID: the aggregated health status, the service definition or an error if any
+// - If the service is not found, will return status (critical, nil, nil)
+// - If the service is found, will return (critical|passing|warning), AgentServiceChecksInfo, nil)
+// - In all other cases, will return an error
+func (a *Agent) AgentHealthServiceByID(serviceID string) (string, *AgentServiceChecksInfo, error) {
+ path := fmt.Sprintf("/v1/agent/health/service/id/%v", url.PathEscape(serviceID))
+ r := a.c.newRequest("GET", path)
+ r.params.Add("format", "json")
+ r.header.Set("Accept", "application/json")
+ _, resp, err := a.c.doRequest(r)
+ if err != nil {
+ return "", nil, err
+ }
+ defer resp.Body.Close()
+ // Service not Found
+ if resp.StatusCode == http.StatusNotFound {
+ return HealthCritical, nil, nil
+ }
+ var out *AgentServiceChecksInfo
+ if err := decodeBody(resp, &out); err != nil {
+ return HealthCritical, out, err
+ }
+ switch resp.StatusCode {
+ case http.StatusOK:
+ return HealthPassing, out, nil
+ case http.StatusTooManyRequests:
+ return HealthWarning, out, nil
+ case http.StatusServiceUnavailable:
+ return HealthCritical, out, nil
+ }
+ return HealthCritical, out, fmt.Errorf("Unexpected Error Code %v for %s", resp.StatusCode, path)
+}
+
+// AgentHealthServiceByName returns for a given service name: the aggregated health status for all services
+// having the specified name.
+// - If no service is not found, will return status (critical, [], nil)
+// - If the service is found, will return (critical|passing|warning), []api.AgentServiceChecksInfo, nil)
+// - In all other cases, will return an error
+func (a *Agent) AgentHealthServiceByName(service string) (string, []AgentServiceChecksInfo, error) {
+ path := fmt.Sprintf("/v1/agent/health/service/name/%v", url.PathEscape(service))
+ r := a.c.newRequest("GET", path)
+ r.params.Add("format", "json")
+ r.header.Set("Accept", "application/json")
+ _, resp, err := a.c.doRequest(r)
+ if err != nil {
+ return "", nil, err
+ }
+ defer resp.Body.Close()
+ // Service not Found
+ if resp.StatusCode == http.StatusNotFound {
+ return HealthCritical, nil, nil
+ }
+ var out []AgentServiceChecksInfo
+ if err := decodeBody(resp, &out); err != nil {
+ return HealthCritical, out, err
+ }
+ switch resp.StatusCode {
+ case http.StatusOK:
+ return HealthPassing, out, nil
+ case http.StatusTooManyRequests:
+ return HealthWarning, out, nil
+ case http.StatusServiceUnavailable:
+ return HealthCritical, out, nil
+ }
+ return HealthCritical, out, fmt.Errorf("Unexpected Error Code %v for %s", resp.StatusCode, path)
+}
+
+// Service returns a locally registered service instance and allows for
+// hash-based blocking.
+//
+// Note that this uses an unconventional blocking mechanism since it's
+// agent-local state. That means there is no persistent raft index so we block
+// based on object hash instead.
+func (a *Agent) Service(serviceID string, q *QueryOptions) (*AgentService, *QueryMeta, error) {
+ r := a.c.newRequest("GET", "/v1/agent/service/"+serviceID)
+ r.setQueryOptions(q)
+ rtt, resp, err := requireOK(a.c.doRequest(r))
+ if err != nil {
+ return nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ var out *AgentService
+ if err := decodeBody(resp, &out); err != nil {
+ return nil, nil, err
+ }
+
+ return out, qm, nil
+}
+
// Members returns the known gossip members. The WAN
// flag can be used to query a server for WAN members.
func (a *Agent) Members(wan bool) ([]*AgentMember, error) {
diff --git a/vendor/github.com/hashicorp/consul/api/api.go b/vendor/github.com/hashicorp/consul/api/api.go
index 64923830..b913fa36 100644
--- a/vendor/github.com/hashicorp/consul/api/api.go
+++ b/vendor/github.com/hashicorp/consul/api/api.go
@@ -61,6 +61,12 @@ const (
// HTTPSSLVerifyEnvName defines an environment variable name which sets
// whether or not to disable certificate checking.
HTTPSSLVerifyEnvName = "CONSUL_HTTP_SSL_VERIFY"
+
+ // GRPCAddrEnvName defines an environment variable name which sets the gRPC
+ // address for consul connect envoy. Note this isn't actually used by the api
+ // client in this package but is defined here for consistency with all the
+ // other ENV names we use.
+ GRPCAddrEnvName = "CONSUL_GRPC_ADDR"
)
// QueryOptions are used to parameterize a query
@@ -78,6 +84,27 @@ type QueryOptions struct {
// read.
RequireConsistent bool
+ // UseCache requests that the agent cache results locally. See
+ // https://www.consul.io/api/index.html#agent-caching for more details on the
+ // semantics.
+ UseCache bool
+
+ // MaxAge limits how old a cached value will be returned if UseCache is true.
+ // If there is a cached response that is older than the MaxAge, it is treated
+ // as a cache miss and a new fetch invoked. If the fetch fails, the error is
+ // returned. Clients that wish to allow for stale results on error can set
+ // StaleIfError to a longer duration to change this behaviour. It is ignored
+ // if the endpoint supports background refresh caching. See
+ // https://www.consul.io/api/index.html#agent-caching for more details.
+ MaxAge time.Duration
+
+ // StaleIfError specifies how stale the client will accept a cached response
+ // if the servers are unavailable to fetch a fresh one. Only makes sense when
+ // UseCache is true and MaxAge is set to a lower, non-zero value. It is
+ // ignored if the endpoint supports background refresh caching. See
+ // https://www.consul.io/api/index.html#agent-caching for more details.
+ StaleIfError time.Duration
+
// WaitIndex is used to enable a blocking query. Waits
// until the timeout or the next index is reached
WaitIndex uint64
@@ -196,6 +223,13 @@ type QueryMeta struct {
// Is address translation enabled for HTTP responses on this agent
AddressTranslationEnabled bool
+
+ // CacheHit is true if the result was served from agent-local cache.
+ CacheHit bool
+
+ // CacheAge is set if request was ?cached and indicates how stale the cached
+ // response is.
+ CacheAge time.Duration
}
// WriteMeta is used to return meta data about a write
@@ -276,7 +310,7 @@ type TLSConfig struct {
// DefaultConfig returns a default configuration for the client. By default this
// will pool and reuse idle connections to Consul. If you have a long-lived
// client object, this is the desired behavior and should make the most efficient
-// use of the connections to Consul. If you don't reuse a client object , which
+// use of the connections to Consul. If you don't reuse a client object, which
// is not recommended, then you may notice idle connections building up over
// time. To avoid this, use the DefaultNonPooledConfig() instead.
func DefaultConfig() *Config {
@@ -591,6 +625,20 @@ func (r *request) setQueryOptions(q *QueryOptions) {
if q.Connect {
r.params.Set("connect", "true")
}
+ if q.UseCache && !q.RequireConsistent {
+ r.params.Set("cached", "")
+
+ cc := []string{}
+ if q.MaxAge > 0 {
+ cc = append(cc, fmt.Sprintf("max-age=%.0f", q.MaxAge.Seconds()))
+ }
+ if q.StaleIfError > 0 {
+ cc = append(cc, fmt.Sprintf("stale-if-error=%.0f", q.StaleIfError.Seconds()))
+ }
+ if len(cc) > 0 {
+ r.header.Set("Cache-Control", strings.Join(cc, ", "))
+ }
+ }
r.ctx = q.ctx
}
@@ -725,7 +773,7 @@ func (c *Client) doRequest(r *request) (time.Duration, *http.Response, error) {
func (c *Client) query(endpoint string, out interface{}, q *QueryOptions) (*QueryMeta, error) {
r := c.newRequest("GET", endpoint)
r.setQueryOptions(q)
- rtt, resp, err := requireOK(c.doRequest(r))
+ rtt, resp, err := c.doRequest(r)
if err != nil {
return nil, err
}
@@ -802,6 +850,18 @@ func parseQueryMeta(resp *http.Response, q *QueryMeta) error {
q.AddressTranslationEnabled = false
}
+ // Parse Cache info
+ if cacheStr := header.Get("X-Cache"); cacheStr != "" {
+ q.CacheHit = strings.EqualFold(cacheStr, "HIT")
+ }
+ if ageStr := header.Get("Age"); ageStr != "" {
+ age, err := strconv.ParseUint(ageStr, 10, 64)
+ if err != nil {
+ return fmt.Errorf("Failed to parse Age Header: %v", err)
+ }
+ q.CacheAge = time.Duration(age) * time.Second
+ }
+
return nil
}
diff --git a/vendor/github.com/hashicorp/consul/api/catalog.go b/vendor/github.com/hashicorp/consul/api/catalog.go
index 6cb745c3..c175c3ff 100644
--- a/vendor/github.com/hashicorp/consul/api/catalog.go
+++ b/vendor/github.com/hashicorp/consul/api/catalog.go
@@ -31,8 +31,12 @@ type CatalogService struct {
ServicePort int
ServiceWeights Weights
ServiceEnableTagOverride bool
- CreateIndex uint64
- ModifyIndex uint64
+ // DEPRECATED (ProxyDestination) - remove the next comment!
+ // We forgot to ever add ServiceProxyDestination here so no need to deprecate!
+ ServiceProxy *AgentServiceConnectProxyConfig
+ CreateIndex uint64
+ Checks HealthChecks
+ ModifyIndex uint64
}
type CatalogNode struct {
@@ -49,6 +53,7 @@ type CatalogRegistration struct {
Datacenter string
Service *AgentService
Check *AgentCheck
+ Checks HealthChecks
SkipNodeUpdate bool
}
@@ -162,23 +167,43 @@ func (c *Catalog) Services(q *QueryOptions) (map[string][]string, *QueryMeta, er
// Service is used to query catalog entries for a given service
func (c *Catalog) Service(service, tag string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {
- return c.service(service, tag, q, false)
+ var tags []string
+ if tag != "" {
+ tags = []string{tag}
+ }
+ return c.service(service, tags, q, false)
+}
+
+// Supports multiple tags for filtering
+func (c *Catalog) ServiceMultipleTags(service string, tags []string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {
+ return c.service(service, tags, q, false)
}
// Connect is used to query catalog entries for a given Connect-enabled service
func (c *Catalog) Connect(service, tag string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {
- return c.service(service, tag, q, true)
+ var tags []string
+ if tag != "" {
+ tags = []string{tag}
+ }
+ return c.service(service, tags, q, true)
+}
+
+// Supports multiple tags for filtering
+func (c *Catalog) ConnectMultipleTags(service string, tags []string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {
+ return c.service(service, tags, q, true)
}
-func (c *Catalog) service(service, tag string, q *QueryOptions, connect bool) ([]*CatalogService, *QueryMeta, error) {
+func (c *Catalog) service(service string, tags []string, q *QueryOptions, connect bool) ([]*CatalogService, *QueryMeta, error) {
path := "/v1/catalog/service/" + service
if connect {
path = "/v1/catalog/connect/" + service
}
r := c.c.newRequest("GET", path)
r.setQueryOptions(q)
- if tag != "" {
- r.params.Set("tag", tag)
+ if len(tags) > 0 {
+ for _, tag := range tags {
+ r.params.Add("tag", tag)
+ }
}
rtt, resp, err := requireOK(c.c.doRequest(r))
if err != nil {
diff --git a/vendor/github.com/hashicorp/consul/api/connect_ca.go b/vendor/github.com/hashicorp/consul/api/connect_ca.go
index a863d21d..600a3e0d 100644
--- a/vendor/github.com/hashicorp/consul/api/connect_ca.go
+++ b/vendor/github.com/hashicorp/consul/api/connect_ca.go
@@ -23,7 +23,10 @@ type CAConfig struct {
// CommonCAProviderConfig is the common options available to all CA providers.
type CommonCAProviderConfig struct {
- LeafCertTTL time.Duration
+ LeafCertTTL time.Duration
+ SkipValidate bool
+ CSRMaxPerSecond float32
+ CSRMaxConcurrent int
}
// ConsulCAProviderConfig is the config for the built-in Consul CA provider.
@@ -41,7 +44,6 @@ func ParseConsulCAConfig(raw map[string]interface{}) (*ConsulCAProviderConfig, e
var config ConsulCAProviderConfig
decodeConf := &mapstructure.DecoderConfig{
DecodeHook: mapstructure.StringToTimeDurationHookFunc(),
- ErrorUnused: true,
Result: &config,
WeaklyTypedInput: true,
}
diff --git a/vendor/github.com/hashicorp/consul/api/debug.go b/vendor/github.com/hashicorp/consul/api/debug.go
new file mode 100644
index 00000000..23804685
--- /dev/null
+++ b/vendor/github.com/hashicorp/consul/api/debug.go
@@ -0,0 +1,106 @@
+package api
+
+import (
+ "fmt"
+ "io/ioutil"
+ "strconv"
+)
+
+// Debug can be used to query the /debug/pprof endpoints to gather
+// profiling information about the target agent.Debug
+//
+// The agent must have enable_debug set to true for profiling to be enabled
+// and for these endpoints to function.
+type Debug struct {
+ c *Client
+}
+
+// Debug returns a handle that exposes the internal debug endpoints.
+func (c *Client) Debug() *Debug {
+ return &Debug{c}
+}
+
+// Heap returns a pprof heap dump
+func (d *Debug) Heap() ([]byte, error) {
+ r := d.c.newRequest("GET", "/debug/pprof/heap")
+ _, resp, err := d.c.doRequest(r)
+ if err != nil {
+ return nil, fmt.Errorf("error making request: %s", err)
+ }
+ defer resp.Body.Close()
+
+ // We return a raw response because we're just passing through a response
+ // from the pprof handlers
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("error decoding body: %s", err)
+ }
+
+ return body, nil
+}
+
+// Profile returns a pprof CPU profile for the specified number of seconds
+func (d *Debug) Profile(seconds int) ([]byte, error) {
+ r := d.c.newRequest("GET", "/debug/pprof/profile")
+
+ // Capture a profile for the specified number of seconds
+ r.params.Set("seconds", strconv.Itoa(seconds))
+
+ _, resp, err := d.c.doRequest(r)
+ if err != nil {
+ return nil, fmt.Errorf("error making request: %s", err)
+ }
+ defer resp.Body.Close()
+
+ // We return a raw response because we're just passing through a response
+ // from the pprof handlers
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("error decoding body: %s", err)
+ }
+
+ return body, nil
+}
+
+// Trace returns an execution trace
+func (d *Debug) Trace(seconds int) ([]byte, error) {
+ r := d.c.newRequest("GET", "/debug/pprof/trace")
+
+ // Capture a trace for the specified number of seconds
+ r.params.Set("seconds", strconv.Itoa(seconds))
+
+ _, resp, err := d.c.doRequest(r)
+ if err != nil {
+ return nil, fmt.Errorf("error making request: %s", err)
+ }
+ defer resp.Body.Close()
+
+ // We return a raw response because we're just passing through a response
+ // from the pprof handlers
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("error decoding body: %s", err)
+ }
+
+ return body, nil
+}
+
+// Goroutine returns a pprof goroutine profile
+func (d *Debug) Goroutine() ([]byte, error) {
+ r := d.c.newRequest("GET", "/debug/pprof/goroutine")
+
+ _, resp, err := d.c.doRequest(r)
+ if err != nil {
+ return nil, fmt.Errorf("error making request: %s", err)
+ }
+ defer resp.Body.Close()
+
+ // We return a raw response because we're just passing through a response
+ // from the pprof handlers
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("error decoding body: %s", err)
+ }
+
+ return body, nil
+}
diff --git a/vendor/github.com/hashicorp/consul/api/health.go b/vendor/github.com/hashicorp/consul/api/health.go
index 1835da55..9faf6b66 100644
--- a/vendor/github.com/hashicorp/consul/api/health.go
+++ b/vendor/github.com/hashicorp/consul/api/health.go
@@ -1,8 +1,10 @@
package api
import (
+ "encoding/json"
"fmt"
"strings"
+ "time"
)
const (
@@ -36,21 +38,99 @@ type HealthCheck struct {
ServiceTags []string
Definition HealthCheckDefinition
+
+ CreateIndex uint64
+ ModifyIndex uint64
}
// HealthCheckDefinition is used to store the details about
// a health check's execution.
type HealthCheckDefinition struct {
- HTTP string
- Header map[string][]string
- Method string
- TLSSkipVerify bool
- TCP string
+ HTTP string
+ Header map[string][]string
+ Method string
+ TLSSkipVerify bool
+ TCP string
+ IntervalDuration time.Duration `json:"-"`
+ TimeoutDuration time.Duration `json:"-"`
+ DeregisterCriticalServiceAfterDuration time.Duration `json:"-"`
+
+ // DEPRECATED in Consul 1.4.1. Use the above time.Duration fields instead.
Interval ReadableDuration
Timeout ReadableDuration
DeregisterCriticalServiceAfter ReadableDuration
}
+func (d *HealthCheckDefinition) MarshalJSON() ([]byte, error) {
+ type Alias HealthCheckDefinition
+ out := &struct {
+ Interval string
+ Timeout string
+ DeregisterCriticalServiceAfter string
+ *Alias
+ }{
+ Interval: d.Interval.String(),
+ Timeout: d.Timeout.String(),
+ DeregisterCriticalServiceAfter: d.DeregisterCriticalServiceAfter.String(),
+ Alias: (*Alias)(d),
+ }
+
+ if d.IntervalDuration != 0 {
+ out.Interval = d.IntervalDuration.String()
+ } else if d.Interval != 0 {
+ out.Interval = d.Interval.String()
+ }
+ if d.TimeoutDuration != 0 {
+ out.Timeout = d.TimeoutDuration.String()
+ } else if d.Timeout != 0 {
+ out.Timeout = d.Timeout.String()
+ }
+ if d.DeregisterCriticalServiceAfterDuration != 0 {
+ out.DeregisterCriticalServiceAfter = d.DeregisterCriticalServiceAfterDuration.String()
+ } else if d.DeregisterCriticalServiceAfter != 0 {
+ out.DeregisterCriticalServiceAfter = d.DeregisterCriticalServiceAfter.String()
+ }
+
+ return json.Marshal(out)
+}
+
+func (d *HealthCheckDefinition) UnmarshalJSON(data []byte) error {
+ type Alias HealthCheckDefinition
+ aux := &struct {
+ Interval string
+ Timeout string
+ DeregisterCriticalServiceAfter string
+ *Alias
+ }{
+ Alias: (*Alias)(d),
+ }
+ if err := json.Unmarshal(data, &aux); err != nil {
+ return err
+ }
+
+ // Parse the values into both the time.Duration and old ReadableDuration fields.
+ var err error
+ if aux.Interval != "" {
+ if d.IntervalDuration, err = time.ParseDuration(aux.Interval); err != nil {
+ return err
+ }
+ d.Interval = ReadableDuration(d.IntervalDuration)
+ }
+ if aux.Timeout != "" {
+ if d.TimeoutDuration, err = time.ParseDuration(aux.Timeout); err != nil {
+ return err
+ }
+ d.Timeout = ReadableDuration(d.TimeoutDuration)
+ }
+ if aux.DeregisterCriticalServiceAfter != "" {
+ if d.DeregisterCriticalServiceAfterDuration, err = time.ParseDuration(aux.DeregisterCriticalServiceAfter); err != nil {
+ return err
+ }
+ d.DeregisterCriticalServiceAfter = ReadableDuration(d.DeregisterCriticalServiceAfterDuration)
+ }
+ return nil
+}
+
// HealthChecks is a collection of HealthCheck structs.
type HealthChecks []*HealthCheck
@@ -159,7 +239,15 @@ func (h *Health) Checks(service string, q *QueryOptions) (HealthChecks, *QueryMe
// for a given service. It can optionally do server-side filtering on a tag
// or nodes with passing health checks only.
func (h *Health) Service(service, tag string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {
- return h.service(service, tag, passingOnly, q, false)
+ var tags []string
+ if tag != "" {
+ tags = []string{tag}
+ }
+ return h.service(service, tags, passingOnly, q, false)
+}
+
+func (h *Health) ServiceMultipleTags(service string, tags []string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {
+ return h.service(service, tags, passingOnly, q, false)
}
// Connect is equivalent to Service except that it will only return services
@@ -168,18 +256,28 @@ func (h *Health) Service(service, tag string, passingOnly bool, q *QueryOptions)
// passingOnly is true only instances where both the service and any proxy are
// healthy will be returned.
func (h *Health) Connect(service, tag string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {
- return h.service(service, tag, passingOnly, q, true)
+ var tags []string
+ if tag != "" {
+ tags = []string{tag}
+ }
+ return h.service(service, tags, passingOnly, q, true)
}
-func (h *Health) service(service, tag string, passingOnly bool, q *QueryOptions, connect bool) ([]*ServiceEntry, *QueryMeta, error) {
+func (h *Health) ConnectMultipleTags(service string, tags []string, passingOnly bool, q *QueryOptions) ([]*ServiceEntry, *QueryMeta, error) {
+ return h.service(service, tags, passingOnly, q, true)
+}
+
+func (h *Health) service(service string, tags []string, passingOnly bool, q *QueryOptions, connect bool) ([]*ServiceEntry, *QueryMeta, error) {
path := "/v1/health/service/" + service
if connect {
path = "/v1/health/connect/" + service
}
r := h.c.newRequest("GET", path)
r.setQueryOptions(q)
- if tag != "" {
- r.params.Set("tag", tag)
+ if len(tags) > 0 {
+ for _, tag := range tags {
+ r.params.Add("tag", tag)
+ }
}
if passingOnly {
r.params.Set(HealthPassing, "1")
diff --git a/vendor/github.com/hashicorp/consul/api/kv.go b/vendor/github.com/hashicorp/consul/api/kv.go
index 97f51568..bd45a067 100644
--- a/vendor/github.com/hashicorp/consul/api/kv.go
+++ b/vendor/github.com/hashicorp/consul/api/kv.go
@@ -45,44 +45,6 @@ type KVPair struct {
// KVPairs is a list of KVPair objects
type KVPairs []*KVPair
-// KVOp constants give possible operations available in a KVTxn.
-type KVOp string
-
-const (
- KVSet KVOp = "set"
- KVDelete KVOp = "delete"
- KVDeleteCAS KVOp = "delete-cas"
- KVDeleteTree KVOp = "delete-tree"
- KVCAS KVOp = "cas"
- KVLock KVOp = "lock"
- KVUnlock KVOp = "unlock"
- KVGet KVOp = "get"
- KVGetTree KVOp = "get-tree"
- KVCheckSession KVOp = "check-session"
- KVCheckIndex KVOp = "check-index"
- KVCheckNotExists KVOp = "check-not-exists"
-)
-
-// KVTxnOp defines a single operation inside a transaction.
-type KVTxnOp struct {
- Verb KVOp
- Key string
- Value []byte
- Flags uint64
- Index uint64
- Session string
-}
-
-// KVTxnOps defines a set of operations to be performed inside a single
-// transaction.
-type KVTxnOps []*KVTxnOp
-
-// KVTxnResponse has the outcome of a transaction.
-type KVTxnResponse struct {
- Results []*KVPair
- Errors TxnErrors
-}
-
// KV is used to manipulate the K/V API
type KV struct {
c *Client
@@ -300,121 +262,25 @@ func (k *KV) deleteInternal(key string, params map[string]string, q *WriteOption
return res, qm, nil
}
-// TxnOp is the internal format we send to Consul. It's not specific to KV,
-// though currently only KV operations are supported.
-type TxnOp struct {
- KV *KVTxnOp
-}
-
-// TxnOps is a list of transaction operations.
-type TxnOps []*TxnOp
-
-// TxnResult is the internal format we receive from Consul.
-type TxnResult struct {
- KV *KVPair
-}
-
-// TxnResults is a list of TxnResult objects.
-type TxnResults []*TxnResult
-
-// TxnError is used to return information about an operation in a transaction.
-type TxnError struct {
- OpIndex int
- What string
-}
-
-// TxnErrors is a list of TxnError objects.
-type TxnErrors []*TxnError
-
-// TxnResponse is the internal format we receive from Consul.
-type TxnResponse struct {
- Results TxnResults
- Errors TxnErrors
-}
-
-// Txn is used to apply multiple KV operations in a single, atomic transaction.
-//
-// Note that Go will perform the required base64 encoding on the values
-// automatically because the type is a byte slice. Transactions are defined as a
-// list of operations to perform, using the KVOp constants and KVTxnOp structure
-// to define operations. If any operation fails, none of the changes are applied
-// to the state store. Note that this hides the internal raw transaction interface
-// and munges the input and output types into KV-specific ones for ease of use.
-// If there are more non-KV operations in the future we may break out a new
-// transaction API client, but it will be easy to keep this KV-specific variant
-// supported.
-//
-// Even though this is generally a write operation, we take a QueryOptions input
-// and return a QueryMeta output. If the transaction contains only read ops, then
-// Consul will fast-path it to a different endpoint internally which supports
-// consistency controls, but not blocking. If there are write operations then
-// the request will always be routed through raft and any consistency settings
-// will be ignored.
-//
-// Here's an example:
-//
-// ops := KVTxnOps{
-// &KVTxnOp{
-// Verb: KVLock,
-// Key: "test/lock",
-// Session: "adf4238a-882b-9ddc-4a9d-5b6758e4159e",
-// Value: []byte("hello"),
-// },
-// &KVTxnOp{
-// Verb: KVGet,
-// Key: "another/key",
-// },
-// }
-// ok, response, _, err := kv.Txn(&ops, nil)
-//
-// If there is a problem making the transaction request then an error will be
-// returned. Otherwise, the ok value will be true if the transaction succeeded
-// or false if it was rolled back. The response is a structured return value which
-// will have the outcome of the transaction. Its Results member will have entries
-// for each operation. Deleted keys will have a nil entry in the, and to save
-// space, the Value of each key in the Results will be nil unless the operation
-// is a KVGet. If the transaction was rolled back, the Errors member will have
-// entries referencing the index of the operation that failed along with an error
-// message.
+// The Txn function has been deprecated from the KV object; please see the Txn
+// object for more information about Transactions.
func (k *KV) Txn(txn KVTxnOps, q *QueryOptions) (bool, *KVTxnResponse, *QueryMeta, error) {
- r := k.c.newRequest("PUT", "/v1/txn")
- r.setQueryOptions(q)
-
- // Convert into the internal format since this is an all-KV txn.
- ops := make(TxnOps, 0, len(txn))
- for _, kvOp := range txn {
- ops = append(ops, &TxnOp{KV: kvOp})
+ var ops TxnOps
+ for _, op := range txn {
+ ops = append(ops, &TxnOp{KV: op})
}
- r.obj = ops
- rtt, resp, err := k.c.doRequest(r)
+
+ respOk, txnResp, qm, err := k.c.txn(ops, q)
if err != nil {
return false, nil, nil, err
}
- defer resp.Body.Close()
- qm := &QueryMeta{}
- parseQueryMeta(resp, qm)
- qm.RequestTime = rtt
-
- if resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusConflict {
- var txnResp TxnResponse
- if err := decodeBody(resp, &txnResp); err != nil {
- return false, nil, nil, err
- }
-
- // Convert from the internal format.
- kvResp := KVTxnResponse{
- Errors: txnResp.Errors,
- }
- for _, result := range txnResp.Results {
- kvResp.Results = append(kvResp.Results, result.KV)
- }
- return resp.StatusCode == http.StatusOK, &kvResp, qm, nil
+ // Convert from the internal format.
+ kvResp := KVTxnResponse{
+ Errors: txnResp.Errors,
}
-
- var buf bytes.Buffer
- if _, err := io.Copy(&buf, resp.Body); err != nil {
- return false, nil, nil, fmt.Errorf("Failed to read response: %v", err)
+ for _, result := range txnResp.Results {
+ kvResp.Results = append(kvResp.Results, result.KV)
}
- return false, nil, nil, fmt.Errorf("Failed request: %s", buf.String())
+ return respOk, &kvResp, qm, nil
}
diff --git a/vendor/github.com/hashicorp/consul/api/operator_keyring.go b/vendor/github.com/hashicorp/consul/api/operator_keyring.go
index 6b614296..038d5d5b 100644
--- a/vendor/github.com/hashicorp/consul/api/operator_keyring.go
+++ b/vendor/github.com/hashicorp/consul/api/operator_keyring.go
@@ -16,6 +16,9 @@ type KeyringResponse struct {
// Segment has the network segment this request corresponds to.
Segment string
+ // Messages has information or errors from serf
+ Messages map[string]string `json:",omitempty"`
+
// A map of the encryption keys to the number of nodes they're installed on
Keys map[string]int
diff --git a/vendor/github.com/hashicorp/consul/api/txn.go b/vendor/github.com/hashicorp/consul/api/txn.go
new file mode 100644
index 00000000..65d7a16e
--- /dev/null
+++ b/vendor/github.com/hashicorp/consul/api/txn.go
@@ -0,0 +1,230 @@
+package api
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "net/http"
+)
+
+// Txn is used to manipulate the Txn API
+type Txn struct {
+ c *Client
+}
+
+// Txn is used to return a handle to the K/V apis
+func (c *Client) Txn() *Txn {
+ return &Txn{c}
+}
+
+// TxnOp is the internal format we send to Consul. Currently only K/V and
+// check operations are supported.
+type TxnOp struct {
+ KV *KVTxnOp
+ Node *NodeTxnOp
+ Service *ServiceTxnOp
+ Check *CheckTxnOp
+}
+
+// TxnOps is a list of transaction operations.
+type TxnOps []*TxnOp
+
+// TxnResult is the internal format we receive from Consul.
+type TxnResult struct {
+ KV *KVPair
+ Node *Node
+ Service *CatalogService
+ Check *HealthCheck
+}
+
+// TxnResults is a list of TxnResult objects.
+type TxnResults []*TxnResult
+
+// TxnError is used to return information about an operation in a transaction.
+type TxnError struct {
+ OpIndex int
+ What string
+}
+
+// TxnErrors is a list of TxnError objects.
+type TxnErrors []*TxnError
+
+// TxnResponse is the internal format we receive from Consul.
+type TxnResponse struct {
+ Results TxnResults
+ Errors TxnErrors
+}
+
+// KVOp constants give possible operations available in a transaction.
+type KVOp string
+
+const (
+ KVSet KVOp = "set"
+ KVDelete KVOp = "delete"
+ KVDeleteCAS KVOp = "delete-cas"
+ KVDeleteTree KVOp = "delete-tree"
+ KVCAS KVOp = "cas"
+ KVLock KVOp = "lock"
+ KVUnlock KVOp = "unlock"
+ KVGet KVOp = "get"
+ KVGetTree KVOp = "get-tree"
+ KVCheckSession KVOp = "check-session"
+ KVCheckIndex KVOp = "check-index"
+ KVCheckNotExists KVOp = "check-not-exists"
+)
+
+// KVTxnOp defines a single operation inside a transaction.
+type KVTxnOp struct {
+ Verb KVOp
+ Key string
+ Value []byte
+ Flags uint64
+ Index uint64
+ Session string
+}
+
+// KVTxnOps defines a set of operations to be performed inside a single
+// transaction.
+type KVTxnOps []*KVTxnOp
+
+// KVTxnResponse has the outcome of a transaction.
+type KVTxnResponse struct {
+ Results []*KVPair
+ Errors TxnErrors
+}
+
+// NodeOp constants give possible operations available in a transaction.
+type NodeOp string
+
+const (
+ NodeGet NodeOp = "get"
+ NodeSet NodeOp = "set"
+ NodeCAS NodeOp = "cas"
+ NodeDelete NodeOp = "delete"
+ NodeDeleteCAS NodeOp = "delete-cas"
+)
+
+// NodeTxnOp defines a single operation inside a transaction.
+type NodeTxnOp struct {
+ Verb NodeOp
+ Node Node
+}
+
+// ServiceOp constants give possible operations available in a transaction.
+type ServiceOp string
+
+const (
+ ServiceGet ServiceOp = "get"
+ ServiceSet ServiceOp = "set"
+ ServiceCAS ServiceOp = "cas"
+ ServiceDelete ServiceOp = "delete"
+ ServiceDeleteCAS ServiceOp = "delete-cas"
+)
+
+// ServiceTxnOp defines a single operation inside a transaction.
+type ServiceTxnOp struct {
+ Verb ServiceOp
+ Node string
+ Service AgentService
+}
+
+// CheckOp constants give possible operations available in a transaction.
+type CheckOp string
+
+const (
+ CheckGet CheckOp = "get"
+ CheckSet CheckOp = "set"
+ CheckCAS CheckOp = "cas"
+ CheckDelete CheckOp = "delete"
+ CheckDeleteCAS CheckOp = "delete-cas"
+)
+
+// CheckTxnOp defines a single operation inside a transaction.
+type CheckTxnOp struct {
+ Verb CheckOp
+ Check HealthCheck
+}
+
+// Txn is used to apply multiple Consul operations in a single, atomic transaction.
+//
+// Note that Go will perform the required base64 encoding on the values
+// automatically because the type is a byte slice. Transactions are defined as a
+// list of operations to perform, using the different fields in the TxnOp structure
+// to define operations. If any operation fails, none of the changes are applied
+// to the state store.
+//
+// Even though this is generally a write operation, we take a QueryOptions input
+// and return a QueryMeta output. If the transaction contains only read ops, then
+// Consul will fast-path it to a different endpoint internally which supports
+// consistency controls, but not blocking. If there are write operations then
+// the request will always be routed through raft and any consistency settings
+// will be ignored.
+//
+// Here's an example:
+//
+// ops := KVTxnOps{
+// &KVTxnOp{
+// Verb: KVLock,
+// Key: "test/lock",
+// Session: "adf4238a-882b-9ddc-4a9d-5b6758e4159e",
+// Value: []byte("hello"),
+// },
+// &KVTxnOp{
+// Verb: KVGet,
+// Key: "another/key",
+// },
+// &CheckTxnOp{
+// Verb: CheckSet,
+// HealthCheck: HealthCheck{
+// Node: "foo",
+// CheckID: "redis:a",
+// Name: "Redis Health Check",
+// Status: "passing",
+// },
+// }
+// }
+// ok, response, _, err := kv.Txn(&ops, nil)
+//
+// If there is a problem making the transaction request then an error will be
+// returned. Otherwise, the ok value will be true if the transaction succeeded
+// or false if it was rolled back. The response is a structured return value which
+// will have the outcome of the transaction. Its Results member will have entries
+// for each operation. For KV operations, Deleted keys will have a nil entry in the
+// results, and to save space, the Value of each key in the Results will be nil
+// unless the operation is a KVGet. If the transaction was rolled back, the Errors
+// member will have entries referencing the index of the operation that failed
+// along with an error message.
+func (t *Txn) Txn(txn TxnOps, q *QueryOptions) (bool, *TxnResponse, *QueryMeta, error) {
+ return t.c.txn(txn, q)
+}
+
+func (c *Client) txn(txn TxnOps, q *QueryOptions) (bool, *TxnResponse, *QueryMeta, error) {
+ r := c.newRequest("PUT", "/v1/txn")
+ r.setQueryOptions(q)
+
+ r.obj = txn
+ rtt, resp, err := c.doRequest(r)
+ if err != nil {
+ return false, nil, nil, err
+ }
+ defer resp.Body.Close()
+
+ qm := &QueryMeta{}
+ parseQueryMeta(resp, qm)
+ qm.RequestTime = rtt
+
+ if resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusConflict {
+ var txnResp TxnResponse
+ if err := decodeBody(resp, &txnResp); err != nil {
+ return false, nil, nil, err
+ }
+
+ return resp.StatusCode == http.StatusOK, &txnResp, qm, nil
+ }
+
+ var buf bytes.Buffer
+ if _, err := io.Copy(&buf, resp.Body); err != nil {
+ return false, nil, nil, fmt.Errorf("Failed to read response: %v", err)
+ }
+ return false, nil, nil, fmt.Errorf("Failed request: %s", buf.String())
+}
diff --git a/vendor/github.com/hashicorp/consul/ui-v2/app/styles/components/notice.scss b/vendor/github.com/hashicorp/consul/ui-v2/app/styles/components/notice.scss
index e7b986db..3d0a22d2 100644
--- a/vendor/github.com/hashicorp/consul/ui-v2/app/styles/components/notice.scss
+++ b/vendor/github.com/hashicorp/consul/ui-v2/app/styles/components/notice.scss
@@ -2,3 +2,9 @@
.notice.warning {
@extend %notice-warning;
}
+.notice.info {
+ @extend %notice-info;
+}
+.notice.policy-management {
+ @extend %notice-highlight;
+}
diff --git a/vendor/github.com/hashicorp/consul/website/source/api/operator/license.html.md b/vendor/github.com/hashicorp/consul/website/source/api/operator/license.html.md
index 2908c4ba..dc2c2c37 100644
--- a/vendor/github.com/hashicorp/consul/website/source/api/operator/license.html.md
+++ b/vendor/github.com/hashicorp/consul/website/source/api/operator/license.html.md
@@ -25,12 +25,13 @@ This endpoint gets information about the current license.
The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
-[consistency modes](/api/index.html#consistency-modes), and
+[consistency modes](/api/index.html#consistency-modes),
+[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).
-| Blocking Queries | Consistency Modes | ACL Required |
-| ---------------- | ----------------- | ---------------- |
-| `NO` | `all` | `none` |
+| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
+| ---------------- | ----------------- | ------------- | ---------------- |
+| `NO` | `all` | `none` | `none` |
### Parameters
@@ -86,12 +87,13 @@ license contents as well as any warning messages regarding its validity.
The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
-[consistency modes](/api/index.html#consistency-modes), and
+[consistency modes](/api/index.html#consistency-modes),
+[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).
-| Blocking Queries | Consistency Modes | ACL Required |
-| ---------------- | ----------------- | ---------------- |
-| `NO` | `none` | `operator:write` |
+| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
+| ---------------- | ----------------- | ------------- | ---------------- |
+| `NO` | `none` | `none` | `operator:write` |
### Parameters
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/LICENSE b/vendor/github.com/hashicorp/go-immutable-radix/LICENSE
new file mode 100644
index 00000000..e87a115e
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/LICENSE
@@ -0,0 +1,363 @@
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+1.1. "Contributor"
+
+ means each individual or legal entity that creates, contributes to the
+ creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+
+ means the combination of the Contributions of others (if any) used by a
+ Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+
+ means Source Code Form to which the initial Contributor has attached the
+ notice in Exhibit A, the Executable Form of such Source Code Form, and
+ Modifications of such Source Code Form, in each case including portions
+ thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ a. that the initial Contributor has attached the notice described in
+ Exhibit B to the Covered Software; or
+
+ b. that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the terms of
+ a Secondary License.
+
+1.6. "Executable Form"
+
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+
+ means a work that combines Covered Software with other material, in a
+ separate file or files, that is not Covered Software.
+
+1.8. "License"
+
+ means this document.
+
+1.9. "Licensable"
+
+ means having the right to grant, to the maximum extent possible, whether
+ at the time of the initial grant or subsequently, any and all of the
+ rights conveyed by this License.
+
+1.10. "Modifications"
+
+ means any of the following:
+
+ a. any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered Software; or
+
+ b. any new file in Source Code Form that contains any Covered Software.
+
+1.11. "Patent Claims" of a Contributor
+
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the License,
+ by the making, using, selling, offering for sale, having made, import,
+ or transfer of either its Contributions or its Contributor Version.
+
+1.12. "Secondary License"
+
+ means either the GNU General Public License, Version 2.0, the GNU Lesser
+ General Public License, Version 2.1, the GNU Affero General Public
+ License, Version 3.0, or any later versions of those licenses.
+
+1.13. "Source Code Form"
+
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that controls, is
+ controlled by, or is under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+
+
+2. License Grants and Conditions
+
+2.1. Grants
+
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ a. under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+ b. under Patent Claims of such Contributor to make, use, sell, offer for
+ sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor first
+ distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+ The licenses granted in this Section 2 are the only rights granted under
+ this License. No additional rights or licenses will be implied from the
+ distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted by a
+ Contributor:
+
+ a. for any code that a Contributor has removed from Covered Software; or
+
+ b. for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+ c. under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License (if
+ permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights to
+ grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing, or other
+ equivalents.
+
+2.7. Conditions
+
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+ Section 2.1.
+
+
+3. Responsibilities
+
+3.1. Distribution of Source Form
+
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under
+ the terms of this License. You must inform recipients that the Source
+ Code Form of the Covered Software is governed by the terms of this
+ License, and how they can obtain a copy of this License. You may not
+ attempt to alter or restrict the recipients' rights in the Source Code
+ Form.
+
+3.2. Distribution of Executable Form
+
+ If You distribute Covered Software in Executable Form then:
+
+ a. such Covered Software must also be made available in Source Code Form,
+ as described in Section 3.1, and You must inform recipients of the
+ Executable Form how they can obtain a copy of such Source Code Form by
+ reasonable means in a timely manner, at a charge no more than the cost
+ of distribution to the recipient; and
+
+ b. You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter the
+ recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of Covered
+ Software with a work governed by one or more Secondary Licenses, and the
+ Covered Software is not Incompatible With Secondary Licenses, this
+ License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the Covered
+ Software under the terms of either this License or such Secondary
+ License(s).
+
+3.4. Notices
+
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty, or
+ limitations of liability) contained within the Source Code Form of the
+ Covered Software, except that You may alter any license notices to the
+ extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on
+ behalf of any Contributor. You must make it absolutely clear that any
+ such warranty, support, indemnity, or liability obligation is offered by
+ You alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+ If it is impossible for You to comply with any of the terms of this License
+ with respect to some or all of the Covered Software due to statute,
+ judicial order, or regulation then You must: (a) comply with the terms of
+ this License to the maximum extent possible; and (b) describe the
+ limitations and the code they affect. Such description must be placed in a
+ text file included with all distributions of the Covered Software under
+ this License. Except to the extent prohibited by statute or regulation,
+ such description must be sufficiently detailed for a recipient of ordinary
+ skill to be able to understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+ fail to comply with any of its terms. However, if You become compliant,
+ then the rights granted under this License from a particular Contributor
+ are reinstated (a) provisionally, unless and until such Contributor
+ explicitly and finally terminates Your grants, and (b) on an ongoing
+ basis, if such Contributor fails to notify You of the non-compliance by
+ some reasonable means prior to 60 days after You have come back into
+ compliance. Moreover, Your grants from a particular Contributor are
+ reinstated on an ongoing basis if such Contributor notifies You of the
+ non-compliance by some reasonable means, this is the first time You have
+ received notice of non-compliance with this License from such
+ Contributor, and You become compliant prior to 30 days after Your receipt
+ of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted to
+ You by any and all Contributors for the Covered Software under Section
+ 2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+ license agreements (excluding distributors and resellers) which have been
+ validly granted by You or Your distributors under this License prior to
+ termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+ Covered Software is provided under this License on an "as is" basis,
+ without warranty of any kind, either expressed, implied, or statutory,
+ including, without limitation, warranties that the Covered Software is free
+ of defects, merchantable, fit for a particular purpose or non-infringing.
+ The entire risk as to the quality and performance of the Covered Software
+ is with You. Should any Covered Software prove defective in any respect,
+ You (not any Contributor) assume the cost of any necessary servicing,
+ repair, or correction. This disclaimer of warranty constitutes an essential
+ part of this License. No use of any Covered Software is authorized under
+ this License except under this disclaimer.
+
+7. Limitation of Liability
+
+ Under no circumstances and under no legal theory, whether tort (including
+ negligence), contract, or otherwise, shall any Contributor, or anyone who
+ distributes Covered Software as permitted above, be liable to You for any
+ direct, indirect, special, incidental, or consequential damages of any
+ character including, without limitation, damages for lost profits, loss of
+ goodwill, work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses, even if such party shall have been
+ informed of the possibility of such damages. This limitation of liability
+ shall not apply to liability for death or personal injury resulting from
+ such party's negligence to the extent applicable law prohibits such
+ limitation. Some jurisdictions do not allow the exclusion or limitation of
+ incidental or consequential damages, so this exclusion and limitation may
+ not apply to You.
+
+8. Litigation
+
+ Any litigation relating to this License may be brought only in the courts
+ of a jurisdiction where the defendant maintains its principal place of
+ business and such litigation shall be governed by laws of that
+ jurisdiction, without reference to its conflict-of-law provisions. Nothing
+ in this Section shall prevent a party's ability to bring cross-claims or
+ counter-claims.
+
+9. Miscellaneous
+
+ This License represents the complete agreement concerning the subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides that
+ the language of a contract shall be construed against the drafter shall not
+ be used to construe this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+
+10.2. Effect of New Versions
+
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published by the license
+ steward.
+
+10.3. Modified Versions
+
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a
+ modified version of this License if you rename the license and remove
+ any references to the name of the license steward (except to note that
+ such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+ Licenses If You choose to distribute Source Code Form that is
+ Incompatible With Secondary Licenses under the terms of this version of
+ the License, the notice described in Exhibit B of this License must be
+ attached.
+
+Exhibit A - Source Code Form License Notice
+
+ This Source Code Form is subject to the
+ terms of the Mozilla Public License, v.
+ 2.0. If a copy of the MPL was not
+ distributed with this file, You can
+ obtain one at
+ http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file,
+then You may include the notice in a location (such as a LICENSE file in a
+relevant directory) where a recipient would be likely to look for such a
+notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+
+ This Source Code Form is "Incompatible
+ With Secondary Licenses", as defined by
+ the Mozilla Public License, v. 2.0.
+
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/edges.go b/vendor/github.com/hashicorp/go-immutable-radix/edges.go
new file mode 100644
index 00000000..a6367477
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/edges.go
@@ -0,0 +1,21 @@
+package iradix
+
+import "sort"
+
+type edges []edge
+
+func (e edges) Len() int {
+ return len(e)
+}
+
+func (e edges) Less(i, j int) bool {
+ return e[i].label < e[j].label
+}
+
+func (e edges) Swap(i, j int) {
+ e[i], e[j] = e[j], e[i]
+}
+
+func (e edges) Sort() {
+ sort.Sort(e)
+}
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/iradix.go b/vendor/github.com/hashicorp/go-immutable-radix/iradix.go
new file mode 100644
index 00000000..e5e6e57f
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/iradix.go
@@ -0,0 +1,662 @@
+package iradix
+
+import (
+ "bytes"
+ "strings"
+
+ "github.com/hashicorp/golang-lru/simplelru"
+)
+
+const (
+ // defaultModifiedCache is the default size of the modified node
+ // cache used per transaction. This is used to cache the updates
+ // to the nodes near the root, while the leaves do not need to be
+ // cached. This is important for very large transactions to prevent
+ // the modified cache from growing to be enormous. This is also used
+ // to set the max size of the mutation notify maps since those should
+ // also be bounded in a similar way.
+ defaultModifiedCache = 8192
+)
+
+// Tree implements an immutable radix tree. This can be treated as a
+// Dictionary abstract data type. The main advantage over a standard
+// hash map is prefix-based lookups and ordered iteration. The immutability
+// means that it is safe to concurrently read from a Tree without any
+// coordination.
+type Tree struct {
+ root *Node
+ size int
+}
+
+// New returns an empty Tree
+func New() *Tree {
+ t := &Tree{
+ root: &Node{
+ mutateCh: make(chan struct{}),
+ },
+ }
+ return t
+}
+
+// Len is used to return the number of elements in the tree
+func (t *Tree) Len() int {
+ return t.size
+}
+
+// Txn is a transaction on the tree. This transaction is applied
+// atomically and returns a new tree when committed. A transaction
+// is not thread safe, and should only be used by a single goroutine.
+type Txn struct {
+ // root is the modified root for the transaction.
+ root *Node
+
+ // snap is a snapshot of the root node for use if we have to run the
+ // slow notify algorithm.
+ snap *Node
+
+ // size tracks the size of the tree as it is modified during the
+ // transaction.
+ size int
+
+ // writable is a cache of writable nodes that have been created during
+ // the course of the transaction. This allows us to re-use the same
+ // nodes for further writes and avoid unnecessary copies of nodes that
+ // have never been exposed outside the transaction. This will only hold
+ // up to defaultModifiedCache number of entries.
+ writable *simplelru.LRU
+
+ // trackChannels is used to hold channels that need to be notified to
+ // signal mutation of the tree. This will only hold up to
+ // defaultModifiedCache number of entries, after which we will set the
+ // trackOverflow flag, which will cause us to use a more expensive
+ // algorithm to perform the notifications. Mutation tracking is only
+ // performed if trackMutate is true.
+ trackChannels map[chan struct{}]struct{}
+ trackOverflow bool
+ trackMutate bool
+}
+
+// Txn starts a new transaction that can be used to mutate the tree
+func (t *Tree) Txn() *Txn {
+ txn := &Txn{
+ root: t.root,
+ snap: t.root,
+ size: t.size,
+ }
+ return txn
+}
+
+// TrackMutate can be used to toggle if mutations are tracked. If this is enabled
+// then notifications will be issued for affected internal nodes and leaves when
+// the transaction is committed.
+func (t *Txn) TrackMutate(track bool) {
+ t.trackMutate = track
+}
+
+// trackChannel safely attempts to track the given mutation channel, setting the
+// overflow flag if we can no longer track any more. This limits the amount of
+// state that will accumulate during a transaction and we have a slower algorithm
+// to switch to if we overflow.
+func (t *Txn) trackChannel(ch chan struct{}) {
+ // In overflow, make sure we don't store any more objects.
+ if t.trackOverflow {
+ return
+ }
+
+ // If this would overflow the state we reject it and set the flag (since
+ // we aren't tracking everything that's required any longer).
+ if len(t.trackChannels) >= defaultModifiedCache {
+ // Mark that we are in the overflow state
+ t.trackOverflow = true
+
+ // Clear the map so that the channels can be garbage collected. It is
+ // safe to do this since we have already overflowed and will be using
+ // the slow notify algorithm.
+ t.trackChannels = nil
+ return
+ }
+
+ // Create the map on the fly when we need it.
+ if t.trackChannels == nil {
+ t.trackChannels = make(map[chan struct{}]struct{})
+ }
+
+ // Otherwise we are good to track it.
+ t.trackChannels[ch] = struct{}{}
+}
+
+// writeNode returns a node to be modified, if the current node has already been
+// modified during the course of the transaction, it is used in-place. Set
+// forLeafUpdate to true if you are getting a write node to update the leaf,
+// which will set leaf mutation tracking appropriately as well.
+func (t *Txn) writeNode(n *Node, forLeafUpdate bool) *Node {
+ // Ensure the writable set exists.
+ if t.writable == nil {
+ lru, err := simplelru.NewLRU(defaultModifiedCache, nil)
+ if err != nil {
+ panic(err)
+ }
+ t.writable = lru
+ }
+
+ // If this node has already been modified, we can continue to use it
+ // during this transaction. We know that we don't need to track it for
+ // a node update since the node is writable, but if this is for a leaf
+ // update we track it, in case the initial write to this node didn't
+ // update the leaf.
+ if _, ok := t.writable.Get(n); ok {
+ if t.trackMutate && forLeafUpdate && n.leaf != nil {
+ t.trackChannel(n.leaf.mutateCh)
+ }
+ return n
+ }
+
+ // Mark this node as being mutated.
+ if t.trackMutate {
+ t.trackChannel(n.mutateCh)
+ }
+
+ // Mark its leaf as being mutated, if appropriate.
+ if t.trackMutate && forLeafUpdate && n.leaf != nil {
+ t.trackChannel(n.leaf.mutateCh)
+ }
+
+ // Copy the existing node. If you have set forLeafUpdate it will be
+ // safe to replace this leaf with another after you get your node for
+ // writing. You MUST replace it, because the channel associated with
+ // this leaf will be closed when this transaction is committed.
+ nc := &Node{
+ mutateCh: make(chan struct{}),
+ leaf: n.leaf,
+ }
+ if n.prefix != nil {
+ nc.prefix = make([]byte, len(n.prefix))
+ copy(nc.prefix, n.prefix)
+ }
+ if len(n.edges) != 0 {
+ nc.edges = make([]edge, len(n.edges))
+ copy(nc.edges, n.edges)
+ }
+
+ // Mark this node as writable.
+ t.writable.Add(nc, nil)
+ return nc
+}
+
+// Visit all the nodes in the tree under n, and add their mutateChannels to the transaction
+// Returns the size of the subtree visited
+func (t *Txn) trackChannelsAndCount(n *Node) int {
+ // Count only leaf nodes
+ leaves := 0
+ if n.leaf != nil {
+ leaves = 1
+ }
+ // Mark this node as being mutated.
+ if t.trackMutate {
+ t.trackChannel(n.mutateCh)
+ }
+
+ // Mark its leaf as being mutated, if appropriate.
+ if t.trackMutate && n.leaf != nil {
+ t.trackChannel(n.leaf.mutateCh)
+ }
+
+ // Recurse on the children
+ for _, e := range n.edges {
+ leaves += t.trackChannelsAndCount(e.node)
+ }
+ return leaves
+}
+
+// mergeChild is called to collapse the given node with its child. This is only
+// called when the given node is not a leaf and has a single edge.
+func (t *Txn) mergeChild(n *Node) {
+ // Mark the child node as being mutated since we are about to abandon
+ // it. We don't need to mark the leaf since we are retaining it if it
+ // is there.
+ e := n.edges[0]
+ child := e.node
+ if t.trackMutate {
+ t.trackChannel(child.mutateCh)
+ }
+
+ // Merge the nodes.
+ n.prefix = concat(n.prefix, child.prefix)
+ n.leaf = child.leaf
+ if len(child.edges) != 0 {
+ n.edges = make([]edge, len(child.edges))
+ copy(n.edges, child.edges)
+ } else {
+ n.edges = nil
+ }
+}
+
+// insert does a recursive insertion
+func (t *Txn) insert(n *Node, k, search []byte, v interface{}) (*Node, interface{}, bool) {
+ // Handle key exhaustion
+ if len(search) == 0 {
+ var oldVal interface{}
+ didUpdate := false
+ if n.isLeaf() {
+ oldVal = n.leaf.val
+ didUpdate = true
+ }
+
+ nc := t.writeNode(n, true)
+ nc.leaf = &leafNode{
+ mutateCh: make(chan struct{}),
+ key: k,
+ val: v,
+ }
+ return nc, oldVal, didUpdate
+ }
+
+ // Look for the edge
+ idx, child := n.getEdge(search[0])
+
+ // No edge, create one
+ if child == nil {
+ e := edge{
+ label: search[0],
+ node: &Node{
+ mutateCh: make(chan struct{}),
+ leaf: &leafNode{
+ mutateCh: make(chan struct{}),
+ key: k,
+ val: v,
+ },
+ prefix: search,
+ },
+ }
+ nc := t.writeNode(n, false)
+ nc.addEdge(e)
+ return nc, nil, false
+ }
+
+ // Determine longest prefix of the search key on match
+ commonPrefix := longestPrefix(search, child.prefix)
+ if commonPrefix == len(child.prefix) {
+ search = search[commonPrefix:]
+ newChild, oldVal, didUpdate := t.insert(child, k, search, v)
+ if newChild != nil {
+ nc := t.writeNode(n, false)
+ nc.edges[idx].node = newChild
+ return nc, oldVal, didUpdate
+ }
+ return nil, oldVal, didUpdate
+ }
+
+ // Split the node
+ nc := t.writeNode(n, false)
+ splitNode := &Node{
+ mutateCh: make(chan struct{}),
+ prefix: search[:commonPrefix],
+ }
+ nc.replaceEdge(edge{
+ label: search[0],
+ node: splitNode,
+ })
+
+ // Restore the existing child node
+ modChild := t.writeNode(child, false)
+ splitNode.addEdge(edge{
+ label: modChild.prefix[commonPrefix],
+ node: modChild,
+ })
+ modChild.prefix = modChild.prefix[commonPrefix:]
+
+ // Create a new leaf node
+ leaf := &leafNode{
+ mutateCh: make(chan struct{}),
+ key: k,
+ val: v,
+ }
+
+ // If the new key is a subset, add to to this node
+ search = search[commonPrefix:]
+ if len(search) == 0 {
+ splitNode.leaf = leaf
+ return nc, nil, false
+ }
+
+ // Create a new edge for the node
+ splitNode.addEdge(edge{
+ label: search[0],
+ node: &Node{
+ mutateCh: make(chan struct{}),
+ leaf: leaf,
+ prefix: search,
+ },
+ })
+ return nc, nil, false
+}
+
+// delete does a recursive deletion
+func (t *Txn) delete(parent, n *Node, search []byte) (*Node, *leafNode) {
+ // Check for key exhaustion
+ if len(search) == 0 {
+ if !n.isLeaf() {
+ return nil, nil
+ }
+ // Copy the pointer in case we are in a transaction that already
+ // modified this node since the node will be reused. Any changes
+ // made to the node will not affect returning the original leaf
+ // value.
+ oldLeaf := n.leaf
+
+ // Remove the leaf node
+ nc := t.writeNode(n, true)
+ nc.leaf = nil
+
+ // Check if this node should be merged
+ if n != t.root && len(nc.edges) == 1 {
+ t.mergeChild(nc)
+ }
+ return nc, oldLeaf
+ }
+
+ // Look for an edge
+ label := search[0]
+ idx, child := n.getEdge(label)
+ if child == nil || !bytes.HasPrefix(search, child.prefix) {
+ return nil, nil
+ }
+
+ // Consume the search prefix
+ search = search[len(child.prefix):]
+ newChild, leaf := t.delete(n, child, search)
+ if newChild == nil {
+ return nil, nil
+ }
+
+ // Copy this node. WATCH OUT - it's safe to pass "false" here because we
+ // will only ADD a leaf via nc.mergeChild() if there isn't one due to
+ // the !nc.isLeaf() check in the logic just below. This is pretty subtle,
+ // so be careful if you change any of the logic here.
+ nc := t.writeNode(n, false)
+
+ // Delete the edge if the node has no edges
+ if newChild.leaf == nil && len(newChild.edges) == 0 {
+ nc.delEdge(label)
+ if n != t.root && len(nc.edges) == 1 && !nc.isLeaf() {
+ t.mergeChild(nc)
+ }
+ } else {
+ nc.edges[idx].node = newChild
+ }
+ return nc, leaf
+}
+
+// delete does a recursive deletion
+func (t *Txn) deletePrefix(parent, n *Node, search []byte) (*Node, int) {
+ // Check for key exhaustion
+ if len(search) == 0 {
+ nc := t.writeNode(n, true)
+ if n.isLeaf() {
+ nc.leaf = nil
+ }
+ nc.edges = nil
+ return nc, t.trackChannelsAndCount(n)
+ }
+
+ // Look for an edge
+ label := search[0]
+ idx, child := n.getEdge(label)
+ // We make sure that either the child node's prefix starts with the search term, or the search term starts with the child node's prefix
+ // Need to do both so that we can delete prefixes that don't correspond to any node in the tree
+ if child == nil || (!bytes.HasPrefix(child.prefix, search) && !bytes.HasPrefix(search, child.prefix)) {
+ return nil, 0
+ }
+
+ // Consume the search prefix
+ if len(child.prefix) > len(search) {
+ search = []byte("")
+ } else {
+ search = search[len(child.prefix):]
+ }
+ newChild, numDeletions := t.deletePrefix(n, child, search)
+ if newChild == nil {
+ return nil, 0
+ }
+ // Copy this node. WATCH OUT - it's safe to pass "false" here because we
+ // will only ADD a leaf via nc.mergeChild() if there isn't one due to
+ // the !nc.isLeaf() check in the logic just below. This is pretty subtle,
+ // so be careful if you change any of the logic here.
+
+ nc := t.writeNode(n, false)
+
+ // Delete the edge if the node has no edges
+ if newChild.leaf == nil && len(newChild.edges) == 0 {
+ nc.delEdge(label)
+ if n != t.root && len(nc.edges) == 1 && !nc.isLeaf() {
+ t.mergeChild(nc)
+ }
+ } else {
+ nc.edges[idx].node = newChild
+ }
+ return nc, numDeletions
+}
+
+// Insert is used to add or update a given key. The return provides
+// the previous value and a bool indicating if any was set.
+func (t *Txn) Insert(k []byte, v interface{}) (interface{}, bool) {
+ newRoot, oldVal, didUpdate := t.insert(t.root, k, k, v)
+ if newRoot != nil {
+ t.root = newRoot
+ }
+ if !didUpdate {
+ t.size++
+ }
+ return oldVal, didUpdate
+}
+
+// Delete is used to delete a given key. Returns the old value if any,
+// and a bool indicating if the key was set.
+func (t *Txn) Delete(k []byte) (interface{}, bool) {
+ newRoot, leaf := t.delete(nil, t.root, k)
+ if newRoot != nil {
+ t.root = newRoot
+ }
+ if leaf != nil {
+ t.size--
+ return leaf.val, true
+ }
+ return nil, false
+}
+
+// DeletePrefix is used to delete an entire subtree that matches the prefix
+// This will delete all nodes under that prefix
+func (t *Txn) DeletePrefix(prefix []byte) bool {
+ newRoot, numDeletions := t.deletePrefix(nil, t.root, prefix)
+ if newRoot != nil {
+ t.root = newRoot
+ t.size = t.size - numDeletions
+ return true
+ }
+ return false
+
+}
+
+// Root returns the current root of the radix tree within this
+// transaction. The root is not safe across insert and delete operations,
+// but can be used to read the current state during a transaction.
+func (t *Txn) Root() *Node {
+ return t.root
+}
+
+// Get is used to lookup a specific key, returning
+// the value and if it was found
+func (t *Txn) Get(k []byte) (interface{}, bool) {
+ return t.root.Get(k)
+}
+
+// GetWatch is used to lookup a specific key, returning
+// the watch channel, value and if it was found
+func (t *Txn) GetWatch(k []byte) (<-chan struct{}, interface{}, bool) {
+ return t.root.GetWatch(k)
+}
+
+// Commit is used to finalize the transaction and return a new tree. If mutation
+// tracking is turned on then notifications will also be issued.
+func (t *Txn) Commit() *Tree {
+ nt := t.CommitOnly()
+ if t.trackMutate {
+ t.Notify()
+ }
+ return nt
+}
+
+// CommitOnly is used to finalize the transaction and return a new tree, but
+// does not issue any notifications until Notify is called.
+func (t *Txn) CommitOnly() *Tree {
+ nt := &Tree{t.root, t.size}
+ t.writable = nil
+ return nt
+}
+
+// slowNotify does a complete comparison of the before and after trees in order
+// to trigger notifications. This doesn't require any additional state but it
+// is very expensive to compute.
+func (t *Txn) slowNotify() {
+ snapIter := t.snap.rawIterator()
+ rootIter := t.root.rawIterator()
+ for snapIter.Front() != nil || rootIter.Front() != nil {
+ // If we've exhausted the nodes in the old snapshot, we know
+ // there's nothing remaining to notify.
+ if snapIter.Front() == nil {
+ return
+ }
+ snapElem := snapIter.Front()
+
+ // If we've exhausted the nodes in the new root, we know we need
+ // to invalidate everything that remains in the old snapshot. We
+ // know from the loop condition there's something in the old
+ // snapshot.
+ if rootIter.Front() == nil {
+ close(snapElem.mutateCh)
+ if snapElem.isLeaf() {
+ close(snapElem.leaf.mutateCh)
+ }
+ snapIter.Next()
+ continue
+ }
+
+ // Do one string compare so we can check the various conditions
+ // below without repeating the compare.
+ cmp := strings.Compare(snapIter.Path(), rootIter.Path())
+
+ // If the snapshot is behind the root, then we must have deleted
+ // this node during the transaction.
+ if cmp < 0 {
+ close(snapElem.mutateCh)
+ if snapElem.isLeaf() {
+ close(snapElem.leaf.mutateCh)
+ }
+ snapIter.Next()
+ continue
+ }
+
+ // If the snapshot is ahead of the root, then we must have added
+ // this node during the transaction.
+ if cmp > 0 {
+ rootIter.Next()
+ continue
+ }
+
+ // If we have the same path, then we need to see if we mutated a
+ // node and possibly the leaf.
+ rootElem := rootIter.Front()
+ if snapElem != rootElem {
+ close(snapElem.mutateCh)
+ if snapElem.leaf != nil && (snapElem.leaf != rootElem.leaf) {
+ close(snapElem.leaf.mutateCh)
+ }
+ }
+ snapIter.Next()
+ rootIter.Next()
+ }
+}
+
+// Notify is used along with TrackMutate to trigger notifications. This must
+// only be done once a transaction is committed via CommitOnly, and it is called
+// automatically by Commit.
+func (t *Txn) Notify() {
+ if !t.trackMutate {
+ return
+ }
+
+ // If we've overflowed the tracking state we can't use it in any way and
+ // need to do a full tree compare.
+ if t.trackOverflow {
+ t.slowNotify()
+ } else {
+ for ch := range t.trackChannels {
+ close(ch)
+ }
+ }
+
+ // Clean up the tracking state so that a re-notify is safe (will trigger
+ // the else clause above which will be a no-op).
+ t.trackChannels = nil
+ t.trackOverflow = false
+}
+
+// Insert is used to add or update a given key. The return provides
+// the new tree, previous value and a bool indicating if any was set.
+func (t *Tree) Insert(k []byte, v interface{}) (*Tree, interface{}, bool) {
+ txn := t.Txn()
+ old, ok := txn.Insert(k, v)
+ return txn.Commit(), old, ok
+}
+
+// Delete is used to delete a given key. Returns the new tree,
+// old value if any, and a bool indicating if the key was set.
+func (t *Tree) Delete(k []byte) (*Tree, interface{}, bool) {
+ txn := t.Txn()
+ old, ok := txn.Delete(k)
+ return txn.Commit(), old, ok
+}
+
+// DeletePrefix is used to delete all nodes starting with a given prefix. Returns the new tree,
+// and a bool indicating if the prefix matched any nodes
+func (t *Tree) DeletePrefix(k []byte) (*Tree, bool) {
+ txn := t.Txn()
+ ok := txn.DeletePrefix(k)
+ return txn.Commit(), ok
+}
+
+// Root returns the root node of the tree which can be used for richer
+// query operations.
+func (t *Tree) Root() *Node {
+ return t.root
+}
+
+// Get is used to lookup a specific key, returning
+// the value and if it was found
+func (t *Tree) Get(k []byte) (interface{}, bool) {
+ return t.root.Get(k)
+}
+
+// longestPrefix finds the length of the shared prefix
+// of two strings
+func longestPrefix(k1, k2 []byte) int {
+ max := len(k1)
+ if l := len(k2); l < max {
+ max = l
+ }
+ var i int
+ for i = 0; i < max; i++ {
+ if k1[i] != k2[i] {
+ break
+ }
+ }
+ return i
+}
+
+// concat two byte slices, returning a third new copy
+func concat(a, b []byte) []byte {
+ c := make([]byte, len(a)+len(b))
+ copy(c, a)
+ copy(c[len(a):], b)
+ return c
+}
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/iter.go b/vendor/github.com/hashicorp/go-immutable-radix/iter.go
new file mode 100644
index 00000000..9815e025
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/iter.go
@@ -0,0 +1,91 @@
+package iradix
+
+import "bytes"
+
+// Iterator is used to iterate over a set of nodes
+// in pre-order
+type Iterator struct {
+ node *Node
+ stack []edges
+}
+
+// SeekPrefixWatch is used to seek the iterator to a given prefix
+// and returns the watch channel of the finest granularity
+func (i *Iterator) SeekPrefixWatch(prefix []byte) (watch <-chan struct{}) {
+ // Wipe the stack
+ i.stack = nil
+ n := i.node
+ watch = n.mutateCh
+ search := prefix
+ for {
+ // Check for key exhaution
+ if len(search) == 0 {
+ i.node = n
+ return
+ }
+
+ // Look for an edge
+ _, n = n.getEdge(search[0])
+ if n == nil {
+ i.node = nil
+ return
+ }
+
+ // Update to the finest granularity as the search makes progress
+ watch = n.mutateCh
+
+ // Consume the search prefix
+ if bytes.HasPrefix(search, n.prefix) {
+ search = search[len(n.prefix):]
+
+ } else if bytes.HasPrefix(n.prefix, search) {
+ i.node = n
+ return
+ } else {
+ i.node = nil
+ return
+ }
+ }
+}
+
+// SeekPrefix is used to seek the iterator to a given prefix
+func (i *Iterator) SeekPrefix(prefix []byte) {
+ i.SeekPrefixWatch(prefix)
+}
+
+// Next returns the next node in order
+func (i *Iterator) Next() ([]byte, interface{}, bool) {
+ // Initialize our stack if needed
+ if i.stack == nil && i.node != nil {
+ i.stack = []edges{
+ edges{
+ edge{node: i.node},
+ },
+ }
+ }
+
+ for len(i.stack) > 0 {
+ // Inspect the last element of the stack
+ n := len(i.stack)
+ last := i.stack[n-1]
+ elem := last[0].node
+
+ // Update the stack
+ if len(last) > 1 {
+ i.stack[n-1] = last[1:]
+ } else {
+ i.stack = i.stack[:n-1]
+ }
+
+ // Push the edges onto the frontier
+ if len(elem.edges) > 0 {
+ i.stack = append(i.stack, elem.edges)
+ }
+
+ // Return the leaf values if any
+ if elem.leaf != nil {
+ return elem.leaf.key, elem.leaf.val, true
+ }
+ }
+ return nil, nil, false
+}
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/node.go b/vendor/github.com/hashicorp/go-immutable-radix/node.go
new file mode 100644
index 00000000..7a065e7a
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/node.go
@@ -0,0 +1,292 @@
+package iradix
+
+import (
+ "bytes"
+ "sort"
+)
+
+// WalkFn is used when walking the tree. Takes a
+// key and value, returning if iteration should
+// be terminated.
+type WalkFn func(k []byte, v interface{}) bool
+
+// leafNode is used to represent a value
+type leafNode struct {
+ mutateCh chan struct{}
+ key []byte
+ val interface{}
+}
+
+// edge is used to represent an edge node
+type edge struct {
+ label byte
+ node *Node
+}
+
+// Node is an immutable node in the radix tree
+type Node struct {
+ // mutateCh is closed if this node is modified
+ mutateCh chan struct{}
+
+ // leaf is used to store possible leaf
+ leaf *leafNode
+
+ // prefix is the common prefix we ignore
+ prefix []byte
+
+ // Edges should be stored in-order for iteration.
+ // We avoid a fully materialized slice to save memory,
+ // since in most cases we expect to be sparse
+ edges edges
+}
+
+func (n *Node) isLeaf() bool {
+ return n.leaf != nil
+}
+
+func (n *Node) addEdge(e edge) {
+ num := len(n.edges)
+ idx := sort.Search(num, func(i int) bool {
+ return n.edges[i].label >= e.label
+ })
+ n.edges = append(n.edges, e)
+ if idx != num {
+ copy(n.edges[idx+1:], n.edges[idx:num])
+ n.edges[idx] = e
+ }
+}
+
+func (n *Node) replaceEdge(e edge) {
+ num := len(n.edges)
+ idx := sort.Search(num, func(i int) bool {
+ return n.edges[i].label >= e.label
+ })
+ if idx < num && n.edges[idx].label == e.label {
+ n.edges[idx].node = e.node
+ return
+ }
+ panic("replacing missing edge")
+}
+
+func (n *Node) getEdge(label byte) (int, *Node) {
+ num := len(n.edges)
+ idx := sort.Search(num, func(i int) bool {
+ return n.edges[i].label >= label
+ })
+ if idx < num && n.edges[idx].label == label {
+ return idx, n.edges[idx].node
+ }
+ return -1, nil
+}
+
+func (n *Node) delEdge(label byte) {
+ num := len(n.edges)
+ idx := sort.Search(num, func(i int) bool {
+ return n.edges[i].label >= label
+ })
+ if idx < num && n.edges[idx].label == label {
+ copy(n.edges[idx:], n.edges[idx+1:])
+ n.edges[len(n.edges)-1] = edge{}
+ n.edges = n.edges[:len(n.edges)-1]
+ }
+}
+
+func (n *Node) GetWatch(k []byte) (<-chan struct{}, interface{}, bool) {
+ search := k
+ watch := n.mutateCh
+ for {
+ // Check for key exhaustion
+ if len(search) == 0 {
+ if n.isLeaf() {
+ return n.leaf.mutateCh, n.leaf.val, true
+ }
+ break
+ }
+
+ // Look for an edge
+ _, n = n.getEdge(search[0])
+ if n == nil {
+ break
+ }
+
+ // Update to the finest granularity as the search makes progress
+ watch = n.mutateCh
+
+ // Consume the search prefix
+ if bytes.HasPrefix(search, n.prefix) {
+ search = search[len(n.prefix):]
+ } else {
+ break
+ }
+ }
+ return watch, nil, false
+}
+
+func (n *Node) Get(k []byte) (interface{}, bool) {
+ _, val, ok := n.GetWatch(k)
+ return val, ok
+}
+
+// LongestPrefix is like Get, but instead of an
+// exact match, it will return the longest prefix match.
+func (n *Node) LongestPrefix(k []byte) ([]byte, interface{}, bool) {
+ var last *leafNode
+ search := k
+ for {
+ // Look for a leaf node
+ if n.isLeaf() {
+ last = n.leaf
+ }
+
+ // Check for key exhaution
+ if len(search) == 0 {
+ break
+ }
+
+ // Look for an edge
+ _, n = n.getEdge(search[0])
+ if n == nil {
+ break
+ }
+
+ // Consume the search prefix
+ if bytes.HasPrefix(search, n.prefix) {
+ search = search[len(n.prefix):]
+ } else {
+ break
+ }
+ }
+ if last != nil {
+ return last.key, last.val, true
+ }
+ return nil, nil, false
+}
+
+// Minimum is used to return the minimum value in the tree
+func (n *Node) Minimum() ([]byte, interface{}, bool) {
+ for {
+ if n.isLeaf() {
+ return n.leaf.key, n.leaf.val, true
+ }
+ if len(n.edges) > 0 {
+ n = n.edges[0].node
+ } else {
+ break
+ }
+ }
+ return nil, nil, false
+}
+
+// Maximum is used to return the maximum value in the tree
+func (n *Node) Maximum() ([]byte, interface{}, bool) {
+ for {
+ if num := len(n.edges); num > 0 {
+ n = n.edges[num-1].node
+ continue
+ }
+ if n.isLeaf() {
+ return n.leaf.key, n.leaf.val, true
+ } else {
+ break
+ }
+ }
+ return nil, nil, false
+}
+
+// Iterator is used to return an iterator at
+// the given node to walk the tree
+func (n *Node) Iterator() *Iterator {
+ return &Iterator{node: n}
+}
+
+// rawIterator is used to return a raw iterator at the given node to walk the
+// tree.
+func (n *Node) rawIterator() *rawIterator {
+ iter := &rawIterator{node: n}
+ iter.Next()
+ return iter
+}
+
+// Walk is used to walk the tree
+func (n *Node) Walk(fn WalkFn) {
+ recursiveWalk(n, fn)
+}
+
+// WalkPrefix is used to walk the tree under a prefix
+func (n *Node) WalkPrefix(prefix []byte, fn WalkFn) {
+ search := prefix
+ for {
+ // Check for key exhaution
+ if len(search) == 0 {
+ recursiveWalk(n, fn)
+ return
+ }
+
+ // Look for an edge
+ _, n = n.getEdge(search[0])
+ if n == nil {
+ break
+ }
+
+ // Consume the search prefix
+ if bytes.HasPrefix(search, n.prefix) {
+ search = search[len(n.prefix):]
+
+ } else if bytes.HasPrefix(n.prefix, search) {
+ // Child may be under our search prefix
+ recursiveWalk(n, fn)
+ return
+ } else {
+ break
+ }
+ }
+}
+
+// WalkPath is used to walk the tree, but only visiting nodes
+// from the root down to a given leaf. Where WalkPrefix walks
+// all the entries *under* the given prefix, this walks the
+// entries *above* the given prefix.
+func (n *Node) WalkPath(path []byte, fn WalkFn) {
+ search := path
+ for {
+ // Visit the leaf values if any
+ if n.leaf != nil && fn(n.leaf.key, n.leaf.val) {
+ return
+ }
+
+ // Check for key exhaution
+ if len(search) == 0 {
+ return
+ }
+
+ // Look for an edge
+ _, n = n.getEdge(search[0])
+ if n == nil {
+ return
+ }
+
+ // Consume the search prefix
+ if bytes.HasPrefix(search, n.prefix) {
+ search = search[len(n.prefix):]
+ } else {
+ break
+ }
+ }
+}
+
+// recursiveWalk is used to do a pre-order walk of a node
+// recursively. Returns true if the walk should be aborted
+func recursiveWalk(n *Node, fn WalkFn) bool {
+ // Visit the leaf values if any
+ if n.leaf != nil && fn(n.leaf.key, n.leaf.val) {
+ return true
+ }
+
+ // Recurse on the children
+ for _, e := range n.edges {
+ if recursiveWalk(e.node, fn) {
+ return true
+ }
+ }
+ return false
+}
diff --git a/vendor/github.com/hashicorp/go-immutable-radix/raw_iter.go b/vendor/github.com/hashicorp/go-immutable-radix/raw_iter.go
new file mode 100644
index 00000000..04814c13
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-immutable-radix/raw_iter.go
@@ -0,0 +1,78 @@
+package iradix
+
+// rawIterator visits each of the nodes in the tree, even the ones that are not
+// leaves. It keeps track of the effective path (what a leaf at a given node
+// would be called), which is useful for comparing trees.
+type rawIterator struct {
+ // node is the starting node in the tree for the iterator.
+ node *Node
+
+ // stack keeps track of edges in the frontier.
+ stack []rawStackEntry
+
+ // pos is the current position of the iterator.
+ pos *Node
+
+ // path is the effective path of the current iterator position,
+ // regardless of whether the current node is a leaf.
+ path string
+}
+
+// rawStackEntry is used to keep track of the cumulative common path as well as
+// its associated edges in the frontier.
+type rawStackEntry struct {
+ path string
+ edges edges
+}
+
+// Front returns the current node that has been iterated to.
+func (i *rawIterator) Front() *Node {
+ return i.pos
+}
+
+// Path returns the effective path of the current node, even if it's not actually
+// a leaf.
+func (i *rawIterator) Path() string {
+ return i.path
+}
+
+// Next advances the iterator to the next node.
+func (i *rawIterator) Next() {
+ // Initialize our stack if needed.
+ if i.stack == nil && i.node != nil {
+ i.stack = []rawStackEntry{
+ rawStackEntry{
+ edges: edges{
+ edge{node: i.node},
+ },
+ },
+ }
+ }
+
+ for len(i.stack) > 0 {
+ // Inspect the last element of the stack.
+ n := len(i.stack)
+ last := i.stack[n-1]
+ elem := last.edges[0].node
+
+ // Update the stack.
+ if len(last.edges) > 1 {
+ i.stack[n-1].edges = last.edges[1:]
+ } else {
+ i.stack = i.stack[:n-1]
+ }
+
+ // Push the edges onto the frontier.
+ if len(elem.edges) > 0 {
+ path := last.path + string(elem.prefix)
+ i.stack = append(i.stack, rawStackEntry{path, elem.edges})
+ }
+
+ i.pos = elem
+ i.path = last.path + string(elem.prefix)
+ return
+ }
+
+ i.pos = nil
+ i.path = ""
+}
diff --git a/vendor/github.com/hashicorp/go-retryablehttp/client.go b/vendor/github.com/hashicorp/go-retryablehttp/client.go
index 21f45e5e..15f1e885 100644
--- a/vendor/github.com/hashicorp/go-retryablehttp/client.go
+++ b/vendor/github.com/hashicorp/go-retryablehttp/client.go
@@ -36,7 +36,7 @@ import (
"strings"
"time"
- "github.com/hashicorp/go-cleanhttp"
+ cleanhttp "github.com/hashicorp/go-cleanhttp"
)
var (
@@ -81,6 +81,28 @@ func (r *Request) WithContext(ctx context.Context) *Request {
return r
}
+// BodyBytes allows accessing the request body. It is an analogue to
+// http.Request's Body variable, but it returns a copy of the underlying data
+// rather than consuming it.
+//
+// This function is not thread-safe; do not call it at the same time as another
+// call, or at the same time this request is being used with Client.Do.
+func (r *Request) BodyBytes() ([]byte, error) {
+ if r.body == nil {
+ return nil, nil
+ }
+ body, err := r.body()
+ if err != nil {
+ return nil, err
+ }
+ buf := new(bytes.Buffer)
+ _, err = buf.ReadFrom(body)
+ if err != nil {
+ return nil, err
+ }
+ return buf.Bytes(), nil
+}
+
// NewRequest creates a new wrapped request.
func NewRequest(method, url string, rawBody interface{}) (*Request, error) {
var err error
@@ -183,18 +205,24 @@ func NewRequest(method, url string, rawBody interface{}) (*Request, error) {
return &Request{body, httpReq}, nil
}
+// Logger interface allows to use other loggers than
+// standard log.Logger.
+type Logger interface {
+ Printf(string, ...interface{})
+}
+
// RequestLogHook allows a function to run before each retry. The HTTP
// request which will be made, and the retry number (0 for the initial
// request) are available to users. The internal logger is exposed to
// consumers.
-type RequestLogHook func(*log.Logger, *http.Request, int)
+type RequestLogHook func(Logger, *http.Request, int)
// ResponseLogHook is like RequestLogHook, but allows running a function
// on each HTTP response. This function will be invoked at the end of
// every HTTP request executed, regardless of whether a subsequent retry
// needs to be performed or not. If the response body is read or closed
// from this method, this will affect the response returned from Do().
-type ResponseLogHook func(*log.Logger, *http.Response)
+type ResponseLogHook func(Logger, *http.Response)
// CheckRetry specifies a policy for handling retries. It is called
// following each request with the response and error values returned by
@@ -221,7 +249,7 @@ type ErrorHandler func(resp *http.Response, err error, numTries int) (*http.Resp
// like automatic retries to tolerate minor outages.
type Client struct {
HTTPClient *http.Client // Internal HTTP client.
- Logger *log.Logger // Customer logger instance.
+ Logger Logger // Customer logger instance.
RetryWaitMin time.Duration // Minimum time to wait
RetryWaitMax time.Duration // Maximum time to wait
diff --git a/vendor/github.com/hashicorp/golang-lru/LICENSE b/vendor/github.com/hashicorp/golang-lru/LICENSE
new file mode 100644
index 00000000..be2cc4df
--- /dev/null
+++ b/vendor/github.com/hashicorp/golang-lru/LICENSE
@@ -0,0 +1,362 @@
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+1.1. "Contributor"
+
+ means each individual or legal entity that creates, contributes to the
+ creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+
+ means the combination of the Contributions of others (if any) used by a
+ Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+
+ means Source Code Form to which the initial Contributor has attached the
+ notice in Exhibit A, the Executable Form of such Source Code Form, and
+ Modifications of such Source Code Form, in each case including portions
+ thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ a. that the initial Contributor has attached the notice described in
+ Exhibit B to the Covered Software; or
+
+ b. that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the terms of
+ a Secondary License.
+
+1.6. "Executable Form"
+
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+
+ means a work that combines Covered Software with other material, in a
+ separate file or files, that is not Covered Software.
+
+1.8. "License"
+
+ means this document.
+
+1.9. "Licensable"
+
+ means having the right to grant, to the maximum extent possible, whether
+ at the time of the initial grant or subsequently, any and all of the
+ rights conveyed by this License.
+
+1.10. "Modifications"
+
+ means any of the following:
+
+ a. any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered Software; or
+
+ b. any new file in Source Code Form that contains any Covered Software.
+
+1.11. "Patent Claims" of a Contributor
+
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the License,
+ by the making, using, selling, offering for sale, having made, import,
+ or transfer of either its Contributions or its Contributor Version.
+
+1.12. "Secondary License"
+
+ means either the GNU General Public License, Version 2.0, the GNU Lesser
+ General Public License, Version 2.1, the GNU Affero General Public
+ License, Version 3.0, or any later versions of those licenses.
+
+1.13. "Source Code Form"
+
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that controls, is
+ controlled by, or is under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+
+
+2. License Grants and Conditions
+
+2.1. Grants
+
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ a. under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+ b. under Patent Claims of such Contributor to make, use, sell, offer for
+ sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor first
+ distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+ The licenses granted in this Section 2 are the only rights granted under
+ this License. No additional rights or licenses will be implied from the
+ distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted by a
+ Contributor:
+
+ a. for any code that a Contributor has removed from Covered Software; or
+
+ b. for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+ c. under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License (if
+ permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights to
+ grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing, or other
+ equivalents.
+
+2.7. Conditions
+
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+ Section 2.1.
+
+
+3. Responsibilities
+
+3.1. Distribution of Source Form
+
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under
+ the terms of this License. You must inform recipients that the Source
+ Code Form of the Covered Software is governed by the terms of this
+ License, and how they can obtain a copy of this License. You may not
+ attempt to alter or restrict the recipients' rights in the Source Code
+ Form.
+
+3.2. Distribution of Executable Form
+
+ If You distribute Covered Software in Executable Form then:
+
+ a. such Covered Software must also be made available in Source Code Form,
+ as described in Section 3.1, and You must inform recipients of the
+ Executable Form how they can obtain a copy of such Source Code Form by
+ reasonable means in a timely manner, at a charge no more than the cost
+ of distribution to the recipient; and
+
+ b. You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter the
+ recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of Covered
+ Software with a work governed by one or more Secondary Licenses, and the
+ Covered Software is not Incompatible With Secondary Licenses, this
+ License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the Covered
+ Software under the terms of either this License or such Secondary
+ License(s).
+
+3.4. Notices
+
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty, or
+ limitations of liability) contained within the Source Code Form of the
+ Covered Software, except that You may alter any license notices to the
+ extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on
+ behalf of any Contributor. You must make it absolutely clear that any
+ such warranty, support, indemnity, or liability obligation is offered by
+ You alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+ If it is impossible for You to comply with any of the terms of this License
+ with respect to some or all of the Covered Software due to statute,
+ judicial order, or regulation then You must: (a) comply with the terms of
+ this License to the maximum extent possible; and (b) describe the
+ limitations and the code they affect. Such description must be placed in a
+ text file included with all distributions of the Covered Software under
+ this License. Except to the extent prohibited by statute or regulation,
+ such description must be sufficiently detailed for a recipient of ordinary
+ skill to be able to understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+ fail to comply with any of its terms. However, if You become compliant,
+ then the rights granted under this License from a particular Contributor
+ are reinstated (a) provisionally, unless and until such Contributor
+ explicitly and finally terminates Your grants, and (b) on an ongoing
+ basis, if such Contributor fails to notify You of the non-compliance by
+ some reasonable means prior to 60 days after You have come back into
+ compliance. Moreover, Your grants from a particular Contributor are
+ reinstated on an ongoing basis if such Contributor notifies You of the
+ non-compliance by some reasonable means, this is the first time You have
+ received notice of non-compliance with this License from such
+ Contributor, and You become compliant prior to 30 days after Your receipt
+ of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted to
+ You by any and all Contributors for the Covered Software under Section
+ 2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+ license agreements (excluding distributors and resellers) which have been
+ validly granted by You or Your distributors under this License prior to
+ termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+ Covered Software is provided under this License on an "as is" basis,
+ without warranty of any kind, either expressed, implied, or statutory,
+ including, without limitation, warranties that the Covered Software is free
+ of defects, merchantable, fit for a particular purpose or non-infringing.
+ The entire risk as to the quality and performance of the Covered Software
+ is with You. Should any Covered Software prove defective in any respect,
+ You (not any Contributor) assume the cost of any necessary servicing,
+ repair, or correction. This disclaimer of warranty constitutes an essential
+ part of this License. No use of any Covered Software is authorized under
+ this License except under this disclaimer.
+
+7. Limitation of Liability
+
+ Under no circumstances and under no legal theory, whether tort (including
+ negligence), contract, or otherwise, shall any Contributor, or anyone who
+ distributes Covered Software as permitted above, be liable to You for any
+ direct, indirect, special, incidental, or consequential damages of any
+ character including, without limitation, damages for lost profits, loss of
+ goodwill, work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses, even if such party shall have been
+ informed of the possibility of such damages. This limitation of liability
+ shall not apply to liability for death or personal injury resulting from
+ such party's negligence to the extent applicable law prohibits such
+ limitation. Some jurisdictions do not allow the exclusion or limitation of
+ incidental or consequential damages, so this exclusion and limitation may
+ not apply to You.
+
+8. Litigation
+
+ Any litigation relating to this License may be brought only in the courts
+ of a jurisdiction where the defendant maintains its principal place of
+ business and such litigation shall be governed by laws of that
+ jurisdiction, without reference to its conflict-of-law provisions. Nothing
+ in this Section shall prevent a party's ability to bring cross-claims or
+ counter-claims.
+
+9. Miscellaneous
+
+ This License represents the complete agreement concerning the subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides that
+ the language of a contract shall be construed against the drafter shall not
+ be used to construe this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+
+10.2. Effect of New Versions
+
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published by the license
+ steward.
+
+10.3. Modified Versions
+
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a
+ modified version of this License if you rename the license and remove
+ any references to the name of the license steward (except to note that
+ such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+ Licenses If You choose to distribute Source Code Form that is
+ Incompatible With Secondary Licenses under the terms of this version of
+ the License, the notice described in Exhibit B of this License must be
+ attached.
+
+Exhibit A - Source Code Form License Notice
+
+ This Source Code Form is subject to the
+ terms of the Mozilla Public License, v.
+ 2.0. If a copy of the MPL was not
+ distributed with this file, You can
+ obtain one at
+ http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file,
+then You may include the notice in a location (such as a LICENSE file in a
+relevant directory) where a recipient would be likely to look for such a
+notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+
+ This Source Code Form is "Incompatible
+ With Secondary Licenses", as defined by
+ the Mozilla Public License, v. 2.0.
diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go
new file mode 100644
index 00000000..5673773b
--- /dev/null
+++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go
@@ -0,0 +1,161 @@
+package simplelru
+
+import (
+ "container/list"
+ "errors"
+)
+
+// EvictCallback is used to get a callback when a cache entry is evicted
+type EvictCallback func(key interface{}, value interface{})
+
+// LRU implements a non-thread safe fixed size LRU cache
+type LRU struct {
+ size int
+ evictList *list.List
+ items map[interface{}]*list.Element
+ onEvict EvictCallback
+}
+
+// entry is used to hold a value in the evictList
+type entry struct {
+ key interface{}
+ value interface{}
+}
+
+// NewLRU constructs an LRU of the given size
+func NewLRU(size int, onEvict EvictCallback) (*LRU, error) {
+ if size <= 0 {
+ return nil, errors.New("Must provide a positive size")
+ }
+ c := &LRU{
+ size: size,
+ evictList: list.New(),
+ items: make(map[interface{}]*list.Element),
+ onEvict: onEvict,
+ }
+ return c, nil
+}
+
+// Purge is used to completely clear the cache.
+func (c *LRU) Purge() {
+ for k, v := range c.items {
+ if c.onEvict != nil {
+ c.onEvict(k, v.Value.(*entry).value)
+ }
+ delete(c.items, k)
+ }
+ c.evictList.Init()
+}
+
+// Add adds a value to the cache. Returns true if an eviction occurred.
+func (c *LRU) Add(key, value interface{}) (evicted bool) {
+ // Check for existing item
+ if ent, ok := c.items[key]; ok {
+ c.evictList.MoveToFront(ent)
+ ent.Value.(*entry).value = value
+ return false
+ }
+
+ // Add new item
+ ent := &entry{key, value}
+ entry := c.evictList.PushFront(ent)
+ c.items[key] = entry
+
+ evict := c.evictList.Len() > c.size
+ // Verify size not exceeded
+ if evict {
+ c.removeOldest()
+ }
+ return evict
+}
+
+// Get looks up a key's value from the cache.
+func (c *LRU) Get(key interface{}) (value interface{}, ok bool) {
+ if ent, ok := c.items[key]; ok {
+ c.evictList.MoveToFront(ent)
+ return ent.Value.(*entry).value, true
+ }
+ return
+}
+
+// Contains checks if a key is in the cache, without updating the recent-ness
+// or deleting it for being stale.
+func (c *LRU) Contains(key interface{}) (ok bool) {
+ _, ok = c.items[key]
+ return ok
+}
+
+// Peek returns the key value (or undefined if not found) without updating
+// the "recently used"-ness of the key.
+func (c *LRU) Peek(key interface{}) (value interface{}, ok bool) {
+ var ent *list.Element
+ if ent, ok = c.items[key]; ok {
+ return ent.Value.(*entry).value, true
+ }
+ return nil, ok
+}
+
+// Remove removes the provided key from the cache, returning if the
+// key was contained.
+func (c *LRU) Remove(key interface{}) (present bool) {
+ if ent, ok := c.items[key]; ok {
+ c.removeElement(ent)
+ return true
+ }
+ return false
+}
+
+// RemoveOldest removes the oldest item from the cache.
+func (c *LRU) RemoveOldest() (key interface{}, value interface{}, ok bool) {
+ ent := c.evictList.Back()
+ if ent != nil {
+ c.removeElement(ent)
+ kv := ent.Value.(*entry)
+ return kv.key, kv.value, true
+ }
+ return nil, nil, false
+}
+
+// GetOldest returns the oldest entry
+func (c *LRU) GetOldest() (key interface{}, value interface{}, ok bool) {
+ ent := c.evictList.Back()
+ if ent != nil {
+ kv := ent.Value.(*entry)
+ return kv.key, kv.value, true
+ }
+ return nil, nil, false
+}
+
+// Keys returns a slice of the keys in the cache, from oldest to newest.
+func (c *LRU) Keys() []interface{} {
+ keys := make([]interface{}, len(c.items))
+ i := 0
+ for ent := c.evictList.Back(); ent != nil; ent = ent.Prev() {
+ keys[i] = ent.Value.(*entry).key
+ i++
+ }
+ return keys
+}
+
+// Len returns the number of items in the cache.
+func (c *LRU) Len() int {
+ return c.evictList.Len()
+}
+
+// removeOldest removes the oldest item from the cache.
+func (c *LRU) removeOldest() {
+ ent := c.evictList.Back()
+ if ent != nil {
+ c.removeElement(ent)
+ }
+}
+
+// removeElement is used to remove a given list element from the cache
+func (c *LRU) removeElement(e *list.Element) {
+ c.evictList.Remove(e)
+ kv := e.Value.(*entry)
+ delete(c.items, kv.key)
+ if c.onEvict != nil {
+ c.onEvict(kv.key, kv.value)
+ }
+}
diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go
new file mode 100644
index 00000000..74c70774
--- /dev/null
+++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go
@@ -0,0 +1,36 @@
+package simplelru
+
+// LRUCache is the interface for simple LRU cache.
+type LRUCache interface {
+ // Adds a value to the cache, returns true if an eviction occurred and
+ // updates the "recently used"-ness of the key.
+ Add(key, value interface{}) bool
+
+ // Returns key's value from the cache and
+ // updates the "recently used"-ness of the key. #value, isFound
+ Get(key interface{}) (value interface{}, ok bool)
+
+ // Check if a key exsists in cache without updating the recent-ness.
+ Contains(key interface{}) (ok bool)
+
+ // Returns key's value without updating the "recently used"-ness of the key.
+ Peek(key interface{}) (value interface{}, ok bool)
+
+ // Removes a key from the cache.
+ Remove(key interface{}) bool
+
+ // Removes the oldest entry from cache.
+ RemoveOldest() (interface{}, interface{}, bool)
+
+ // Returns the oldest entry from the cache. #key, value, isFound
+ GetOldest() (interface{}, interface{}, bool)
+
+ // Returns a slice of the keys in the cache, from oldest to newest.
+ Keys() []interface{}
+
+ // Returns the number of items in the cache.
+ Len() int
+
+ // Clear all cache entries
+ Purge()
+}
diff --git a/vendor/github.com/hashicorp/serf/coordinate/client.go b/vendor/github.com/hashicorp/serf/coordinate/client.go
index 613bfff8..3582ee4d 100644
--- a/vendor/github.com/hashicorp/serf/coordinate/client.go
+++ b/vendor/github.com/hashicorp/serf/coordinate/client.go
@@ -6,6 +6,8 @@ import (
"sort"
"sync"
"time"
+
+ "github.com/armon/go-metrics"
)
// Client manages the estimated network coordinate for a given node, and adjusts
@@ -34,10 +36,20 @@ type Client struct {
// value to determine how many samples we keep, per node.
latencyFilterSamples map[string][]float64
+ // stats is used to record events that occur when updating coordinates.
+ stats ClientStats
+
// mutex enables safe concurrent access to the client.
mutex sync.RWMutex
}
+// ClientStats is used to record events that occur when updating coordinates.
+type ClientStats struct {
+ // Resets is incremented any time we reset our local coordinate because
+ // our calculations have resulted in an invalid state.
+ Resets int
+}
+
// NewClient creates a new Client and verifies the configuration is valid.
func NewClient(config *Config) (*Client, error) {
if !(config.Dimensionality > 0) {
@@ -63,11 +75,16 @@ func (c *Client) GetCoordinate() *Coordinate {
}
// SetCoordinate forces the client's coordinate to a known state.
-func (c *Client) SetCoordinate(coord *Coordinate) {
+func (c *Client) SetCoordinate(coord *Coordinate) error {
c.mutex.Lock()
defer c.mutex.Unlock()
+ if err := c.checkCoordinate(coord); err != nil {
+ return err
+ }
+
c.coord = coord.Clone()
+ return nil
}
// ForgetNode removes any client state for the given node.
@@ -78,6 +95,29 @@ func (c *Client) ForgetNode(node string) {
delete(c.latencyFilterSamples, node)
}
+// Stats returns a copy of stats for the client.
+func (c *Client) Stats() ClientStats {
+ c.mutex.Lock()
+ defer c.mutex.Unlock()
+
+ return c.stats
+}
+
+// checkCoordinate returns an error if the coordinate isn't compatible with
+// this client, or if the coordinate itself isn't valid. This assumes the mutex
+// has been locked already.
+func (c *Client) checkCoordinate(coord *Coordinate) error {
+ if !c.coord.IsCompatibleWith(coord) {
+ return fmt.Errorf("dimensions aren't compatible")
+ }
+
+ if !coord.IsValid() {
+ return fmt.Errorf("coordinate is invalid")
+ }
+
+ return nil
+}
+
// latencyFilter applies a simple moving median filter with a new sample for
// a node. This assumes that the mutex has been locked already.
func (c *Client) latencyFilter(node string, rttSeconds float64) float64 {
@@ -159,15 +199,38 @@ func (c *Client) updateGravity() {
// Update takes other, a coordinate for another node, and rtt, a round trip
// time observation for a ping to that node, and updates the estimated position of
// the client's coordinate. Returns the updated coordinate.
-func (c *Client) Update(node string, other *Coordinate, rtt time.Duration) *Coordinate {
+func (c *Client) Update(node string, other *Coordinate, rtt time.Duration) (*Coordinate, error) {
c.mutex.Lock()
defer c.mutex.Unlock()
+ if err := c.checkCoordinate(other); err != nil {
+ return nil, err
+ }
+
+ // The code down below can handle zero RTTs, which we have seen in
+ // https://github.com/hashicorp/consul/issues/3789, presumably in
+ // environments with coarse-grained monotonic clocks (we are still
+ // trying to pin this down). In any event, this is ok from a code PoV
+ // so we don't need to alert operators with spammy messages. We did
+ // add a counter so this is still observable, though.
+ const maxRTT = 10 * time.Second
+ if rtt < 0 || rtt > maxRTT {
+ return nil, fmt.Errorf("round trip time not in valid range, duration %v is not a positive value less than %v ", rtt, maxRTT)
+ }
+ if rtt == 0 {
+ metrics.IncrCounter([]string{"serf", "coordinate", "zero-rtt"}, 1)
+ }
+
rttSeconds := c.latencyFilter(node, rtt.Seconds())
c.updateVivaldi(other, rttSeconds)
c.updateAdjustment(other, rttSeconds)
c.updateGravity()
- return c.coord.Clone()
+ if !c.coord.IsValid() {
+ c.stats.Resets++
+ c.coord = NewCoordinate(c.config)
+ }
+
+ return c.coord.Clone(), nil
}
// DistanceTo returns the estimated RTT from the client's coordinate to other, the
diff --git a/vendor/github.com/hashicorp/serf/coordinate/coordinate.go b/vendor/github.com/hashicorp/serf/coordinate/coordinate.go
index c9194e04..fbe792c9 100644
--- a/vendor/github.com/hashicorp/serf/coordinate/coordinate.go
+++ b/vendor/github.com/hashicorp/serf/coordinate/coordinate.go
@@ -72,6 +72,26 @@ func (c *Coordinate) Clone() *Coordinate {
}
}
+// componentIsValid returns false if a floating point value is a NaN or an
+// infinity.
+func componentIsValid(f float64) bool {
+ return !math.IsInf(f, 0) && !math.IsNaN(f)
+}
+
+// IsValid returns false if any component of a coordinate isn't valid, per the
+// componentIsValid() helper above.
+func (c *Coordinate) IsValid() bool {
+ for i := range c.Vec {
+ if !componentIsValid(c.Vec[i]) {
+ return false
+ }
+ }
+
+ return componentIsValid(c.Error) &&
+ componentIsValid(c.Adjustment) &&
+ componentIsValid(c.Height)
+}
+
// IsCompatibleWith checks to see if the two coordinates are compatible
// dimensionally. If this returns true then you are guaranteed to not get
// any runtime errors operating on them.
@@ -122,7 +142,7 @@ func (c *Coordinate) rawDistanceTo(other *Coordinate) float64 {
// already been checked to be compatible.
func add(vec1 []float64, vec2 []float64) []float64 {
ret := make([]float64, len(vec1))
- for i, _ := range ret {
+ for i := range ret {
ret[i] = vec1[i] + vec2[i]
}
return ret
@@ -132,7 +152,7 @@ func add(vec1 []float64, vec2 []float64) []float64 {
// dimensions have already been checked to be compatible.
func diff(vec1 []float64, vec2 []float64) []float64 {
ret := make([]float64, len(vec1))
- for i, _ := range ret {
+ for i := range ret {
ret[i] = vec1[i] - vec2[i]
}
return ret
@@ -141,7 +161,7 @@ func diff(vec1 []float64, vec2 []float64) []float64 {
// mul returns vec multiplied by a scalar factor.
func mul(vec []float64, factor float64) []float64 {
ret := make([]float64, len(vec))
- for i, _ := range vec {
+ for i := range vec {
ret[i] = vec[i] * factor
}
return ret
@@ -150,7 +170,7 @@ func mul(vec []float64, factor float64) []float64 {
// magnitude computes the magnitude of the vec.
func magnitude(vec []float64) float64 {
sum := 0.0
- for i, _ := range vec {
+ for i := range vec {
sum += vec[i] * vec[i]
}
return math.Sqrt(sum)
@@ -168,7 +188,7 @@ func unitVectorAt(vec1 []float64, vec2 []float64) ([]float64, float64) {
}
// Otherwise, just return a random unit vector.
- for i, _ := range ret {
+ for i := range ret {
ret[i] = rand.Float64() - 0.5
}
if mag := magnitude(ret); mag > zeroThreshold {
diff --git a/vendor/github.com/hashicorp/serf/website/LICENSE.md b/vendor/github.com/hashicorp/serf/website/LICENSE.md
new file mode 100644
index 00000000..3189f43a
--- /dev/null
+++ b/vendor/github.com/hashicorp/serf/website/LICENSE.md
@@ -0,0 +1,10 @@
+# Proprietary License
+
+This license is temporary while a more official one is drafted. However,
+this should make it clear:
+
+The text contents of this website are MPL 2.0 licensed.
+
+The design contents of this website are proprietary and may not be reproduced
+or reused in any way other than to run the website locally. The license for
+the design is owned solely by HashiCorp, Inc.
diff --git a/vendor/github.com/hashicorp/vault/api/auth_token.go b/vendor/github.com/hashicorp/vault/api/auth_token.go
index c66fba34..ed594eee 100644
--- a/vendor/github.com/hashicorp/vault/api/auth_token.go
+++ b/vendor/github.com/hashicorp/vault/api/auth_token.go
@@ -271,4 +271,5 @@ type TokenCreateRequest struct {
DisplayName string `json:"display_name"`
NumUses int `json:"num_uses"`
Renewable *bool `json:"renewable,omitempty"`
+ Type string `json:"type"`
}
diff --git a/vendor/github.com/hashicorp/vault/api/client.go b/vendor/github.com/hashicorp/vault/api/client.go
index c7ced823..136b730a 100644
--- a/vendor/github.com/hashicorp/vault/api/client.go
+++ b/vendor/github.com/hashicorp/vault/api/client.go
@@ -16,9 +16,9 @@ import (
"unicode"
"github.com/hashicorp/errwrap"
- "github.com/hashicorp/go-cleanhttp"
+ cleanhttp "github.com/hashicorp/go-cleanhttp"
retryablehttp "github.com/hashicorp/go-retryablehttp"
- "github.com/hashicorp/go-rootcerts"
+ rootcerts "github.com/hashicorp/go-rootcerts"
"github.com/hashicorp/vault/helper/consts"
"github.com/hashicorp/vault/helper/parseutil"
"golang.org/x/net/http2"
@@ -121,7 +121,7 @@ type TLSConfig struct {
func DefaultConfig() *Config {
config := &Config{
Address: "https://127.0.0.1:8200",
- HttpClient: cleanhttp.DefaultClient(),
+ HttpClient: cleanhttp.DefaultPooledClient(),
}
config.HttpClient.Timeout = time.Second * 60
@@ -546,6 +546,10 @@ func (c *Client) SetBackoff(backoff retryablehttp.Backoff) {
// underlying http.Client is used; modifying the client from more than one
// goroutine at once may not be safe, so modify the client as needed and then
// clone.
+//
+// Also, only the client's config is currently copied; this means items not in
+// the api.Config struct, such as policy override and wrapping function
+// behavior, must currently then be set as desired on the new client.
func (c *Client) Clone() (*Client, error) {
c.modifyLock.RLock()
c.config.modifyLock.RLock()
diff --git a/vendor/github.com/hashicorp/vault/api/request.go b/vendor/github.com/hashicorp/vault/api/request.go
index 5bcff8c6..4efa2aa8 100644
--- a/vendor/github.com/hashicorp/vault/api/request.go
+++ b/vendor/github.com/hashicorp/vault/api/request.go
@@ -8,6 +8,8 @@ import (
"net/http"
"net/url"
+ "github.com/hashicorp/vault/helper/consts"
+
retryablehttp "github.com/hashicorp/go-retryablehttp"
)
@@ -124,7 +126,7 @@ func (r *Request) toRetryableHTTP() (*retryablehttp.Request, error) {
}
if len(r.ClientToken) != 0 {
- req.Header.Set("X-Vault-Token", r.ClientToken)
+ req.Header.Set(consts.AuthHeaderName, r.ClientToken)
}
if len(r.WrapTTL) != 0 {
diff --git a/vendor/github.com/hashicorp/vault/api/ssh_agent.go b/vendor/github.com/hashicorp/vault/api/ssh_agent.go
index 1dd681a5..b8e82224 100644
--- a/vendor/github.com/hashicorp/vault/api/ssh_agent.go
+++ b/vendor/github.com/hashicorp/vault/api/ssh_agent.go
@@ -9,9 +9,9 @@ import (
"os"
"github.com/hashicorp/errwrap"
- "github.com/hashicorp/go-cleanhttp"
- "github.com/hashicorp/go-multierror"
- "github.com/hashicorp/go-rootcerts"
+ cleanhttp "github.com/hashicorp/go-cleanhttp"
+ multierror "github.com/hashicorp/go-multierror"
+ rootcerts "github.com/hashicorp/go-rootcerts"
"github.com/hashicorp/hcl"
"github.com/hashicorp/hcl/hcl/ast"
"github.com/hashicorp/vault/helper/hclutil"
diff --git a/vendor/github.com/hashicorp/vault/api/sys_auth.go b/vendor/github.com/hashicorp/vault/api/sys_auth.go
index 447c5d54..e7a9c222 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_auth.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_auth.go
@@ -73,46 +73,8 @@ func (c *Sys) DisableAuth(path string) error {
return err
}
-// Structures for the requests/resposne are all down here. They aren't
-// individually documented because the map almost directly to the raw HTTP API
-// documentation. Please refer to that documentation for more details.
-
-type EnableAuthOptions struct {
- Type string `json:"type"`
- Description string `json:"description"`
- Config AuthConfigInput `json:"config"`
- Local bool `json:"local"`
- PluginName string `json:"plugin_name,omitempty"`
- SealWrap bool `json:"seal_wrap" mapstructure:"seal_wrap"`
- Options map[string]string `json:"options" mapstructure:"options"`
-}
-
-type AuthConfigInput struct {
- DefaultLeaseTTL string `json:"default_lease_ttl" mapstructure:"default_lease_ttl"`
- MaxLeaseTTL string `json:"max_lease_ttl" mapstructure:"max_lease_ttl"`
- PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
- AuditNonHMACRequestKeys []string `json:"audit_non_hmac_request_keys,omitempty" mapstructure:"audit_non_hmac_request_keys"`
- AuditNonHMACResponseKeys []string `json:"audit_non_hmac_response_keys,omitempty" mapstructure:"audit_non_hmac_response_keys"`
- ListingVisibility string `json:"listing_visibility,omitempty" mapstructure:"listing_visibility"`
- PassthroughRequestHeaders []string `json:"passthrough_request_headers,omitempty" mapstructure:"passthrough_request_headers"`
-}
-
-type AuthMount struct {
- Type string `json:"type" mapstructure:"type"`
- Description string `json:"description" mapstructure:"description"`
- Accessor string `json:"accessor" mapstructure:"accessor"`
- Config AuthConfigOutput `json:"config" mapstructure:"config"`
- Local bool `json:"local" mapstructure:"local"`
- SealWrap bool `json:"seal_wrap" mapstructure:"seal_wrap"`
- Options map[string]string `json:"options" mapstructure:"options"`
-}
-
-type AuthConfigOutput struct {
- DefaultLeaseTTL int `json:"default_lease_ttl" mapstructure:"default_lease_ttl"`
- MaxLeaseTTL int `json:"max_lease_ttl" mapstructure:"max_lease_ttl"`
- PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
- AuditNonHMACRequestKeys []string `json:"audit_non_hmac_request_keys,omitempty" mapstructure:"audit_non_hmac_request_keys"`
- AuditNonHMACResponseKeys []string `json:"audit_non_hmac_response_keys,omitempty" mapstructure:"audit_non_hmac_response_keys"`
- ListingVisibility string `json:"listing_visibility,omitempty" mapstructure:"listing_visibility"`
- PassthroughRequestHeaders []string `json:"passthrough_request_headers,omitempty" mapstructure:"passthrough_request_headers"`
-}
+// Rather than duplicate, we can use modern Go's type aliasing
+type EnableAuthOptions = MountInput
+type AuthConfigInput = MountConfigInput
+type AuthMount = MountOutput
+type AuthConfigOutput = MountConfigOutput
diff --git a/vendor/github.com/hashicorp/vault/api/sys_capabilities.go b/vendor/github.com/hashicorp/vault/api/sys_capabilities.go
index 242acf96..64b3951d 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_capabilities.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_capabilities.go
@@ -50,5 +50,15 @@ func (c *Sys) Capabilities(token, path string) ([]string, error) {
return nil, err
}
+ if len(res) == 0 {
+ _, ok := secret.Data["capabilities"]
+ if ok {
+ err = mapstructure.Decode(secret.Data["capabilities"], &res)
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+
return res, nil
}
diff --git a/vendor/github.com/hashicorp/vault/api/sys_health.go b/vendor/github.com/hashicorp/vault/api/sys_health.go
index bd74e826..e4c60d44 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_health.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_health.go
@@ -36,4 +36,5 @@ type HealthResponse struct {
Version string `json:"version"`
ClusterName string `json:"cluster_name,omitempty"`
ClusterID string `json:"cluster_id,omitempty"`
+ LastWAL uint64 `json:"last_wal,omitempty"`
}
diff --git a/vendor/github.com/hashicorp/vault/api/sys_leader.go b/vendor/github.com/hashicorp/vault/api/sys_leader.go
index dfef8345..8846dcdf 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_leader.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_leader.go
@@ -25,4 +25,5 @@ type LeaderResponse struct {
LeaderClusterAddress string `json:"leader_cluster_address"`
PerfStandby bool `json:"performance_standby"`
PerfStandbyLastRemoteWAL uint64 `json:"performance_standby_last_remote_wal"`
+ LastWAL uint64 `json:"last_wal"`
}
diff --git a/vendor/github.com/hashicorp/vault/api/sys_mounts.go b/vendor/github.com/hashicorp/vault/api/sys_mounts.go
index 8a32b095..f5993c70 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_mounts.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_mounts.go
@@ -132,10 +132,13 @@ type MountInput struct {
Type string `json:"type"`
Description string `json:"description"`
Config MountConfigInput `json:"config"`
- Options map[string]string `json:"options"`
Local bool `json:"local"`
- PluginName string `json:"plugin_name,omitempty"`
SealWrap bool `json:"seal_wrap" mapstructure:"seal_wrap"`
+ Options map[string]string `json:"options"`
+
+ // Deprecated: Newer server responses should be returning this information in the
+ // Type field (json: "type") instead.
+ PluginName string `json:"plugin_name,omitempty"`
}
type MountConfigInput struct {
@@ -144,11 +147,14 @@ type MountConfigInput struct {
Description *string `json:"description,omitempty" mapstructure:"description"`
MaxLeaseTTL string `json:"max_lease_ttl" mapstructure:"max_lease_ttl"`
ForceNoCache bool `json:"force_no_cache" mapstructure:"force_no_cache"`
- PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
AuditNonHMACRequestKeys []string `json:"audit_non_hmac_request_keys,omitempty" mapstructure:"audit_non_hmac_request_keys"`
AuditNonHMACResponseKeys []string `json:"audit_non_hmac_response_keys,omitempty" mapstructure:"audit_non_hmac_response_keys"`
ListingVisibility string `json:"listing_visibility,omitempty" mapstructure:"listing_visibility"`
PassthroughRequestHeaders []string `json:"passthrough_request_headers,omitempty" mapstructure:"passthrough_request_headers"`
+ TokenType string `json:"token_type,omitempty" mapstructure:"token_type"`
+
+ // Deprecated: This field will always be blank for newer server responses.
+ PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
}
type MountOutput struct {
@@ -165,9 +171,12 @@ type MountConfigOutput struct {
DefaultLeaseTTL int `json:"default_lease_ttl" mapstructure:"default_lease_ttl"`
MaxLeaseTTL int `json:"max_lease_ttl" mapstructure:"max_lease_ttl"`
ForceNoCache bool `json:"force_no_cache" mapstructure:"force_no_cache"`
- PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
AuditNonHMACRequestKeys []string `json:"audit_non_hmac_request_keys,omitempty" mapstructure:"audit_non_hmac_request_keys"`
AuditNonHMACResponseKeys []string `json:"audit_non_hmac_response_keys,omitempty" mapstructure:"audit_non_hmac_response_keys"`
ListingVisibility string `json:"listing_visibility,omitempty" mapstructure:"listing_visibility"`
PassthroughRequestHeaders []string `json:"passthrough_request_headers,omitempty" mapstructure:"passthrough_request_headers"`
+ TokenType string `json:"token_type,omitempty" mapstructure:"token_type"`
+
+ // Deprecated: This field will always be blank for newer server responses.
+ PluginName string `json:"plugin_name,omitempty" mapstructure:"plugin_name"`
}
diff --git a/vendor/github.com/hashicorp/vault/api/sys_plugins.go b/vendor/github.com/hashicorp/vault/api/sys_plugins.go
index b2f18d94..ebfcfbfc 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_plugins.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_plugins.go
@@ -2,48 +2,135 @@ package api
import (
"context"
+ "errors"
"fmt"
"net/http"
+
+ "github.com/hashicorp/vault/helper/consts"
+ "github.com/mitchellh/mapstructure"
)
// ListPluginsInput is used as input to the ListPlugins function.
-type ListPluginsInput struct{}
+type ListPluginsInput struct {
+ // Type of the plugin. Required.
+ Type consts.PluginType `json:"type"`
+}
// ListPluginsResponse is the response from the ListPlugins call.
type ListPluginsResponse struct {
+ // PluginsByType is the list of plugins by type.
+ PluginsByType map[consts.PluginType][]string `json:"types"`
+
// Names is the list of names of the plugins.
+ //
+ // Deprecated: Newer server responses should be returning PluginsByType (json:
+ // "types") instead.
Names []string `json:"names"`
}
// ListPlugins lists all plugins in the catalog and returns their names as a
// list of strings.
func (c *Sys) ListPlugins(i *ListPluginsInput) (*ListPluginsResponse, error) {
- path := "/v1/sys/plugins/catalog"
- req := c.c.NewRequest("LIST", path)
+ path := ""
+ method := ""
+ if i.Type == consts.PluginTypeUnknown {
+ path = "/v1/sys/plugins/catalog"
+ method = "GET"
+ } else {
+ path = fmt.Sprintf("/v1/sys/plugins/catalog/%s", i.Type)
+ method = "LIST"
+ }
+
+ req := c.c.NewRequest(method, path)
+ if method == "LIST" {
+ // Set this for broader compatibility, but we use LIST above to be able
+ // to handle the wrapping lookup function
+ req.Method = "GET"
+ req.Params.Set("list", "true")
+ }
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
resp, err := c.c.RawRequestWithContext(ctx, req)
- if err != nil {
+ if err != nil && resp == nil {
return nil, err
}
+ if resp == nil {
+ return nil, nil
+ }
defer resp.Body.Close()
- var result struct {
- Data struct {
- Keys []string `json:"keys"`
- } `json:"data"`
+ // We received an Unsupported Operation response from Vault, indicating
+ // Vault of an older version that doesn't support the GET method yet;
+ // switch it to a LIST.
+ if resp.StatusCode == 405 {
+ req.Params.Set("list", "true")
+ resp, err := c.c.RawRequestWithContext(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+ var result struct {
+ Data struct {
+ Keys []string `json:"keys"`
+ } `json:"data"`
+ }
+ if err := resp.DecodeJSON(&result); err != nil {
+ return nil, err
+ }
+ return &ListPluginsResponse{Names: result.Data.Keys}, nil
}
- if err := resp.DecodeJSON(&result); err != nil {
+
+ secret, err := ParseSecret(resp.Body)
+ if err != nil {
return nil, err
}
+ if secret == nil || secret.Data == nil {
+ return nil, errors.New("data from server response is empty")
+ }
- return &ListPluginsResponse{Names: result.Data.Keys}, nil
+ result := &ListPluginsResponse{
+ PluginsByType: make(map[consts.PluginType][]string),
+ }
+ if i.Type == consts.PluginTypeUnknown {
+ for pluginTypeStr, pluginsRaw := range secret.Data {
+ pluginType, err := consts.ParsePluginType(pluginTypeStr)
+ if err != nil {
+ return nil, err
+ }
+
+ pluginsIfc, ok := pluginsRaw.([]interface{})
+ if !ok {
+ return nil, fmt.Errorf("unable to parse plugins for %q type", pluginTypeStr)
+ }
+
+ plugins := make([]string, len(pluginsIfc))
+ for i, nameIfc := range pluginsIfc {
+ name, ok := nameIfc.(string)
+ if !ok {
+
+ }
+ plugins[i] = name
+ }
+ result.PluginsByType[pluginType] = plugins
+ }
+ } else {
+ var respKeys []string
+ if err := mapstructure.Decode(secret.Data["keys"], &respKeys); err != nil {
+ return nil, err
+ }
+ result.PluginsByType[i.Type] = respKeys
+ }
+
+ return result, nil
}
// GetPluginInput is used as input to the GetPlugin function.
type GetPluginInput struct {
Name string `json:"-"`
+
+ // Type of the plugin. Required.
+ Type consts.PluginType `json:"type"`
}
// GetPluginResponse is the response from the GetPlugin call.
@@ -55,8 +142,9 @@ type GetPluginResponse struct {
SHA256 string `json:"sha256"`
}
+// GetPlugin retrieves information about the plugin.
func (c *Sys) GetPlugin(i *GetPluginInput) (*GetPluginResponse, error) {
- path := fmt.Sprintf("/v1/sys/plugins/catalog/%s", i.Name)
+ path := catalogPathByType(i.Type, i.Name)
req := c.c.NewRequest(http.MethodGet, path)
ctx, cancelFunc := context.WithCancel(context.Background())
@@ -68,13 +156,13 @@ func (c *Sys) GetPlugin(i *GetPluginInput) (*GetPluginResponse, error) {
defer resp.Body.Close()
var result struct {
- Data GetPluginResponse
+ Data *GetPluginResponse
}
err = resp.DecodeJSON(&result)
if err != nil {
return nil, err
}
- return &result.Data, err
+ return result.Data, err
}
// RegisterPluginInput is used as input to the RegisterPlugin function.
@@ -82,6 +170,9 @@ type RegisterPluginInput struct {
// Name is the name of the plugin. Required.
Name string `json:"-"`
+ // Type of the plugin. Required.
+ Type consts.PluginType `json:"type"`
+
// Args is the list of args to spawn the process with.
Args []string `json:"args,omitempty"`
@@ -94,8 +185,9 @@ type RegisterPluginInput struct {
// RegisterPlugin registers the plugin with the given information.
func (c *Sys) RegisterPlugin(i *RegisterPluginInput) error {
- path := fmt.Sprintf("/v1/sys/plugins/catalog/%s", i.Name)
+ path := catalogPathByType(i.Type, i.Name)
req := c.c.NewRequest(http.MethodPut, path)
+
if err := req.SetJSONBody(i); err != nil {
return err
}
@@ -113,12 +205,15 @@ func (c *Sys) RegisterPlugin(i *RegisterPluginInput) error {
type DeregisterPluginInput struct {
// Name is the name of the plugin. Required.
Name string `json:"-"`
+
+ // Type of the plugin. Required.
+ Type consts.PluginType `json:"type"`
}
// DeregisterPlugin removes the plugin with the given name from the plugin
// catalog.
func (c *Sys) DeregisterPlugin(i *DeregisterPluginInput) error {
- path := fmt.Sprintf("/v1/sys/plugins/catalog/%s", i.Name)
+ path := catalogPathByType(i.Type, i.Name)
req := c.c.NewRequest(http.MethodDelete, path)
ctx, cancelFunc := context.WithCancel(context.Background())
@@ -129,3 +224,15 @@ func (c *Sys) DeregisterPlugin(i *DeregisterPluginInput) error {
}
return err
}
+
+// catalogPathByType is a helper to construct the proper API path by plugin type
+func catalogPathByType(pluginType consts.PluginType, name string) string {
+ path := fmt.Sprintf("/v1/sys/plugins/catalog/%s/%s", pluginType, name)
+
+ // Backwards compat, if type is not provided then use old path
+ if pluginType == consts.PluginTypeUnknown {
+ path = fmt.Sprintf("/v1/sys/plugins/catalog/%s", name)
+ }
+
+ return path
+}
diff --git a/vendor/github.com/hashicorp/vault/api/sys_policy.go b/vendor/github.com/hashicorp/vault/api/sys_policy.go
index 1fa32597..c0c239f9 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_policy.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_policy.go
@@ -9,7 +9,11 @@ import (
)
func (c *Sys) ListPolicies() ([]string, error) {
- r := c.c.NewRequest("GET", "/v1/sys/policy")
+ r := c.c.NewRequest("LIST", "/v1/sys/policies/acl")
+ // Set this for broader compatibility, but we use LIST above to be able to
+ // handle the wrapping lookup function
+ r.Method = "GET"
+ r.Params.Set("list", "true")
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
@@ -28,7 +32,7 @@ func (c *Sys) ListPolicies() ([]string, error) {
}
var result []string
- err = mapstructure.Decode(secret.Data["policies"], &result)
+ err = mapstructure.Decode(secret.Data["keys"], &result)
if err != nil {
return nil, err
}
@@ -69,10 +73,10 @@ func (c *Sys) GetPolicy(name string) (string, error) {
func (c *Sys) PutPolicy(name, rules string) error {
body := map[string]string{
- "rules": rules,
+ "policy": rules,
}
- r := c.c.NewRequest("PUT", fmt.Sprintf("/v1/sys/policy/%s", name))
+ r := c.c.NewRequest("PUT", fmt.Sprintf("/v1/sys/policies/acl/%s", name))
if err := r.SetJSONBody(body); err != nil {
return err
}
@@ -89,7 +93,7 @@ func (c *Sys) PutPolicy(name, rules string) error {
}
func (c *Sys) DeletePolicy(name string) error {
- r := c.c.NewRequest("DELETE", fmt.Sprintf("/v1/sys/policy/%s", name))
+ r := c.c.NewRequest("DELETE", fmt.Sprintf("/v1/sys/policies/acl/%s", name))
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
diff --git a/vendor/github.com/hashicorp/vault/api/sys_seal.go b/vendor/github.com/hashicorp/vault/api/sys_seal.go
index 7cc32ac3..301d3f26 100644
--- a/vendor/github.com/hashicorp/vault/api/sys_seal.go
+++ b/vendor/github.com/hashicorp/vault/api/sys_seal.go
@@ -41,6 +41,15 @@ func (c *Sys) Unseal(shard string) (*SealStatusResponse, error) {
return sealStatusRequest(c, r)
}
+func (c *Sys) UnsealWithOptions(opts *UnsealOpts) (*SealStatusResponse, error) {
+ r := c.c.NewRequest("PUT", "/v1/sys/unseal")
+ if err := r.SetJSONBody(opts); err != nil {
+ return nil, err
+ }
+
+ return sealStatusRequest(c, r)
+}
+
func sealStatusRequest(c *Sys, r *Request) (*SealStatusResponse, error) {
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
@@ -57,13 +66,21 @@ func sealStatusRequest(c *Sys, r *Request) (*SealStatusResponse, error) {
type SealStatusResponse struct {
Type string `json:"type"`
+ Initialized bool `json:"initialized"`
Sealed bool `json:"sealed"`
T int `json:"t"`
N int `json:"n"`
Progress int `json:"progress"`
Nonce string `json:"nonce"`
Version string `json:"version"`
+ Migration bool `json:"migration"`
ClusterName string `json:"cluster_name,omitempty"`
ClusterID string `json:"cluster_id,omitempty"`
RecoverySeal bool `json:"recovery_seal"`
}
+
+type UnsealOpts struct {
+ Key string `json:"key"`
+ Reset bool `json:"reset"`
+ Migrate bool `json:"migrate"`
+}
diff --git a/vendor/github.com/hashicorp/vault/helper/compressutil/compress.go b/vendor/github.com/hashicorp/vault/helper/compressutil/compress.go
index a7fb87bc..356d4548 100644
--- a/vendor/github.com/hashicorp/vault/helper/compressutil/compress.go
+++ b/vendor/github.com/hashicorp/vault/helper/compressutil/compress.go
@@ -9,6 +9,7 @@ import (
"github.com/golang/snappy"
"github.com/hashicorp/errwrap"
+ "github.com/pierrec/lz4"
)
const (
@@ -17,41 +18,39 @@ const (
// The value of this constant should not be a first character of any
// valid JSON string.
- // Byte value used as canary when using Gzip format
+ CompressionTypeGzip = "gzip"
CompressionCanaryGzip byte = 'G'
- // Byte value used as canary when using Lzw format
- CompressionCanaryLzw byte = 'L'
+ CompressionTypeLZW = "lzw"
+ CompressionCanaryLZW byte = 'L'
- // Byte value used as canary when using Snappy format
+ CompressionTypeSnappy = "snappy"
CompressionCanarySnappy byte = 'S'
- CompressionTypeLzw = "lzw"
-
- CompressionTypeGzip = "gzip"
-
- CompressionTypeSnappy = "snappy"
+ CompressionTypeLZ4 = "lz4"
+ CompressionCanaryLZ4 byte = '4'
)
// SnappyReadCloser embeds the snappy reader which implements the io.Reader
// interface. The decompress procedure in this utility expects an
// io.ReadCloser. This type implements the io.Closer interface to retain the
// generic way of decompression.
-type SnappyReadCloser struct {
- *snappy.Reader
+type CompressUtilReadCloser struct {
+ io.Reader
}
// Close is a noop method implemented only to satisfy the io.Closer interface
-func (s *SnappyReadCloser) Close() error {
+func (c *CompressUtilReadCloser) Close() error {
return nil
}
// CompressionConfig is used to select a compression type to be performed by
// Compress and Decompress utilities.
// Supported types are:
-// * CompressionTypeLzw
+// * CompressionTypeLZW
// * CompressionTypeGzip
// * CompressionTypeSnappy
+// * CompressionTypeLZ4
//
// When using CompressionTypeGzip, the compression levels can also be chosen:
// * gzip.DefaultCompression
@@ -82,10 +81,10 @@ func Compress(data []byte, config *CompressionConfig) ([]byte, error) {
// Write the canary into the buffer and create writer to compress the
// input data based on the configured type
switch config.Type {
- case CompressionTypeLzw:
- buf.Write([]byte{CompressionCanaryLzw})
-
+ case CompressionTypeLZW:
+ buf.Write([]byte{CompressionCanaryLZW})
writer = lzw.NewWriter(&buf, lzw.LSB, 8)
+
case CompressionTypeGzip:
buf.Write([]byte{CompressionCanaryGzip})
@@ -100,9 +99,15 @@ func Compress(data []byte, config *CompressionConfig) ([]byte, error) {
config.GzipCompressionLevel = gzip.DefaultCompression
}
writer, err = gzip.NewWriterLevel(&buf, config.GzipCompressionLevel)
+
case CompressionTypeSnappy:
buf.Write([]byte{CompressionCanarySnappy})
writer = snappy.NewBufferedWriter(&buf)
+
+ case CompressionTypeLZ4:
+ buf.Write([]byte{CompressionCanaryLZ4})
+ writer = lz4.NewWriter(&buf)
+
default:
return nil, fmt.Errorf("unsupported compression type")
}
@@ -142,30 +147,40 @@ func Decompress(data []byte) ([]byte, bool, error) {
return nil, false, fmt.Errorf("'data' being decompressed is empty")
}
- switch {
+ canary := data[0]
+ cData := data[1:]
+
+ switch canary {
// If the first byte matches the canary byte, remove the canary
// byte and try to decompress the data that is after the canary.
- case data[0] == CompressionCanaryGzip:
+ case CompressionCanaryGzip:
if len(data) < 2 {
return nil, false, fmt.Errorf("invalid 'data' after the canary")
}
- data = data[1:]
- reader, err = gzip.NewReader(bytes.NewReader(data))
- case data[0] == CompressionCanaryLzw:
+ reader, err = gzip.NewReader(bytes.NewReader(cData))
+
+ case CompressionCanaryLZW:
if len(data) < 2 {
return nil, false, fmt.Errorf("invalid 'data' after the canary")
}
- data = data[1:]
- reader = lzw.NewReader(bytes.NewReader(data), lzw.LSB, 8)
+ reader = lzw.NewReader(bytes.NewReader(cData), lzw.LSB, 8)
- case data[0] == CompressionCanarySnappy:
+ case CompressionCanarySnappy:
if len(data) < 2 {
return nil, false, fmt.Errorf("invalid 'data' after the canary")
}
- data = data[1:]
- reader = &SnappyReadCloser{
- Reader: snappy.NewReader(bytes.NewReader(data)),
+ reader = &CompressUtilReadCloser{
+ Reader: snappy.NewReader(bytes.NewReader(cData)),
}
+
+ case CompressionCanaryLZ4:
+ if len(data) < 2 {
+ return nil, false, fmt.Errorf("invalid 'data' after the canary")
+ }
+ reader = &CompressUtilReadCloser{
+ Reader: lz4.NewReader(bytes.NewReader(cData)),
+ }
+
default:
// If the first byte doesn't match the canary byte, it means
// that the content was not compressed at all. Indicate the
diff --git a/vendor/github.com/hashicorp/vault/helper/consts/plugin_types.go b/vendor/github.com/hashicorp/vault/helper/consts/plugin_types.go
new file mode 100644
index 00000000..e0a00e48
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/helper/consts/plugin_types.go
@@ -0,0 +1,59 @@
+package consts
+
+import "fmt"
+
+var PluginTypes = []PluginType{
+ PluginTypeUnknown,
+ PluginTypeCredential,
+ PluginTypeDatabase,
+ PluginTypeSecrets,
+}
+
+type PluginType uint32
+
+// This is a list of PluginTypes used by Vault.
+// If we need to add any in the future, it would
+// be best to add them to the _end_ of the list below
+// because they resolve to incrementing numbers,
+// which may be saved in state somewhere. Thus if
+// the name for one of those numbers changed because
+// a value were added to the middle, that could cause
+// the wrong plugin types to be read from storage
+// for a given underlying number. Example of the problem
+// here: https://play.golang.org/p/YAaPw5ww3er
+const (
+ PluginTypeUnknown PluginType = iota
+ PluginTypeCredential
+ PluginTypeDatabase
+ PluginTypeSecrets
+)
+
+func (p PluginType) String() string {
+ switch p {
+ case PluginTypeUnknown:
+ return "unknown"
+ case PluginTypeCredential:
+ return "auth"
+ case PluginTypeDatabase:
+ return "database"
+ case PluginTypeSecrets:
+ return "secret"
+ default:
+ return "unsupported"
+ }
+}
+
+func ParsePluginType(pluginType string) (PluginType, error) {
+ switch pluginType {
+ case "unknown":
+ return PluginTypeUnknown, nil
+ case "auth":
+ return PluginTypeCredential, nil
+ case "database":
+ return PluginTypeDatabase, nil
+ case "secret":
+ return PluginTypeSecrets, nil
+ default:
+ return PluginTypeUnknown, fmt.Errorf("%q is not a supported plugin type", pluginType)
+ }
+}
diff --git a/vendor/github.com/hashicorp/vault/helper/parseutil/parseutil.go b/vendor/github.com/hashicorp/vault/helper/parseutil/parseutil.go
index 9b32bf7d..8ce5eae4 100644
--- a/vendor/github.com/hashicorp/vault/helper/parseutil/parseutil.go
+++ b/vendor/github.com/hashicorp/vault/helper/parseutil/parseutil.go
@@ -106,6 +106,10 @@ func ParseBool(in interface{}) (bool, error) {
}
func ParseCommaStringSlice(in interface{}) ([]string, error) {
+ rawString, ok := in.(string)
+ if ok && rawString == "" {
+ return []string{}, nil
+ }
var result []string
config := &mapstructure.DecoderConfig{
Result: &result,
diff --git a/vendor/github.com/hashicorp/vault/helper/strutil/strutil.go b/vendor/github.com/hashicorp/vault/helper/strutil/strutil.go
index 8d84c1e4..f5bf00a9 100644
--- a/vendor/github.com/hashicorp/vault/helper/strutil/strutil.go
+++ b/vendor/github.com/hashicorp/vault/helper/strutil/strutil.go
@@ -239,6 +239,22 @@ func RemoveDuplicates(items []string, lowercase bool) []string {
return items
}
+// RemoveEmpty removes empty elements from a slice of
+// strings
+func RemoveEmpty(items []string) []string {
+ if len(items) == 0 {
+ return items
+ }
+ itemsSlice := make([]string, 0, len(items))
+ for _, item := range items {
+ if item == "" {
+ continue
+ }
+ itemsSlice = append(itemsSlice, item)
+ }
+ return itemsSlice
+}
+
// EquivalentSlices checks whether the given string sets are equivalent, as in,
// they contain the same values.
func EquivalentSlices(a, b []string) bool {
@@ -340,9 +356,42 @@ func MergeSlices(args ...[]string) []string {
}
result := make([]string, 0, len(all))
- for k, _ := range all {
+ for k := range all {
result = append(result, k)
}
sort.Strings(result)
return result
}
+
+// Difference returns the set difference (A - B) of the two given slices. The
+// result will also remove any duplicated values in set A regardless of whether
+// that matches any values in set B.
+func Difference(a, b []string, lowercase bool) []string {
+ if len(a) == 0 || len(b) == 0 {
+ return a
+ }
+
+ a = RemoveDuplicates(a, lowercase)
+ b = RemoveDuplicates(b, lowercase)
+
+ itemsMap := map[string]bool{}
+ for _, aVal := range a {
+ itemsMap[aVal] = true
+ }
+
+ // Perform difference calculation
+ for _, bVal := range b {
+ if _, ok := itemsMap[bVal]; ok {
+ itemsMap[bVal] = false
+ }
+ }
+
+ items := []string{}
+ for item, exists := range itemsMap {
+ if exists {
+ items = append(items, item)
+ }
+ }
+ sort.Strings(items)
+ return items
+}
diff --git a/vendor/github.com/hashicorp/vault/ui/app/adapters/license.js b/vendor/github.com/hashicorp/vault/ui/app/adapters/license.js
new file mode 100644
index 00000000..c116ab16
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/adapters/license.js
@@ -0,0 +1,36 @@
+import ClusterAdapter from './cluster';
+
+export default ClusterAdapter.extend({
+ queryRecord() {
+ return this._super(...arguments).then(resp => {
+ resp.data.id = resp.data.license_id;
+ return resp.data;
+ });
+ },
+
+ createRecord(store, type, snapshot) {
+ let id = snapshot.attr('licenseId');
+ return this._super(...arguments).then(() => {
+ return {
+ id,
+ };
+ });
+ },
+
+ updateRecord(store, type, snapshot) {
+ let id = snapshot.attr('licenseId');
+ return this._super(...arguments).then(() => {
+ return {
+ id,
+ };
+ });
+ },
+
+ pathForType() {
+ return 'license';
+ },
+
+ urlForUpdateRecord() {
+ return this.buildURL() + '/license';
+ },
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/app/components/license-info.js b/vendor/github.com/hashicorp/vault/ui/app/components/license-info.js
new file mode 100644
index 00000000..b48d1b78
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/components/license-info.js
@@ -0,0 +1,39 @@
+import Component from '@ember/component';
+import { allFeatures } from 'vault/helpers/all-features';
+import { computed } from '@ember/object';
+
+export default Component.extend({
+ expirationTime: '',
+ startTime: '',
+ licenseId: '',
+ features: null,
+ model: null,
+ text: '',
+ showForm: false,
+ isTemporary: computed('licenseId', function() {
+ return this.licenseId === 'temporary';
+ }),
+ featuresInfo: computed('model', 'features', function() {
+ return allFeatures().map(feature => {
+ let active = this.features.includes(feature);
+ if (active && feature === 'Performance Standby') {
+ let count = this.model.performanceStandbyCount;
+ return {
+ name: feature,
+ active: count ? active : false,
+ count,
+ };
+ }
+ return { name: feature, active };
+ });
+ }),
+ saveModel() {},
+ actions: {
+ saveModel(text) {
+ this.saveModel(text);
+ },
+ toggleForm() {
+ this.toggleProperty('showForm');
+ },
+ },
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/app/controllers/vault/cluster/license.js b/vendor/github.com/hashicorp/vault/ui/app/controllers/vault/cluster/license.js
new file mode 100644
index 00000000..baa4190c
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/controllers/vault/cluster/license.js
@@ -0,0 +1,15 @@
+import Controller from '@ember/controller';
+
+export default Controller.extend({
+ licenseSuccess() {
+ this.send('doRefresh');
+ },
+ licenseError() {
+ //eat the error (handled in MessageError component)
+ },
+ actions: {
+ saveModel({ text }) {
+ this.model.save({ text }).then(() => this.licenseSuccess(), () => this.licenseError());
+ },
+ },
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/app/models/license.js b/vendor/github.com/hashicorp/vault/ui/app/models/license.js
new file mode 100644
index 00000000..369678ab
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/models/license.js
@@ -0,0 +1,30 @@
+import DS from 'ember-data';
+const { attr } = DS;
+
+/* sample response
+{
+ "data": {
+ "expiration_time": "2017-11-14T16:34:36.546753-05:00",
+ "features": [
+ "UI",
+ "HSM",
+ "Performance Replication",
+ "DR Replication"
+ ],
+ "license_id": "temporary",
+ "start_time": "2017-11-14T16:04:36.546753-05:00"
+ },
+ "warnings": [
+ "time left on license is 29m33s"
+ ]
+}
+*/
+
+export default DS.Model.extend({
+ expirationTime: attr('string'),
+ features: attr('array'),
+ licenseId: attr('string'),
+ startTime: attr('string'),
+ text: attr('string'),
+ performanceStandbyCount: attr('number'),
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/app/routes/vault/cluster/license.js b/vendor/github.com/hashicorp/vault/ui/app/routes/vault/cluster/license.js
new file mode 100644
index 00000000..d1822ea6
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/routes/vault/cluster/license.js
@@ -0,0 +1,22 @@
+import Route from '@ember/routing/route';
+import ClusterRoute from 'vault/mixins/cluster-route';
+import { inject as service } from '@ember/service';
+
+export default Route.extend(ClusterRoute, {
+ version: service(),
+ beforeModel() {
+ if (this.version.isOSS) {
+ this.transitionTo('vault.cluster');
+ }
+ },
+
+ model() {
+ return this.store.queryRecord('license', {});
+ },
+
+ actions: {
+ doRefresh() {
+ this.refresh();
+ },
+ },
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/app/templates/components/license-info.hbs b/vendor/github.com/hashicorp/vault/ui/app/templates/components/license-info.hbs
new file mode 100644
index 00000000..b8177199
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/templates/components/license-info.hbs
@@ -0,0 +1,82 @@
+<PageHeader as |p|>
+ <p.levelLeft>
+ <h1 class="title is-3">License</h1>
+ </p.levelLeft>
+</PageHeader>
+<MessageError @model={{model}} />
+{{#if isTemporary}}
+ <section class="box is-sideless is-fullwidth">
+ <AlertBanner
+ @type="warning"
+ @message="Your temporary license expires in {{date-from-now expirationTime}} and your vault will seal. Please enter a valid license below."
+ @class="license-warning"
+ data-test-cluster-status
+ data-test-warning-text
+ />
+ <span class="title is-5" data-test-temp-license>Temporary License</span>
+ <form {{action "saveModel" text on="submit"}}>
+ <div class="box is-shadowless is-fullwidth is-marginless">
+ <div class="field">
+ <label for="license-id" class="is-label">License</label>
+ <div class="control">
+ {{input id="license-id" value=text autocomplete="off" class="input" data-test-text-input="data-test-text-input"}}
+ </div>
+ </div>
+ </div>
+ <div class="field">
+ <div class="control">
+ <button type="submit" class="button is-primary" data-test-save-button>Save</button>
+ </div>
+ </div>
+ </form>
+ </section>
+{{else}}
+ <section class="box is-sideless is-fullwidth">
+ <span class="title is-5">Details</span>
+ {{#if showForm}}
+ <form {{action "saveModel" text on="submit"}}>
+ <div class="field">
+ <label for="license-id" class="is-label">License</label>
+ <div class="control">
+ {{input id="license-id" value=text autocomplete="off" class="input" data-test-text-input="data-test-text-input"}}
+ </div>
+ </div>
+ <div class="field is-grouped">
+ <div class="control">
+ <button type="submit" class="button is-primary" data-test-save-button>Save</button>
+ </div>
+ <div class="control">
+ <button type="button" {{action "toggleForm"}} class="button" data-test-cancel-button>Cancel</button>
+ </div>
+ </div>
+ </form>
+ {{else}}
+ <div class="field box is-fullwidth is-shadowless is-paddingless is-marginless">
+ {{info-table-row label="License ID" value=licenseId}}
+ {{#info-table-row label="Valid from" value=startTime}}
+ {{date-format model.startTime 'MMM DD, YYYY hh:mm:ss A'}} to {{date-format expirationTime 'MMM DD, YYYY hh:mm:ss A'}}
+ {{/info-table-row}}
+ </div>
+ <div class="field box is-fullwidth is-shadowless is-paddingless is-marginless">
+ <div class="control">
+ <button type="button" {{action "toggleForm"}} class="button" data-test-enter-button>Enter new license</button>
+ </div>
+ </div>
+ {{/if}}
+ </section>
+ {{/if}}
+<section class="box is-sideless is-marginless is-shadowless is-fullwidth">
+ <span class="title is-5">Features</span>
+ <div class="field box is-fullwidth is-shadowless is-paddingless is-marginless">
+ {{#each featuresInfo as |info|}}
+ {{#info-table-row label=info.name value=(if info.active "Active" "Not Active") data-test-feature-row="data-test-feature-row"}}
+ {{#if info.active}}
+ <ICon @size=28 @glyph="true" /> <span data-test-feature-status>Active {{#if info.count}}&mdash;
+ {{info.count}} standby nodes allotted{{/if}}</span>
+ {{else}}
+ <ICon @size=28 @glyph="false" /> <span data-test-feature-status>Not Active</span>
+ {{/if}}
+ {{/info-table-row}}
+ {{/each}}
+ </div>
+</section>
diff --git a/vendor/github.com/hashicorp/vault/ui/app/templates/vault/cluster/license.hbs b/vendor/github.com/hashicorp/vault/ui/app/templates/vault/cluster/license.hbs
new file mode 100644
index 00000000..2da2b08c
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/app/templates/vault/cluster/license.hbs
@@ -0,0 +1,9 @@
+<LicenseInfo
+ @startTime={{model.startTime}}
+ @expirationTime={{model.expirationTime}}
+ @licenseId={{model.licenseId}}
+ @features={{model.features}}
+ @text={{model.text}}
+ @saveModel={{action "saveModel"}}
+ @model={{model}}
+/>
diff --git a/vendor/github.com/hashicorp/vault/ui/tests/integration/components/license-info-test.js b/vendor/github.com/hashicorp/vault/ui/tests/integration/components/license-info-test.js
new file mode 100644
index 00000000..f7a934df
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/tests/integration/components/license-info-test.js
@@ -0,0 +1,141 @@
+import { addMinutes } from 'date-fns';
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+import sinon from 'sinon';
+import { create } from 'ember-cli-page-object';
+import license from '../../pages/components/license-info';
+import { allFeatures } from 'vault/helpers/all-features';
+
+const FEATURES = allFeatures();
+
+const component = create(license);
+
+module('Integration | Component | license info', function(hooks) {
+ setupRenderingTest(hooks);
+
+ const LICENSE_WARNING_TEXT = `Warning Your temporary license expires in 30 minutes and your vault will seal. Please enter a valid license below.`;
+
+ test('it renders properly for temporary license', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'temporary');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('features', ['HSM', 'Namespaces']);
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}}/>`
+ );
+ assert.equal(component.warning, LICENSE_WARNING_TEXT, 'it renders warning text including time left');
+ assert.equal(component.hasSaveButton, true, 'it renders the save button');
+ assert.equal(component.hasTextInput, true, 'it renders text input for new license');
+ assert.equal(component.featureRows.length, FEATURES.length, 'it renders all of the features');
+ assert.equal(component.featureRows[0].featureName, 'HSM', 'it renders HSM feature');
+ assert.equal(component.featureRows[0].featureStatus, 'Active', 'it renders Active for HSM feature');
+ assert.equal(
+ component.featureRows[1].featureName,
+ 'Performance Replication',
+ 'it renders Performance Replication feature name'
+ );
+ assert.equal(
+ component.featureRows[1].featureStatus,
+ 'Not Active',
+ 'it renders Not Active for Performance Replication'
+ );
+ });
+
+ test('it renders feature status properly for features associated with license', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'temporary');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('features', ['HSM', 'Namespaces']);
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}}/>`
+ );
+ assert.equal(component.featureRows.length, FEATURES.length, 'it renders all of the features');
+ let activeFeatures = component.featureRows.filter(f => f.featureStatus === 'Active');
+ assert.equal(activeFeatures.length, 2);
+ });
+
+ test('it renders properly for non-temporary license', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'test');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('features', ['HSM', 'Namespaces']);
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}}/>`
+ );
+ assert.equal(component.hasWarning, false, 'it does not have a warning');
+ assert.equal(component.hasSaveButton, false, 'it does not render the save button');
+ assert.equal(component.hasTextInput, false, 'it does not render the text input for new license');
+ assert.equal(component.hasEnterButton, true, 'it renders the button to toggle license form');
+ });
+
+ test('it shows and hides license form when enter and cancel buttons are clicked', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'test');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('features', ['HSM', 'Namespaces']);
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}}/>`
+ );
+ await component.enterButton();
+ assert.equal(component.hasSaveButton, true, 'it does not render the save button');
+ assert.equal(component.hasTextInput, true, 'it does not render the text input for new license');
+ assert.equal(component.hasEnterButton, false, 'it renders the button to toggle license form');
+ await component.cancelButton();
+ assert.equal(component.hasSaveButton, false, 'it does not render the save button');
+ assert.equal(component.hasTextInput, false, 'it does not render the text input for new license');
+ assert.equal(component.hasEnterButton, true, 'it renders the button to toggle license form');
+ });
+
+ test('it calls saveModel when save button is clicked', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'temporary');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('features', ['HSM', 'Namespaces']);
+ this.set('saveModel', sinon.spy());
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}} @saveModel={{this.saveModel}}/>`
+ );
+ await component.text('ABCDE12345');
+ await component.saveButton();
+ assert.ok(this.get('saveModel').calledOnce);
+ });
+
+ test('it renders Performance Standby as inactive if count is 0', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'temporary');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('model', { performanceStandbyCount: 0 });
+ this.set('features', ['Performance Standby', 'Namespaces']);
+
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}} @model={{this.model}}/>`
+ );
+
+ let row = component.featureRows.filterBy('featureName', 'Performance Standby')[0];
+ assert.equal(row.featureStatus, 'Not Active', 'renders feature as inactive because when count is 0');
+ });
+
+ test('it renders Performance Standby as active and shows count', async function(assert) {
+ const now = Date.now();
+ this.set('licenseId', 'temporary');
+ this.set('expirationTime', addMinutes(now, 30));
+ this.set('startTime', now);
+ this.set('model', { performanceStandbyCount: 4 });
+ this.set('features', ['Performance Standby', 'Namespaces']);
+
+ await render(
+ hbs`<LicenseInfo @licenseId={{this.licenseId}} @expirationTime={{this.expirationTime}} @startTime={{this.startTime}} @features={{this.features}} @model={{this.model}}/>`
+ );
+
+ let row = component.featureRows.filterBy('featureName', 'Performance Standby')[0];
+ assert.equal(row.featureStatus, 'Active — 4 standby nodes allotted', 'renders active and displays count');
+ });
+});
diff --git a/vendor/github.com/hashicorp/vault/ui/tests/pages/components/license-info.js b/vendor/github.com/hashicorp/vault/ui/tests/pages/components/license-info.js
new file mode 100644
index 00000000..813ce1fb
--- /dev/null
+++ b/vendor/github.com/hashicorp/vault/ui/tests/pages/components/license-info.js
@@ -0,0 +1,18 @@
+import { clickable, fillable, text, isPresent, collection } from 'ember-cli-page-object';
+
+export default {
+ text: fillable('[data-test-text-input]'),
+ isTemp: isPresent('[data-test-temp-license]'),
+ hasTextInput: isPresent('[data-test-text-input]'),
+ saveButton: clickable('[data-test-save-button]'),
+ hasSaveButton: isPresent('[data-test-save-button]'),
+ enterButton: clickable('[data-test-enter-button]'),
+ hasEnterButton: isPresent('[data-test-enter-button]'),
+ cancelButton: clickable('[data-test-cancel-button]'),
+ hasWarning: isPresent('[data-test-warning-text]'),
+ warning: text('[data-test-warning-text]'),
+ featureRows: collection('[data-test-feature-row]', {
+ featureName: text('[data-test-row-label]'),
+ featureStatus: text('[data-test-feature-status]'),
+ }),
+};
diff --git a/vendor/github.com/hashicorp/vault/website/source/api/system/license.html.md b/vendor/github.com/hashicorp/vault/website/source/api/system/license.html.md
index 933d2779..dbbcef82 100644
--- a/vendor/github.com/hashicorp/vault/website/source/api/system/license.html.md
+++ b/vendor/github.com/hashicorp/vault/website/source/api/system/license.html.md
@@ -1,7 +1,8 @@
---
layout: "api"
page_title: "/sys/license - HTTP API"
-sidebar_current: "docs-http-system-license"
+sidebar_title: "<code>/sys/license</code>"
+sidebar_current: "api-http-system-license"
description: |-
The `/sys/license` endpoint is used to view and update the license used in
Vault.
diff --git a/vendor/github.com/jmespath/go-jmespath/api.go b/vendor/github.com/jmespath/go-jmespath/api.go
index 9cfa988b..8e26ffee 100644
--- a/vendor/github.com/jmespath/go-jmespath/api.go
+++ b/vendor/github.com/jmespath/go-jmespath/api.go
@@ -2,7 +2,7 @@ package jmespath
import "strconv"
-// JmesPath is the epresentation of a compiled JMES path query. A JmesPath is
+// JMESPath is the epresentation of a compiled JMES path query. A JMESPath is
// safe for concurrent use by multiple goroutines.
type JMESPath struct {
ast ASTNode
diff --git a/vendor/github.com/mitchellh/go-homedir/homedir.go b/vendor/github.com/mitchellh/go-homedir/homedir.go
index fb87bef9..25378537 100644
--- a/vendor/github.com/mitchellh/go-homedir/homedir.go
+++ b/vendor/github.com/mitchellh/go-homedir/homedir.go
@@ -76,6 +76,16 @@ func Expand(path string) (string, error) {
return filepath.Join(dir, path[1:]), nil
}
+// Reset clears the cache, forcing the next call to Dir to re-detect
+// the home directory. This generally never has to be called, but can be
+// useful in tests if you're modifying the home directory via the HOME
+// env var or something.
+func Reset() {
+ cacheLock.Lock()
+ defer cacheLock.Unlock()
+ homedirCache = ""
+}
+
func dirUnix() (string, error) {
homeEnv := "HOME"
if runtime.GOOS == "plan9" {
diff --git a/vendor/github.com/mitchellh/mapstructure/decode_hooks.go b/vendor/github.com/mitchellh/mapstructure/decode_hooks.go
index 2a727575..1f0abc65 100644
--- a/vendor/github.com/mitchellh/mapstructure/decode_hooks.go
+++ b/vendor/github.com/mitchellh/mapstructure/decode_hooks.go
@@ -2,6 +2,8 @@ package mapstructure
import (
"errors"
+ "fmt"
+ "net"
"reflect"
"strconv"
"strings"
@@ -115,6 +117,50 @@ func StringToTimeDurationHookFunc() DecodeHookFunc {
}
}
+// StringToIPHookFunc returns a DecodeHookFunc that converts
+// strings to net.IP
+func StringToIPHookFunc() DecodeHookFunc {
+ return func(
+ f reflect.Type,
+ t reflect.Type,
+ data interface{}) (interface{}, error) {
+ if f.Kind() != reflect.String {
+ return data, nil
+ }
+ if t != reflect.TypeOf(net.IP{}) {
+ return data, nil
+ }
+
+ // Convert it by parsing
+ ip := net.ParseIP(data.(string))
+ if ip == nil {
+ return net.IP{}, fmt.Errorf("failed parsing ip %v", data)
+ }
+
+ return ip, nil
+ }
+}
+
+// StringToIPNetHookFunc returns a DecodeHookFunc that converts
+// strings to net.IPNet
+func StringToIPNetHookFunc() DecodeHookFunc {
+ return func(
+ f reflect.Type,
+ t reflect.Type,
+ data interface{}) (interface{}, error) {
+ if f.Kind() != reflect.String {
+ return data, nil
+ }
+ if t != reflect.TypeOf(net.IPNet{}) {
+ return data, nil
+ }
+
+ // Convert it by parsing
+ _, net, err := net.ParseCIDR(data.(string))
+ return net, err
+ }
+}
+
// StringToTimeHookFunc returns a DecodeHookFunc that converts
// strings to time.Time.
func StringToTimeHookFunc(layout string) DecodeHookFunc {
diff --git a/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/mitchellh/mapstructure/mapstructure.go
index d3222b8f..256ee63f 100644
--- a/vendor/github.com/mitchellh/mapstructure/mapstructure.go
+++ b/vendor/github.com/mitchellh/mapstructure/mapstructure.go
@@ -224,6 +224,17 @@ func (d *Decoder) Decode(input interface{}) error {
// Decodes an unknown data type into a specific reflection value.
func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) error {
+ var inputVal reflect.Value
+ if input != nil {
+ inputVal = reflect.ValueOf(input)
+
+ // We need to check here if input is a typed nil. Typed nils won't
+ // match the "input == nil" below so we check that here.
+ if inputVal.Kind() == reflect.Ptr && inputVal.IsNil() {
+ input = nil
+ }
+ }
+
if input == nil {
// If the data is nil, then we don't set anything, unless ZeroFields is set
// to true.
@@ -237,7 +248,6 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e
return nil
}
- inputVal := reflect.ValueOf(input)
if !inputVal.IsValid() {
// If the input value is invalid, then we just set the value
// to be the zero value.
@@ -260,8 +270,8 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e
}
var err error
- inputKind := getKind(outVal)
- switch inputKind {
+ outputKind := getKind(outVal)
+ switch outputKind {
case reflect.Bool:
err = d.decodeBool(name, input, outVal)
case reflect.Interface:
@@ -288,7 +298,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e
err = d.decodeFunc(name, input, outVal)
default:
// If we reached this point then we weren't able to decode it
- return fmt.Errorf("%s: unsupported type: %s", name, inputKind)
+ return fmt.Errorf("%s: unsupported type: %s", name, outputKind)
}
// If we reached here, then we successfully decoded SOMETHING, so
@@ -306,7 +316,16 @@ func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value)
if val.IsValid() && val.Elem().IsValid() {
return d.decode(name, data, val.Elem())
}
+
dataVal := reflect.ValueOf(data)
+
+ // If the input data is a pointer, and the assigned type is the dereference
+ // of that exact pointer, then indirect it so that we can assign it.
+ // Example: *string to string
+ if dataVal.Kind() == reflect.Ptr && dataVal.Type().Elem() == val.Type() {
+ dataVal = reflect.Indirect(dataVal)
+ }
+
if !dataVal.IsValid() {
dataVal = reflect.Zero(val.Type())
}
@@ -323,7 +342,7 @@ func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value)
}
func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) error {
- dataVal := reflect.ValueOf(data)
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
dataKind := getKind(dataVal)
converted := true
@@ -375,7 +394,7 @@ func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value)
}
func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) error {
- dataVal := reflect.ValueOf(data)
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
dataKind := getKind(dataVal)
dataType := dataVal.Type()
@@ -417,7 +436,7 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er
}
func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error {
- dataVal := reflect.ValueOf(data)
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
dataKind := getKind(dataVal)
switch {
@@ -460,7 +479,7 @@ func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) e
}
func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) error {
- dataVal := reflect.ValueOf(data)
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
dataKind := getKind(dataVal)
switch {
@@ -491,7 +510,7 @@ func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) e
}
func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) error {
- dataVal := reflect.ValueOf(data)
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
dataKind := getKind(dataVal)
dataType := dataVal.Type()
@@ -595,6 +614,20 @@ func (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val refle
// Accumulate errors
errors := make([]string, 0)
+ // If the input data is empty, then we just match what the input data is.
+ if dataVal.Len() == 0 {
+ if dataVal.IsNil() {
+ if !val.IsNil() {
+ val.Set(dataVal)
+ }
+ } else {
+ // Set to empty allocated value
+ val.Set(valMap)
+ }
+
+ return nil
+ }
+
for _, k := range dataVal.MapKeys() {
fieldName := fmt.Sprintf("%s[%s]", name, k)
@@ -706,11 +739,33 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re
}
func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) error {
+ // If the input data is nil, then we want to just set the output
+ // pointer to be nil as well.
+ isNil := data == nil
+ if !isNil {
+ switch v := reflect.Indirect(reflect.ValueOf(data)); v.Kind() {
+ case reflect.Chan,
+ reflect.Func,
+ reflect.Interface,
+ reflect.Map,
+ reflect.Ptr,
+ reflect.Slice:
+ isNil = v.IsNil()
+ }
+ }
+ if isNil {
+ if !val.IsNil() && val.CanSet() {
+ nilValue := reflect.New(val.Type()).Elem()
+ val.Set(nilValue)
+ }
+
+ return nil
+ }
+
// Create an element of the concrete (non pointer) type and decode
// into that. Then set the value of the pointer to this type.
valType := val.Type()
valElemType := valType.Elem()
-
if val.CanSet() {
realVal := val
if realVal.IsNil() || d.config.ZeroFields {
@@ -752,33 +807,44 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value)
valSlice := val
if valSlice.IsNil() || d.config.ZeroFields {
- // Check input type
- if dataValKind != reflect.Array && dataValKind != reflect.Slice {
- if d.config.WeaklyTypedInput {
- switch {
- // Empty maps turn into empty slices
- case dataValKind == reflect.Map:
- if dataVal.Len() == 0 {
- val.Set(reflect.MakeSlice(sliceType, 0, 0))
- return nil
- }
- // Create slice of maps of other sizes
- return d.decodeSlice(name, []interface{}{data}, val)
+ if d.config.WeaklyTypedInput {
+ switch {
+ // Slice and array we use the normal logic
+ case dataValKind == reflect.Slice, dataValKind == reflect.Array:
+ break
- case dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8:
- return d.decodeSlice(name, []byte(dataVal.String()), val)
- // All other types we try to convert to the slice type
- // and "lift" it into it. i.e. a string becomes a string slice.
- default:
- // Just re-try this function with data as a slice.
- return d.decodeSlice(name, []interface{}{data}, val)
+ // Empty maps turn into empty slices
+ case dataValKind == reflect.Map:
+ if dataVal.Len() == 0 {
+ val.Set(reflect.MakeSlice(sliceType, 0, 0))
+ return nil
}
+ // Create slice of maps of other sizes
+ return d.decodeSlice(name, []interface{}{data}, val)
+
+ case dataValKind == reflect.String && valElemType.Kind() == reflect.Uint8:
+ return d.decodeSlice(name, []byte(dataVal.String()), val)
+
+ // All other types we try to convert to the slice type
+ // and "lift" it into it. i.e. a string becomes a string slice.
+ default:
+ // Just re-try this function with data as a slice.
+ return d.decodeSlice(name, []interface{}{data}, val)
}
+ }
+
+ // Check input type
+ if dataValKind != reflect.Array && dataValKind != reflect.Slice {
return fmt.Errorf(
"'%s': source data must be an array or slice, got %s", name, dataValKind)
}
+ // If the input value is empty, then don't allocate since non-nil != nil
+ if dataVal.Len() == 0 {
+ return nil
+ }
+
// Make a new slice to hold our result, same size as the original data.
valSlice = reflect.MakeSlice(sliceType, dataVal.Len(), dataVal.Len())
}
@@ -888,10 +954,29 @@ func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value)
}
dataValKind := dataVal.Kind()
- if dataValKind != reflect.Map {
- return fmt.Errorf("'%s' expected a map, got '%s'", name, dataValKind)
+ switch dataValKind {
+ case reflect.Map:
+ return d.decodeStructFromMap(name, dataVal, val)
+
+ case reflect.Struct:
+ // Not the most efficient way to do this but we can optimize later if
+ // we want to. To convert from struct to struct we go to map first
+ // as an intermediary.
+ m := make(map[string]interface{})
+ mval := reflect.Indirect(reflect.ValueOf(&m))
+ if err := d.decodeMapFromStruct(name, dataVal, mval, mval); err != nil {
+ return err
+ }
+
+ result := d.decodeStructFromMap(name, mval, val)
+ return result
+
+ default:
+ return fmt.Errorf("'%s' expected a map, got '%s'", name, dataVal.Kind())
}
+}
+func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) error {
dataValType := dataVal.Type()
if kind := dataValType.Key().Kind(); kind != reflect.String && kind != reflect.Interface {
return fmt.Errorf(
diff --git a/vendor/github.com/pierrec/lz4/LICENSE b/vendor/github.com/pierrec/lz4/LICENSE
new file mode 100644
index 00000000..bd899d83
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2015, Pierre Curto
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of xxHash nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/vendor/github.com/pierrec/lz4/block.go b/vendor/github.com/pierrec/lz4/block.go
new file mode 100644
index 00000000..07863cef
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/block.go
@@ -0,0 +1,397 @@
+package lz4
+
+import (
+ "encoding/binary"
+ "errors"
+)
+
+var (
+ // ErrInvalidSourceShortBuffer is returned by UncompressBlock or CompressBLock when a compressed
+ // block is corrupted or the destination buffer is not large enough for the uncompressed data.
+ ErrInvalidSourceShortBuffer = errors.New("lz4: invalid source or destination buffer too short")
+ // ErrInvalid is returned when reading an invalid LZ4 archive.
+ ErrInvalid = errors.New("lz4: bad magic number")
+)
+
+// blockHash hashes 4 bytes into a value < winSize.
+func blockHash(x uint32) uint32 {
+ const hasher uint32 = 2654435761 // Knuth multiplicative hash.
+ return x * hasher >> hashShift
+}
+
+// CompressBlockBound returns the maximum size of a given buffer of size n, when not compressible.
+func CompressBlockBound(n int) int {
+ return n + n/255 + 16
+}
+
+// UncompressBlock uncompresses the source buffer into the destination one,
+// and returns the uncompressed size.
+//
+// The destination buffer must be sized appropriately.
+//
+// An error is returned if the source data is invalid or the destination buffer is too small.
+func UncompressBlock(src, dst []byte) (si int, err error) {
+ defer func() {
+ // It is now faster to let the runtime panic and recover on out of bound slice access
+ // than checking indices as we go along.
+ if recover() != nil {
+ err = ErrInvalidSourceShortBuffer
+ }
+ }()
+ sn := len(src)
+ if sn == 0 {
+ return 0, nil
+ }
+ var di int
+
+ for {
+ // Literals and match lengths (token).
+ b := int(src[si])
+ si++
+
+ // Literals.
+ if lLen := b >> 4; lLen > 0 {
+ if lLen == 0xF {
+ for src[si] == 0xFF {
+ lLen += 0xFF
+ si++
+ }
+ lLen += int(src[si])
+ si++
+ }
+ i := si
+ si += lLen
+ di += copy(dst[di:di+si-i], src[i:si])
+
+ if si >= sn {
+ return di, nil
+ }
+ }
+
+ si++
+ _ = src[si] // Bound check elimination.
+ offset := int(src[si-1]) | int(src[si])<<8
+ si++
+
+ // Match.
+ mLen := b & 0xF
+ if mLen == 0xF {
+ for src[si] == 0xFF {
+ mLen += 0xFF
+ si++
+ }
+ mLen += int(src[si])
+ si++
+ }
+ mLen += minMatch
+
+ // Copy the match.
+ i := di - offset
+ if offset > 0 && mLen >= offset {
+ // Efficiently copy the match dst[di-offset:di] into the dst slice.
+ bytesToCopy := offset * (mLen / offset)
+ expanded := dst[i:]
+ for n := offset; n <= bytesToCopy+offset; n *= 2 {
+ copy(expanded[n:], expanded[:n])
+ }
+ di += bytesToCopy
+ mLen -= bytesToCopy
+ }
+ di += copy(dst[di:di+mLen], dst[i:i+mLen])
+ }
+}
+
+// CompressBlock compresses the source buffer into the destination one.
+// This is the fast version of LZ4 compression and also the default one.
+// The size of hashTable must be at least 64Kb.
+//
+// The size of the compressed data is returned. If it is 0 and no error, then the data is incompressible.
+//
+// An error is returned if the destination buffer is too small.
+func CompressBlock(src, dst []byte, hashTable []int) (di int, err error) {
+ defer func() {
+ if recover() != nil {
+ err = ErrInvalidSourceShortBuffer
+ }
+ }()
+
+ sn, dn := len(src)-mfLimit, len(dst)
+ if sn <= 0 || dn == 0 {
+ return 0, nil
+ }
+ var si int
+
+ // Fast scan strategy: the hash table only stores the last 4 bytes sequences.
+ // const accInit = 1 << skipStrength
+
+ anchor := si // Position of the current literals.
+ // acc := accInit // Variable step: improves performance on non-compressible data.
+
+ for si < sn {
+ // Hash the next 4 bytes (sequence)...
+ match := binary.LittleEndian.Uint32(src[si:])
+ h := blockHash(match)
+
+ ref := hashTable[h]
+ hashTable[h] = si
+ if ref >= sn { // Invalid reference (dirty hashtable).
+ si++
+ continue
+ }
+ offset := si - ref
+ if offset <= 0 || offset >= winSize || // Out of window.
+ match != binary.LittleEndian.Uint32(src[ref:]) { // Hash collision on different matches.
+ // si += acc >> skipStrength
+ // acc++
+ si++
+ continue
+ }
+
+ // Match found.
+ // acc = accInit
+ lLen := si - anchor // Literal length.
+
+ // Encode match length part 1.
+ si += minMatch
+ mLen := si // Match length has minMatch already.
+ // Find the longest match, first looking by batches of 8 bytes.
+ for si < sn && binary.LittleEndian.Uint64(src[si:]) == binary.LittleEndian.Uint64(src[si-offset:]) {
+ si += 8
+ }
+ // Then byte by byte.
+ for si < sn && src[si] == src[si-offset] {
+ si++
+ }
+
+ mLen = si - mLen
+ if mLen < 0xF {
+ dst[di] = byte(mLen)
+ } else {
+ dst[di] = 0xF
+ }
+
+ // Encode literals length.
+ if lLen < 0xF {
+ dst[di] |= byte(lLen << 4)
+ } else {
+ dst[di] |= 0xF0
+ di++
+ l := lLen - 0xF
+ for ; l >= 0xFF; l -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(l)
+ }
+ di++
+
+ // Literals.
+ copy(dst[di:di+lLen], src[anchor:anchor+lLen])
+ di += lLen + 2
+ anchor = si
+
+ // Encode offset.
+ _ = dst[di] // Bound check elimination.
+ dst[di-2], dst[di-1] = byte(offset), byte(offset>>8)
+
+ // Encode match length part 2.
+ if mLen >= 0xF {
+ for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(mLen)
+ di++
+ }
+ }
+
+ if anchor == 0 {
+ // Incompressible.
+ return 0, nil
+ }
+
+ // Last literals.
+ lLen := len(src) - anchor
+ if lLen < 0xF {
+ dst[di] = byte(lLen << 4)
+ } else {
+ dst[di] = 0xF0
+ di++
+ for lLen -= 0xF; lLen >= 0xFF; lLen -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(lLen)
+ }
+ di++
+
+ // Write the last literals.
+ if di >= anchor {
+ // Incompressible.
+ return 0, nil
+ }
+ di += copy(dst[di:di+len(src)-anchor], src[anchor:])
+ return di, nil
+}
+
+// CompressBlockHC compresses the source buffer src into the destination dst
+// with max search depth (use 0 or negative value for no max).
+//
+// CompressBlockHC compression ratio is better than CompressBlock but it is also slower.
+//
+// The size of the compressed data is returned. If it is 0 and no error, then the data is not compressible.
+//
+// An error is returned if the destination buffer is too small.
+func CompressBlockHC(src, dst []byte, depth int) (di int, err error) {
+ defer func() {
+ if recover() != nil {
+ err = ErrInvalidSourceShortBuffer
+ }
+ }()
+
+ sn, dn := len(src)-mfLimit, len(dst)
+ if sn <= 0 || dn == 0 {
+ return 0, nil
+ }
+ var si int
+
+ // hashTable: stores the last position found for a given hash
+ // chaingTable: stores previous positions for a given hash
+ var hashTable, chainTable [winSize]int
+
+ if depth <= 0 {
+ depth = winSize
+ }
+
+ anchor := si
+ for si < sn {
+ // Hash the next 4 bytes (sequence).
+ match := binary.LittleEndian.Uint32(src[si:])
+ h := blockHash(match)
+
+ // Follow the chain until out of window and give the longest match.
+ mLen := 0
+ offset := 0
+ for next, try := hashTable[h], depth; try > 0 && next > 0 && si-next < winSize; next = chainTable[next&winMask] {
+ // The first (mLen==0) or next byte (mLen>=minMatch) at current match length
+ // must match to improve on the match length.
+ if src[next+mLen] != src[si+mLen] {
+ continue
+ }
+ ml := 0
+ // Compare the current position with a previous with the same hash.
+ for ml < sn-si && binary.LittleEndian.Uint64(src[next+ml:]) == binary.LittleEndian.Uint64(src[si+ml:]) {
+ ml += 8
+ }
+ for ml < sn-si && src[next+ml] == src[si+ml] {
+ ml++
+ }
+ if ml < minMatch || ml <= mLen {
+ // Match too small (<minMath) or smaller than the current match.
+ continue
+ }
+ // Found a longer match, keep its position and length.
+ mLen = ml
+ offset = si - next
+ // Try another previous position with the same hash.
+ try--
+ }
+ chainTable[si&winMask] = hashTable[h]
+ hashTable[h] = si
+
+ // No match found.
+ if mLen == 0 {
+ si++
+ continue
+ }
+
+ // Match found.
+ // Update hash/chain tables with overlapping bytes:
+ // si already hashed, add everything from si+1 up to the match length.
+ winStart := si + 1
+ if ws := si + mLen - winSize; ws > winStart {
+ winStart = ws
+ }
+ for si, ml := winStart, si+mLen; si < ml; {
+ match >>= 8
+ match |= uint32(src[si+3]) << 24
+ h := blockHash(match)
+ chainTable[si&winMask] = hashTable[h]
+ hashTable[h] = si
+ si++
+ }
+
+ lLen := si - anchor
+ si += mLen
+ mLen -= minMatch // Match length does not include minMatch.
+
+ if mLen < 0xF {
+ dst[di] = byte(mLen)
+ } else {
+ dst[di] = 0xF
+ }
+
+ // Encode literals length.
+ if lLen < 0xF {
+ dst[di] |= byte(lLen << 4)
+ } else {
+ dst[di] |= 0xF0
+ di++
+ l := lLen - 0xF
+ for ; l >= 0xFF; l -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(l)
+ }
+ di++
+
+ // Literals.
+ copy(dst[di:di+lLen], src[anchor:anchor+lLen])
+ di += lLen
+ anchor = si
+
+ // Encode offset.
+ di += 2
+ dst[di-2], dst[di-1] = byte(offset), byte(offset>>8)
+
+ // Encode match length part 2.
+ if mLen >= 0xF {
+ for mLen -= 0xF; mLen >= 0xFF; mLen -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(mLen)
+ di++
+ }
+ }
+
+ if anchor == 0 {
+ // Incompressible.
+ return 0, nil
+ }
+
+ // Last literals.
+ lLen := len(src) - anchor
+ if lLen < 0xF {
+ dst[di] = byte(lLen << 4)
+ } else {
+ dst[di] = 0xF0
+ di++
+ lLen -= 0xF
+ for ; lLen >= 0xFF; lLen -= 0xFF {
+ dst[di] = 0xFF
+ di++
+ }
+ dst[di] = byte(lLen)
+ }
+ di++
+
+ // Write the last literals.
+ if di >= anchor {
+ // Incompressible.
+ return 0, nil
+ }
+ di += copy(dst[di:di+len(src)-anchor], src[anchor:])
+ return di, nil
+}
diff --git a/vendor/github.com/pierrec/lz4/debug.go b/vendor/github.com/pierrec/lz4/debug.go
new file mode 100644
index 00000000..bc5e78d4
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/debug.go
@@ -0,0 +1,23 @@
+// +build lz4debug
+
+package lz4
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+ "runtime"
+)
+
+const debugFlag = true
+
+func debug(args ...interface{}) {
+ _, file, line, _ := runtime.Caller(1)
+ file = filepath.Base(file)
+
+ f := fmt.Sprintf("LZ4: %s:%d %s", file, line, args[0])
+ if f[len(f)-1] != '\n' {
+ f += "\n"
+ }
+ fmt.Fprintf(os.Stderr, f, args[1:]...)
+}
diff --git a/vendor/github.com/pierrec/lz4/debug_stub.go b/vendor/github.com/pierrec/lz4/debug_stub.go
new file mode 100644
index 00000000..44211ad9
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/debug_stub.go
@@ -0,0 +1,7 @@
+// +build !lz4debug
+
+package lz4
+
+const debugFlag = false
+
+func debug(args ...interface{}) {}
diff --git a/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go b/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go
new file mode 100644
index 00000000..850a6fdf
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/internal/xxh32/xxh32zero.go
@@ -0,0 +1,222 @@
+// Package xxh32 implements the very fast XXH hashing algorithm (32 bits version).
+// (https://github.com/Cyan4973/XXH/)
+package xxh32
+
+import (
+ "encoding/binary"
+)
+
+const (
+ prime32_1 uint32 = 2654435761
+ prime32_2 uint32 = 2246822519
+ prime32_3 uint32 = 3266489917
+ prime32_4 uint32 = 668265263
+ prime32_5 uint32 = 374761393
+
+ prime32_1plus2 uint32 = 606290984
+ prime32_minus1 uint32 = 1640531535
+)
+
+// XXHZero represents an xxhash32 object with seed 0.
+type XXHZero struct {
+ v1 uint32
+ v2 uint32
+ v3 uint32
+ v4 uint32
+ totalLen uint64
+ buf [16]byte
+ bufused int
+}
+
+// Sum appends the current hash to b and returns the resulting slice.
+// It does not change the underlying hash state.
+func (xxh XXHZero) Sum(b []byte) []byte {
+ h32 := xxh.Sum32()
+ return append(b, byte(h32), byte(h32>>8), byte(h32>>16), byte(h32>>24))
+}
+
+// Reset resets the Hash to its initial state.
+func (xxh *XXHZero) Reset() {
+ xxh.v1 = prime32_1plus2
+ xxh.v2 = prime32_2
+ xxh.v3 = 0
+ xxh.v4 = prime32_minus1
+ xxh.totalLen = 0
+ xxh.bufused = 0
+}
+
+// Size returns the number of bytes returned by Sum().
+func (xxh *XXHZero) Size() int {
+ return 4
+}
+
+// BlockSize gives the minimum number of bytes accepted by Write().
+func (xxh *XXHZero) BlockSize() int {
+ return 1
+}
+
+// Write adds input bytes to the Hash.
+// It never returns an error.
+func (xxh *XXHZero) Write(input []byte) (int, error) {
+ if xxh.totalLen == 0 {
+ xxh.Reset()
+ }
+ n := len(input)
+ m := xxh.bufused
+
+ xxh.totalLen += uint64(n)
+
+ r := len(xxh.buf) - m
+ if n < r {
+ copy(xxh.buf[m:], input)
+ xxh.bufused += len(input)
+ return n, nil
+ }
+
+ p := 0
+ // Causes compiler to work directly from registers instead of stack:
+ v1, v2, v3, v4 := xxh.v1, xxh.v2, xxh.v3, xxh.v4
+ if m > 0 {
+ // some data left from previous update
+ copy(xxh.buf[xxh.bufused:], input[:r])
+ xxh.bufused += len(input) - r
+
+ // fast rotl(13)
+ buf := xxh.buf[:16] // BCE hint.
+ v1 = rol13(v1+binary.LittleEndian.Uint32(buf[:])*prime32_2) * prime32_1
+ v2 = rol13(v2+binary.LittleEndian.Uint32(buf[4:])*prime32_2) * prime32_1
+ v3 = rol13(v3+binary.LittleEndian.Uint32(buf[8:])*prime32_2) * prime32_1
+ v4 = rol13(v4+binary.LittleEndian.Uint32(buf[12:])*prime32_2) * prime32_1
+ p = r
+ xxh.bufused = 0
+ }
+
+ for n := n - 16; p <= n; p += 16 {
+ sub := input[p:][:16] //BCE hint for compiler
+ v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime32_2) * prime32_1
+ v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime32_2) * prime32_1
+ v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime32_2) * prime32_1
+ v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime32_2) * prime32_1
+ }
+ xxh.v1, xxh.v2, xxh.v3, xxh.v4 = v1, v2, v3, v4
+
+ copy(xxh.buf[xxh.bufused:], input[p:])
+ xxh.bufused += len(input) - p
+
+ return n, nil
+}
+
+// Sum32 returns the 32 bits Hash value.
+func (xxh *XXHZero) Sum32() uint32 {
+ h32 := uint32(xxh.totalLen)
+ if h32 >= 16 {
+ h32 += rol1(xxh.v1) + rol7(xxh.v2) + rol12(xxh.v3) + rol18(xxh.v4)
+ } else {
+ h32 += prime32_5
+ }
+
+ p := 0
+ n := xxh.bufused
+ buf := xxh.buf
+ for n := n - 4; p <= n; p += 4 {
+ h32 += binary.LittleEndian.Uint32(buf[p:p+4]) * prime32_3
+ h32 = rol17(h32) * prime32_4
+ }
+ for ; p < n; p++ {
+ h32 += uint32(buf[p]) * prime32_5
+ h32 = rol11(h32) * prime32_1
+ }
+
+ h32 ^= h32 >> 15
+ h32 *= prime32_2
+ h32 ^= h32 >> 13
+ h32 *= prime32_3
+ h32 ^= h32 >> 16
+
+ return h32
+}
+
+// ChecksumZero returns the 32bits Hash value.
+func ChecksumZero(input []byte) uint32 {
+ n := len(input)
+ h32 := uint32(n)
+
+ if n < 16 {
+ h32 += prime32_5
+ } else {
+ v1 := prime32_1plus2
+ v2 := prime32_2
+ v3 := uint32(0)
+ v4 := prime32_minus1
+ p := 0
+ for n := n - 16; p <= n; p += 16 {
+ sub := input[p:][:16] //BCE hint for compiler
+ v1 = rol13(v1+binary.LittleEndian.Uint32(sub[:])*prime32_2) * prime32_1
+ v2 = rol13(v2+binary.LittleEndian.Uint32(sub[4:])*prime32_2) * prime32_1
+ v3 = rol13(v3+binary.LittleEndian.Uint32(sub[8:])*prime32_2) * prime32_1
+ v4 = rol13(v4+binary.LittleEndian.Uint32(sub[12:])*prime32_2) * prime32_1
+ }
+ input = input[p:]
+ n -= p
+ h32 += rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4)
+ }
+
+ p := 0
+ for n := n - 4; p <= n; p += 4 {
+ h32 += binary.LittleEndian.Uint32(input[p:p+4]) * prime32_3
+ h32 = rol17(h32) * prime32_4
+ }
+ for p < n {
+ h32 += uint32(input[p]) * prime32_5
+ h32 = rol11(h32) * prime32_1
+ p++
+ }
+
+ h32 ^= h32 >> 15
+ h32 *= prime32_2
+ h32 ^= h32 >> 13
+ h32 *= prime32_3
+ h32 ^= h32 >> 16
+
+ return h32
+}
+
+// Uint32Zero hashes x with seed 0.
+func Uint32Zero(x uint32) uint32 {
+ h := prime32_5 + 4 + x*prime32_3
+ h = rol17(h) * prime32_4
+ h ^= h >> 15
+ h *= prime32_2
+ h ^= h >> 13
+ h *= prime32_3
+ h ^= h >> 16
+ return h
+}
+
+func rol1(u uint32) uint32 {
+ return u<<1 | u>>31
+}
+
+func rol7(u uint32) uint32 {
+ return u<<7 | u>>25
+}
+
+func rol11(u uint32) uint32 {
+ return u<<11 | u>>21
+}
+
+func rol12(u uint32) uint32 {
+ return u<<12 | u>>20
+}
+
+func rol13(u uint32) uint32 {
+ return u<<13 | u>>19
+}
+
+func rol17(u uint32) uint32 {
+ return u<<17 | u>>15
+}
+
+func rol18(u uint32) uint32 {
+ return u<<18 | u>>14
+}
diff --git a/vendor/github.com/pierrec/lz4/lz4.go b/vendor/github.com/pierrec/lz4/lz4.go
new file mode 100644
index 00000000..35802756
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/lz4.go
@@ -0,0 +1,68 @@
+// Package lz4 implements reading and writing lz4 compressed data (a frame),
+// as specified in http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html.
+//
+// Although the block level compression and decompression functions are exposed and are fully compatible
+// with the lz4 block format definition, they are low level and should not be used directly.
+// For a complete description of an lz4 compressed block, see:
+// http://fastcompression.blogspot.fr/2011/05/lz4-explained.html
+//
+// See https://github.com/Cyan4973/lz4 for the reference C implementation.
+//
+package lz4
+
+const (
+ // Extension is the LZ4 frame file name extension
+ Extension = ".lz4"
+ // Version is the LZ4 frame format version
+ Version = 1
+
+ frameMagic uint32 = 0x184D2204
+ frameSkipMagic uint32 = 0x184D2A50
+
+ // The following constants are used to setup the compression algorithm.
+ minMatch = 4 // the minimum size of the match sequence size (4 bytes)
+ winSizeLog = 16 // LZ4 64Kb window size limit
+ winSize = 1 << winSizeLog
+ winMask = winSize - 1 // 64Kb window of previous data for dependent blocks
+ compressedBlockFlag = 1 << 31
+ compressedBlockMask = compressedBlockFlag - 1
+
+ // hashLog determines the size of the hash table used to quickly find a previous match position.
+ // Its value influences the compression speed and memory usage, the lower the faster,
+ // but at the expense of the compression ratio.
+ // 16 seems to be the best compromise.
+ hashLog = 16
+ hashTableSize = 1 << hashLog
+ hashShift = uint((minMatch * 8) - hashLog)
+
+ mfLimit = 8 + minMatch // The last match cannot start within the last 12 bytes.
+ skipStrength = 6 // variable step for fast scan
+)
+
+// map the block max size id with its value in bytes: 64Kb, 256Kb, 1Mb and 4Mb.
+var (
+ bsMapID = map[byte]int{4: 64 << 10, 5: 256 << 10, 6: 1 << 20, 7: 4 << 20}
+ bsMapValue = make(map[int]byte, len(bsMapID))
+)
+
+// Reversed.
+func init() {
+ for i, v := range bsMapID {
+ bsMapValue[v] = i
+ }
+}
+
+// Header describes the various flags that can be set on a Writer or obtained from a Reader.
+// The default values match those of the LZ4 frame format definition
+// (http://fastcompression.blogspot.com/2013/04/lz4-streaming-format-final.html).
+//
+// NB. in a Reader, in case of concatenated frames, the Header values may change between Read() calls.
+// It is the caller responsibility to check them if necessary.
+type Header struct {
+ BlockChecksum bool // Compressed blocks checksum flag.
+ NoChecksum bool // Frame checksum flag.
+ BlockMaxSize int // Size of the uncompressed data block (one of [64KB, 256KB, 1MB, 4MB]). Default=4MB.
+ Size uint64 // Frame total size. It is _not_ computed by the Writer.
+ CompressionLevel int // Compression level (higher is better, use 0 for fastest compression).
+ done bool // Header processed flag (Read or Write and checked).
+}
diff --git a/vendor/github.com/pierrec/lz4/lz4_go1.10.go b/vendor/github.com/pierrec/lz4/lz4_go1.10.go
new file mode 100644
index 00000000..9a0fb007
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/lz4_go1.10.go
@@ -0,0 +1,29 @@
+//+build go1.10
+
+package lz4
+
+import (
+ "fmt"
+ "strings"
+)
+
+func (h Header) String() string {
+ var s strings.Builder
+
+ s.WriteString(fmt.Sprintf("%T{", h))
+ if h.BlockChecksum {
+ s.WriteString("BlockChecksum: true ")
+ }
+ if h.NoChecksum {
+ s.WriteString("NoChecksum: true ")
+ }
+ if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 {
+ s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs))
+ }
+ if l := h.CompressionLevel; l != 0 {
+ s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l))
+ }
+ s.WriteByte('}')
+
+ return s.String()
+}
diff --git a/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go b/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go
new file mode 100644
index 00000000..12c761a2
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/lz4_notgo1.10.go
@@ -0,0 +1,29 @@
+//+build !go1.10
+
+package lz4
+
+import (
+ "bytes"
+ "fmt"
+)
+
+func (h Header) String() string {
+ var s bytes.Buffer
+
+ s.WriteString(fmt.Sprintf("%T{", h))
+ if h.BlockChecksum {
+ s.WriteString("BlockChecksum: true ")
+ }
+ if h.NoChecksum {
+ s.WriteString("NoChecksum: true ")
+ }
+ if bs := h.BlockMaxSize; bs != 0 && bs != 4<<20 {
+ s.WriteString(fmt.Sprintf("BlockMaxSize: %d ", bs))
+ }
+ if l := h.CompressionLevel; l != 0 {
+ s.WriteString(fmt.Sprintf("CompressionLevel: %d ", l))
+ }
+ s.WriteByte('}')
+
+ return s.String()
+}
diff --git a/vendor/github.com/pierrec/lz4/reader.go b/vendor/github.com/pierrec/lz4/reader.go
new file mode 100644
index 00000000..f08db47d
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/reader.go
@@ -0,0 +1,295 @@
+package lz4
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+ "io/ioutil"
+
+ "github.com/pierrec/lz4/internal/xxh32"
+)
+
+// Reader implements the LZ4 frame decoder.
+// The Header is set after the first call to Read().
+// The Header may change between Read() calls in case of concatenated frames.
+type Reader struct {
+ Header
+
+ buf [8]byte // Scrap buffer.
+ pos int64 // Current position in src.
+ src io.Reader // Source.
+ zdata []byte // Compressed data.
+ data []byte // Uncompressed data.
+ idx int // Index of unread bytes into data.
+ checksum xxh32.XXHZero // Frame hash.
+}
+
+// NewReader returns a new LZ4 frame decoder.
+// No access to the underlying io.Reader is performed.
+func NewReader(src io.Reader) *Reader {
+ r := &Reader{src: src}
+ return r
+}
+
+// readHeader checks the frame magic number and parses the frame descriptoz.
+// Skippable frames are supported even as a first frame although the LZ4
+// specifications recommends skippable frames not to be used as first frames.
+func (z *Reader) readHeader(first bool) error {
+ defer z.checksum.Reset()
+
+ buf := z.buf[:]
+ for {
+ magic, err := z.readUint32()
+ if err != nil {
+ z.pos += 4
+ if !first && err == io.ErrUnexpectedEOF {
+ return io.EOF
+ }
+ return err
+ }
+ if magic == frameMagic {
+ break
+ }
+ if magic>>8 != frameSkipMagic>>8 {
+ return ErrInvalid
+ }
+ skipSize, err := z.readUint32()
+ if err != nil {
+ return err
+ }
+ z.pos += 4
+ m, err := io.CopyN(ioutil.Discard, z.src, int64(skipSize))
+ if err != nil {
+ return err
+ }
+ z.pos += m
+ }
+
+ // Header.
+ if _, err := io.ReadFull(z.src, buf[:2]); err != nil {
+ return err
+ }
+ z.pos += 8
+
+ b := buf[0]
+ if v := b >> 6; v != Version {
+ return fmt.Errorf("lz4: invalid version: got %d; expected %d", v, Version)
+ }
+ if b>>5&1 == 0 {
+ return fmt.Errorf("lz4: block dependency not supported")
+ }
+ z.BlockChecksum = b>>4&1 > 0
+ frameSize := b>>3&1 > 0
+ z.NoChecksum = b>>2&1 == 0
+
+ bmsID := buf[1] >> 4 & 0x7
+ bSize, ok := bsMapID[bmsID]
+ if !ok {
+ return fmt.Errorf("lz4: invalid block max size ID: %d", bmsID)
+ }
+ z.BlockMaxSize = bSize
+
+ // Allocate the compressed/uncompressed buffers.
+ // The compressed buffer cannot exceed the uncompressed one.
+ if n := 2 * bSize; cap(z.zdata) < n {
+ z.zdata = make([]byte, n, n)
+ }
+ if debugFlag {
+ debug("header block max size id=%d size=%d", bmsID, bSize)
+ }
+ z.zdata = z.zdata[:bSize]
+ z.data = z.zdata[:cap(z.zdata)][bSize:]
+ z.idx = len(z.data)
+
+ z.checksum.Write(buf[0:2])
+
+ if frameSize {
+ buf := buf[:8]
+ if _, err := io.ReadFull(z.src, buf); err != nil {
+ return err
+ }
+ z.Size = binary.LittleEndian.Uint64(buf)
+ z.pos += 8
+ z.checksum.Write(buf)
+ }
+
+ // Header checksum.
+ if _, err := io.ReadFull(z.src, buf[:1]); err != nil {
+ return err
+ }
+ z.pos++
+ if h := byte(z.checksum.Sum32() >> 8 & 0xFF); h != buf[0] {
+ return fmt.Errorf("lz4: invalid header checksum: got %x; expected %x", buf[0], h)
+ }
+
+ z.Header.done = true
+ if debugFlag {
+ debug("header read: %v", z.Header)
+ }
+
+ return nil
+}
+
+// Read decompresses data from the underlying source into the supplied buffer.
+//
+// Since there can be multiple streams concatenated, Header values may
+// change between calls to Read(). If that is the case, no data is actually read from
+// the underlying io.Reader, to allow for potential input buffer resizing.
+func (z *Reader) Read(buf []byte) (int, error) {
+ if debugFlag {
+ debug("Read buf len=%d", len(buf))
+ }
+ if !z.Header.done {
+ if err := z.readHeader(true); err != nil {
+ return 0, err
+ }
+ if debugFlag {
+ debug("header read OK compressed buffer %d / %d uncompressed buffer %d : %d index=%d",
+ len(z.zdata), cap(z.zdata), len(z.data), cap(z.data), z.idx)
+ }
+ }
+
+ if len(buf) == 0 {
+ return 0, nil
+ }
+
+ if z.idx == len(z.data) {
+ // No data ready for reading, process the next block.
+ if debugFlag {
+ debug("reading block from writer")
+ }
+ // Block length: 0 = end of frame, highest bit set: uncompressed.
+ bLen, err := z.readUint32()
+ if err != nil {
+ return 0, err
+ }
+ z.pos += 4
+
+ if bLen == 0 {
+ // End of frame reached.
+ if !z.NoChecksum {
+ // Validate the frame checksum.
+ checksum, err := z.readUint32()
+ if err != nil {
+ return 0, err
+ }
+ if debugFlag {
+ debug("frame checksum got=%x / want=%x", z.checksum.Sum32(), checksum)
+ }
+ z.pos += 4
+ if h := z.checksum.Sum32(); checksum != h {
+ return 0, fmt.Errorf("lz4: invalid frame checksum: got %x; expected %x", h, checksum)
+ }
+ }
+
+ // Get ready for the next concatenated frame and keep the position.
+ pos := z.pos
+ z.Reset(z.src)
+ z.pos = pos
+
+ // Since multiple frames can be concatenated, check for more.
+ return 0, z.readHeader(false)
+ }
+
+ if debugFlag {
+ debug("raw block size %d", bLen)
+ }
+ if bLen&compressedBlockFlag > 0 {
+ // Uncompressed block.
+ bLen &= compressedBlockMask
+ if debugFlag {
+ debug("uncompressed block size %d", bLen)
+ }
+ if int(bLen) > cap(z.data) {
+ return 0, fmt.Errorf("lz4: invalid block size: %d", bLen)
+ }
+ z.data = z.data[:bLen]
+ if _, err := io.ReadFull(z.src, z.data); err != nil {
+ return 0, err
+ }
+ z.pos += int64(bLen)
+
+ if z.BlockChecksum {
+ checksum, err := z.readUint32()
+ if err != nil {
+ return 0, err
+ }
+ z.pos += 4
+
+ if h := xxh32.ChecksumZero(z.data); h != checksum {
+ return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum)
+ }
+ }
+
+ } else {
+ // Compressed block.
+ if debugFlag {
+ debug("compressed block size %d", bLen)
+ }
+ if int(bLen) > cap(z.data) {
+ return 0, fmt.Errorf("lz4: invalid block size: %d", bLen)
+ }
+ zdata := z.zdata[:bLen]
+ if _, err := io.ReadFull(z.src, zdata); err != nil {
+ return 0, err
+ }
+ z.pos += int64(bLen)
+
+ if z.BlockChecksum {
+ checksum, err := z.readUint32()
+ if err != nil {
+ return 0, err
+ }
+ z.pos += 4
+
+ if h := xxh32.ChecksumZero(zdata); h != checksum {
+ return 0, fmt.Errorf("lz4: invalid block checksum: got %x; expected %x", h, checksum)
+ }
+ }
+
+ n, err := UncompressBlock(zdata, z.data)
+ if err != nil {
+ return 0, err
+ }
+ z.data = z.data[:n]
+ }
+
+ if !z.NoChecksum {
+ z.checksum.Write(z.data)
+ if debugFlag {
+ debug("current frame checksum %x", z.checksum.Sum32())
+ }
+ }
+ z.idx = 0
+ }
+
+ n := copy(buf, z.data[z.idx:])
+ z.idx += n
+ if debugFlag {
+ debug("copied %d bytes to input", n)
+ }
+
+ return n, nil
+}
+
+// Reset discards the Reader's state and makes it equivalent to the
+// result of its original state from NewReader, but reading from r instead.
+// This permits reusing a Reader rather than allocating a new one.
+func (z *Reader) Reset(r io.Reader) {
+ z.Header = Header{}
+ z.pos = 0
+ z.src = r
+ z.zdata = z.zdata[:0]
+ z.data = z.data[:0]
+ z.idx = 0
+ z.checksum.Reset()
+}
+
+// readUint32 reads an uint32 into the supplied buffer.
+// The idea is to make use of the already allocated buffers avoiding additional allocations.
+func (z *Reader) readUint32() (uint32, error) {
+ buf := z.buf[:4]
+ _, err := io.ReadFull(z.src, buf)
+ x := binary.LittleEndian.Uint32(buf)
+ return x, err
+}
diff --git a/vendor/github.com/pierrec/lz4/writer.go b/vendor/github.com/pierrec/lz4/writer.go
new file mode 100644
index 00000000..01204380
--- /dev/null
+++ b/vendor/github.com/pierrec/lz4/writer.go
@@ -0,0 +1,267 @@
+package lz4
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+
+ "github.com/pierrec/lz4/internal/xxh32"
+)
+
+// Writer implements the LZ4 frame encoder.
+type Writer struct {
+ Header
+
+ buf [19]byte // magic number(4) + header(flags(2)+[Size(8)+DictID(4)]+checksum(1)) does not exceed 19 bytes
+ dst io.Writer // Destination.
+ checksum xxh32.XXHZero // Frame checksum.
+ zdata []byte // Compressed data.
+ data []byte // Data to be compressed.
+ idx int // Index into data.
+ hashtable [winSize]int // Hash table used in CompressBlock().
+}
+
+// NewWriter returns a new LZ4 frame encoder.
+// No access to the underlying io.Writer is performed.
+// The supplied Header is checked at the first Write.
+// It is ok to change it before the first Write but then not until a Reset() is performed.
+func NewWriter(dst io.Writer) *Writer {
+ return &Writer{dst: dst}
+}
+
+// writeHeader builds and writes the header (magic+header) to the underlying io.Writer.
+func (z *Writer) writeHeader() error {
+ // Default to 4Mb if BlockMaxSize is not set.
+ if z.Header.BlockMaxSize == 0 {
+ z.Header.BlockMaxSize = bsMapID[7]
+ }
+ // The only option that needs to be validated.
+ bSize := z.Header.BlockMaxSize
+ bSizeID, ok := bsMapValue[bSize]
+ if !ok {
+ return fmt.Errorf("lz4: invalid block max size: %d", bSize)
+ }
+ // Allocate the compressed/uncompressed buffers.
+ // The compressed buffer cannot exceed the uncompressed one.
+ if n := 2 * bSize; cap(z.zdata) < n {
+ z.zdata = make([]byte, n, n)
+ }
+ z.zdata = z.zdata[:bSize]
+ z.data = z.zdata[:cap(z.zdata)][bSize:]
+ z.idx = 0
+
+ // Size is optional.
+ buf := z.buf[:]
+
+ // Set the fixed size data: magic number, block max size and flags.
+ binary.LittleEndian.PutUint32(buf[0:], frameMagic)
+ flg := byte(Version << 6)
+ flg |= 1 << 5 // No block dependency.
+ if z.Header.BlockChecksum {
+ flg |= 1 << 4
+ }
+ if z.Header.Size > 0 {
+ flg |= 1 << 3
+ }
+ if !z.Header.NoChecksum {
+ flg |= 1 << 2
+ }
+ buf[4] = flg
+ buf[5] = bSizeID << 4
+
+ // Current buffer size: magic(4) + flags(1) + block max size (1).
+ n := 6
+ // Optional items.
+ if z.Header.Size > 0 {
+ binary.LittleEndian.PutUint64(buf[n:], z.Header.Size)
+ n += 8
+ }
+
+ // The header checksum includes the flags, block max size and optional Size.
+ buf[n] = byte(xxh32.ChecksumZero(buf[4:n]) >> 8 & 0xFF)
+ z.checksum.Reset()
+
+ // Header ready, write it out.
+ if _, err := z.dst.Write(buf[0 : n+1]); err != nil {
+ return err
+ }
+ z.Header.done = true
+ if debugFlag {
+ debug("wrote header %v", z.Header)
+ }
+
+ return nil
+}
+
+// Write compresses data from the supplied buffer into the underlying io.Writer.
+// Write does not return until the data has been written.
+func (z *Writer) Write(buf []byte) (int, error) {
+ if !z.Header.done {
+ if err := z.writeHeader(); err != nil {
+ return 0, err
+ }
+ }
+ if debugFlag {
+ debug("input buffer len=%d index=%d", len(buf), z.idx)
+ }
+
+ zn := len(z.data)
+ var n int
+ for len(buf) > 0 {
+ if z.idx == 0 && len(buf) >= zn {
+ // Avoid a copy as there is enough data for a block.
+ if err := z.compressBlock(buf[:zn]); err != nil {
+ return n, err
+ }
+ n += zn
+ buf = buf[zn:]
+ continue
+ }
+ // Accumulate the data to be compressed.
+ m := copy(z.data[z.idx:], buf)
+ n += m
+ z.idx += m
+ buf = buf[m:]
+ if debugFlag {
+ debug("%d bytes copied to buf, current index %d", n, z.idx)
+ }
+
+ if z.idx < len(z.data) {
+ // Buffer not filled.
+ if debugFlag {
+ debug("need more data for compression")
+ }
+ return n, nil
+ }
+
+ // Buffer full.
+ if err := z.compressBlock(z.data); err != nil {
+ return n, err
+ }
+ z.idx = 0
+ }
+
+ return n, nil
+}
+
+// compressBlock compresses a block.
+func (z *Writer) compressBlock(data []byte) error {
+ if !z.NoChecksum {
+ z.checksum.Write(data)
+ }
+
+ // The compressed block size cannot exceed the input's.
+ var zn int
+ var err error
+
+ if level := z.Header.CompressionLevel; level != 0 {
+ zn, err = CompressBlockHC(data, z.zdata, level)
+ } else {
+ zn, err = CompressBlock(data, z.zdata, z.hashtable[:])
+ }
+
+ var zdata []byte
+ var bLen uint32
+ if debugFlag {
+ debug("block compression %d => %d", len(data), zn)
+ }
+ if err == nil && zn > 0 && zn < len(data) {
+ // Compressible and compressed size smaller than uncompressed: ok!
+ bLen = uint32(zn)
+ zdata = z.zdata[:zn]
+ } else {
+ // Uncompressed block.
+ bLen = uint32(len(data)) | compressedBlockFlag
+ zdata = data
+ }
+ if debugFlag {
+ debug("block compression to be written len=%d data len=%d", bLen, len(zdata))
+ }
+
+ // Write the block.
+ if err := z.writeUint32(bLen); err != nil {
+ return err
+ }
+ if _, err := z.dst.Write(zdata); err != nil {
+ return err
+ }
+
+ if z.BlockChecksum {
+ checksum := xxh32.ChecksumZero(zdata)
+ if debugFlag {
+ debug("block checksum %x", checksum)
+ }
+ if err := z.writeUint32(checksum); err != nil {
+ return err
+ }
+ }
+ if debugFlag {
+ debug("current frame checksum %x", z.checksum.Sum32())
+ }
+
+ return nil
+}
+
+// Flush flushes any pending compressed data to the underlying writer.
+// Flush does not return until the data has been written.
+// If the underlying writer returns an error, Flush returns that error.
+func (z *Writer) Flush() error {
+ if debugFlag {
+ debug("flush with index %d", z.idx)
+ }
+ if z.idx == 0 {
+ return nil
+ }
+
+ return z.compressBlock(z.data[:z.idx])
+}
+
+// Close closes the Writer, flushing any unwritten data to the underlying io.Writer, but does not close the underlying io.Writer.
+func (z *Writer) Close() error {
+ if !z.Header.done {
+ if err := z.writeHeader(); err != nil {
+ return err
+ }
+ }
+
+ if err := z.Flush(); err != nil {
+ return err
+ }
+
+ if debugFlag {
+ debug("writing last empty block")
+ }
+ if err := z.writeUint32(0); err != nil {
+ return err
+ }
+ if !z.NoChecksum {
+ checksum := z.checksum.Sum32()
+ if debugFlag {
+ debug("stream checksum %x", checksum)
+ }
+ if err := z.writeUint32(checksum); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// Reset clears the state of the Writer z such that it is equivalent to its
+// initial state from NewWriter, but instead writing to w.
+// No access to the underlying io.Writer is performed.
+func (z *Writer) Reset(w io.Writer) {
+ z.Header = Header{}
+ z.dst = w
+ z.checksum.Reset()
+ z.zdata = z.zdata[:0]
+ z.data = z.data[:0]
+ z.idx = 0
+}
+
+// writeUint32 writes a uint32 to the underlying writer.
+func (z *Writer) writeUint32(x uint32) error {
+ buf := z.buf[:4]
+ binary.LittleEndian.PutUint32(buf, x)
+ _, err := z.dst.Write(buf)
+ return err
+}
diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go
index 842ee804..7421f326 100644
--- a/vendor/github.com/pkg/errors/errors.go
+++ b/vendor/github.com/pkg/errors/errors.go
@@ -6,7 +6,7 @@
// return err
// }
//
-// which applied recursively up the call stack results in error reports
+// which when applied recursively up the call stack results in error reports
// without context or debugging information. The errors package allows
// programmers to add context to the failure path in their code in a way
// that does not destroy the original value of the error.
@@ -15,16 +15,17 @@
//
// The errors.Wrap function returns a new error that adds context to the
// original error by recording a stack trace at the point Wrap is called,
-// and the supplied message. For example
+// together with the supplied message. For example
//
// _, err := ioutil.ReadAll(r)
// if err != nil {
// return errors.Wrap(err, "read failed")
// }
//
-// If additional control is required the errors.WithStack and errors.WithMessage
-// functions destructure errors.Wrap into its component operations of annotating
-// an error with a stack trace and an a message, respectively.
+// If additional control is required, the errors.WithStack and
+// errors.WithMessage functions destructure errors.Wrap into its component
+// operations: annotating an error with a stack trace and with a message,
+// respectively.
//
// Retrieving the cause of an error
//
@@ -38,7 +39,7 @@
// }
//
// can be inspected by errors.Cause. errors.Cause will recursively retrieve
-// the topmost error which does not implement causer, which is assumed to be
+// the topmost error that does not implement causer, which is assumed to be
// the original cause. For example:
//
// switch err := errors.Cause(err).(type) {
@@ -48,16 +49,16 @@
// // unknown error
// }
//
-// causer interface is not exported by this package, but is considered a part
-// of stable public API.
+// Although the causer interface is not exported by this package, it is
+// considered a part of its stable public interface.
//
// Formatted printing of errors
//
// All error values returned from this package implement fmt.Formatter and can
-// be formatted by the fmt package. The following verbs are supported
+// be formatted by the fmt package. The following verbs are supported:
//
// %s print the error. If the error has a Cause it will be
-// printed recursively
+// printed recursively.
// %v see %s
// %+v extended format. Each Frame of the error's StackTrace will
// be printed in detail.
@@ -65,13 +66,13 @@
// Retrieving the stack trace of an error or wrapper
//
// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are
-// invoked. This information can be retrieved with the following interface.
+// invoked. This information can be retrieved with the following interface:
//
// type stackTracer interface {
// StackTrace() errors.StackTrace
// }
//
-// Where errors.StackTrace is defined as
+// The returned errors.StackTrace type is defined as
//
// type StackTrace []Frame
//
@@ -85,8 +86,8 @@
// }
// }
//
-// stackTracer interface is not exported by this package, but is considered a part
-// of stable public API.
+// Although the stackTracer interface is not exported by this package, it is
+// considered a part of its stable public interface.
//
// See the documentation for Frame.Format for more details.
package errors
@@ -192,7 +193,7 @@ func Wrap(err error, message string) error {
}
// Wrapf returns an error annotating err with a stack trace
-// at the point Wrapf is call, and the format specifier.
+// at the point Wrapf is called, and the format specifier.
// If err is nil, Wrapf returns nil.
func Wrapf(err error, format string, args ...interface{}) error {
if err == nil {
@@ -220,6 +221,18 @@ func WithMessage(err error, message string) error {
}
}
+// WithMessagef annotates err with the format specifier.
+// If err is nil, WithMessagef returns nil.
+func WithMessagef(err error, format string, args ...interface{}) error {
+ if err == nil {
+ return nil
+ }
+ return &withMessage{
+ cause: err,
+ msg: fmt.Sprintf(format, args...),
+ }
+}
+
type withMessage struct {
cause error
msg string
diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go
index 6b1f2891..2874a048 100644
--- a/vendor/github.com/pkg/errors/stack.go
+++ b/vendor/github.com/pkg/errors/stack.go
@@ -46,7 +46,8 @@ func (f Frame) line() int {
//
// Format accepts flags that alter the printing of some verbs, as follows:
//
-// %+s path of source file relative to the compile time GOPATH
+// %+s function name and path of source file relative to the compile time
+// GOPATH separated by \n\t (<funcname>\n\t<path>)
// %+v equivalent to %+s:%d
func (f Frame) Format(s fmt.State, verb rune) {
switch verb {
@@ -79,6 +80,14 @@ func (f Frame) Format(s fmt.State, verb rune) {
// StackTrace is stack of Frames from innermost (newest) to outermost (oldest).
type StackTrace []Frame
+// Format formats the stack of Frames according to the fmt.Formatter interface.
+//
+// %s lists source files for each Frame in the stack
+// %v lists the source file and line number for each Frame in the stack
+//
+// Format accepts flags that alter the printing of some verbs, as follows:
+//
+// %+v Prints filename, function, and line number for each Frame in the stack.
func (st StackTrace) Format(s fmt.State, verb rune) {
switch verb {
case 'v':
@@ -136,43 +145,3 @@ func funcname(name string) string {
i = strings.Index(name, ".")
return name[i+1:]
}
-
-func trimGOPATH(name, file string) string {
- // Here we want to get the source file path relative to the compile time
- // GOPATH. As of Go 1.6.x there is no direct way to know the compiled
- // GOPATH at runtime, but we can infer the number of path segments in the
- // GOPATH. We note that fn.Name() returns the function name qualified by
- // the import path, which does not include the GOPATH. Thus we can trim
- // segments from the beginning of the file path until the number of path
- // separators remaining is one more than the number of path separators in
- // the function name. For example, given:
- //
- // GOPATH /home/user
- // file /home/user/src/pkg/sub/file.go
- // fn.Name() pkg/sub.Type.Method
- //
- // We want to produce:
- //
- // pkg/sub/file.go
- //
- // From this we can easily see that fn.Name() has one less path separator
- // than our desired output. We count separators from the end of the file
- // path until it finds two more than in the function name and then move
- // one character forward to preserve the initial path segment without a
- // leading separator.
- const sep = "/"
- goal := strings.Count(name, sep) + 2
- i := len(file)
- for n := 0; n < goal; n++ {
- i = strings.LastIndex(file[:i], sep)
- if i == -1 {
- // not enough separators found, set i so that the slice expression
- // below leaves file unmodified
- i = -len(sep)
- break
- }
- }
- // get back to 0 or trim the leading separator
- file = file[i+len(sep):]
- return file
-}
diff --git a/vendor/github.com/ryanuber/go-glob/glob.go b/vendor/github.com/ryanuber/go-glob/glob.go
index d9d46379..e67db3be 100644
--- a/vendor/github.com/ryanuber/go-glob/glob.go
+++ b/vendor/github.com/ryanuber/go-glob/glob.go
@@ -30,20 +30,25 @@ func Glob(pattern, subj string) bool {
trailingGlob := strings.HasSuffix(pattern, GLOB)
end := len(parts) - 1
- // Check the first section. Requires special handling.
- if !leadingGlob && !strings.HasPrefix(subj, parts[0]) {
- return false
- }
-
- // Go over the middle parts and ensure they match.
- for i := 1; i < end; i++ {
- if !strings.Contains(subj, parts[i]) {
- return false
+ // Go over the leading parts and ensure they match.
+ for i := 0; i < end; i++ {
+ idx := strings.Index(subj, parts[i])
+
+ switch i {
+ case 0:
+ // Check the first section. Requires special handling.
+ if !leadingGlob && idx != 0 {
+ return false
+ }
+ default:
+ // Check that the middle parts match.
+ if idx < 0 {
+ return false
+ }
}
// Trim evaluated text from subj as we loop over the pattern.
- idx := strings.Index(subj, parts[i]) + len(parts[i])
- subj = subj[idx:]
+ subj = subj[idx+len(parts[i]):]
}
// Reached the last section. Requires special handling.
diff --git a/vendor/github.com/spf13/afero/copyOnWriteFs.go b/vendor/github.com/spf13/afero/copyOnWriteFs.go
index 9aef3979..e8108a85 100644
--- a/vendor/github.com/spf13/afero/copyOnWriteFs.go
+++ b/vendor/github.com/spf13/afero/copyOnWriteFs.go
@@ -267,7 +267,7 @@ func (u *CopyOnWriteFs) Mkdir(name string, perm os.FileMode) error {
return u.layer.MkdirAll(name, perm)
}
if dir {
- return syscall.EEXIST
+ return ErrFileExists
}
return u.layer.MkdirAll(name, perm)
}
@@ -282,7 +282,8 @@ func (u *CopyOnWriteFs) MkdirAll(name string, perm os.FileMode) error {
return u.layer.MkdirAll(name, perm)
}
if dir {
- return syscall.EEXIST
+ // This is in line with how os.MkdirAll behaves.
+ return nil
}
return u.layer.MkdirAll(name, perm)
}
diff --git a/vendor/github.com/spf13/afero/unionFile.go b/vendor/github.com/spf13/afero/unionFile.go
index 1e78f7d1..abcf12d3 100644
--- a/vendor/github.com/spf13/afero/unionFile.go
+++ b/vendor/github.com/spf13/afero/unionFile.go
@@ -156,6 +156,7 @@ var defaultUnionMergeDirsFn = func(lofi, bofi []os.FileInfo) ([]os.FileInfo, err
// Readdir will weave the two directories together and
// return a single view of the overlayed directories
+// At the end of the directory view, the error is io.EOF.
func (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) {
var merge DirsMerger = f.Merger
if merge == nil {
@@ -185,9 +186,19 @@ func (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) {
}
f.files = append(f.files, merged...)
}
+
+ if f.off >= len(f.files) {
+ return nil, io.EOF
+ }
+
if c == -1 {
return f.files[f.off:], nil
}
+
+ if c > len(f.files) {
+ c = len(f.files)
+ }
+
defer func() { f.off += c }()
return f.files[f.off:c], nil
}
diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go
index 5cc710cc..9beeda8e 100644
--- a/vendor/github.com/spf13/pflag/flag.go
+++ b/vendor/github.com/spf13/pflag/flag.go
@@ -925,13 +925,16 @@ func stripUnknownFlagValue(args []string) []string {
}
first := args[0]
- if first[0] == '-' {
+ if len(first) > 0 && first[0] == '-' {
//--unknown --next-flag ...
return args
}
//--unknown arg ... (args will be arg ...)
- return args[1:]
+ if len(args) > 1 {
+ return args[1:]
+ }
+ return nil
}
func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) {
diff --git a/vendor/github.com/spf13/pflag/string_to_int.go b/vendor/github.com/spf13/pflag/string_to_int.go
new file mode 100644
index 00000000..5ceda396
--- /dev/null
+++ b/vendor/github.com/spf13/pflag/string_to_int.go
@@ -0,0 +1,149 @@
+package pflag
+
+import (
+ "bytes"
+ "fmt"
+ "strconv"
+ "strings"
+)
+
+// -- stringToInt Value
+type stringToIntValue struct {
+ value *map[string]int
+ changed bool
+}
+
+func newStringToIntValue(val map[string]int, p *map[string]int) *stringToIntValue {
+ ssv := new(stringToIntValue)
+ ssv.value = p
+ *ssv.value = val
+ return ssv
+}
+
+// Format: a=1,b=2
+func (s *stringToIntValue) Set(val string) error {
+ ss := strings.Split(val, ",")
+ out := make(map[string]int, len(ss))
+ for _, pair := range ss {
+ kv := strings.SplitN(pair, "=", 2)
+ if len(kv) != 2 {
+ return fmt.Errorf("%s must be formatted as key=value", pair)
+ }
+ var err error
+ out[kv[0]], err = strconv.Atoi(kv[1])
+ if err != nil {
+ return err
+ }
+ }
+ if !s.changed {
+ *s.value = out
+ } else {
+ for k, v := range out {
+ (*s.value)[k] = v
+ }
+ }
+ s.changed = true
+ return nil
+}
+
+func (s *stringToIntValue) Type() string {
+ return "stringToInt"
+}
+
+func (s *stringToIntValue) String() string {
+ var buf bytes.Buffer
+ i := 0
+ for k, v := range *s.value {
+ if i > 0 {
+ buf.WriteRune(',')
+ }
+ buf.WriteString(k)
+ buf.WriteRune('=')
+ buf.WriteString(strconv.Itoa(v))
+ i++
+ }
+ return "[" + buf.String() + "]"
+}
+
+func stringToIntConv(val string) (interface{}, error) {
+ val = strings.Trim(val, "[]")
+ // An empty string would cause an empty map
+ if len(val) == 0 {
+ return map[string]int{}, nil
+ }
+ ss := strings.Split(val, ",")
+ out := make(map[string]int, len(ss))
+ for _, pair := range ss {
+ kv := strings.SplitN(pair, "=", 2)
+ if len(kv) != 2 {
+ return nil, fmt.Errorf("%s must be formatted as key=value", pair)
+ }
+ var err error
+ out[kv[0]], err = strconv.Atoi(kv[1])
+ if err != nil {
+ return nil, err
+ }
+ }
+ return out, nil
+}
+
+// GetStringToInt return the map[string]int value of a flag with the given name
+func (f *FlagSet) GetStringToInt(name string) (map[string]int, error) {
+ val, err := f.getFlagType(name, "stringToInt", stringToIntConv)
+ if err != nil {
+ return map[string]int{}, err
+ }
+ return val.(map[string]int), nil
+}
+
+// StringToIntVar defines a string flag with specified name, default value, and usage string.
+// The argument p points to a map[string]int variable in which to store the values of the multiple flags.
+// The value of each argument will not try to be separated by comma
+func (f *FlagSet) StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) {
+ f.VarP(newStringToIntValue(value, p), name, "", usage)
+}
+
+// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) {
+ f.VarP(newStringToIntValue(value, p), name, shorthand, usage)
+}
+
+// StringToIntVar defines a string flag with specified name, default value, and usage string.
+// The argument p points to a map[string]int variable in which to store the value of the flag.
+// The value of each argument will not try to be separated by comma
+func StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) {
+ CommandLine.VarP(newStringToIntValue(value, p), name, "", usage)
+}
+
+// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash.
+func StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) {
+ CommandLine.VarP(newStringToIntValue(value, p), name, shorthand, usage)
+}
+
+// StringToInt defines a string flag with specified name, default value, and usage string.
+// The return value is the address of a map[string]int variable that stores the value of the flag.
+// The value of each argument will not try to be separated by comma
+func (f *FlagSet) StringToInt(name string, value map[string]int, usage string) *map[string]int {
+ p := map[string]int{}
+ f.StringToIntVarP(&p, name, "", value, usage)
+ return &p
+}
+
+// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int {
+ p := map[string]int{}
+ f.StringToIntVarP(&p, name, shorthand, value, usage)
+ return &p
+}
+
+// StringToInt defines a string flag with specified name, default value, and usage string.
+// The return value is the address of a map[string]int variable that stores the value of the flag.
+// The value of each argument will not try to be separated by comma
+func StringToInt(name string, value map[string]int, usage string) *map[string]int {
+ return CommandLine.StringToIntP(name, "", value, usage)
+}
+
+// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash.
+func StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int {
+ return CommandLine.StringToIntP(name, shorthand, value, usage)
+}
diff --git a/vendor/github.com/spf13/pflag/string_to_string.go b/vendor/github.com/spf13/pflag/string_to_string.go
new file mode 100644
index 00000000..890a01af
--- /dev/null
+++ b/vendor/github.com/spf13/pflag/string_to_string.go
@@ -0,0 +1,160 @@
+package pflag
+
+import (
+ "bytes"
+ "encoding/csv"
+ "fmt"
+ "strings"
+)
+
+// -- stringToString Value
+type stringToStringValue struct {
+ value *map[string]string
+ changed bool
+}
+
+func newStringToStringValue(val map[string]string, p *map[string]string) *stringToStringValue {
+ ssv := new(stringToStringValue)
+ ssv.value = p
+ *ssv.value = val
+ return ssv
+}
+
+// Format: a=1,b=2
+func (s *stringToStringValue) Set(val string) error {
+ var ss []string
+ n := strings.Count(val, "=")
+ switch n {
+ case 0:
+ return fmt.Errorf("%s must be formatted as key=value", val)
+ case 1:
+ ss = append(ss, strings.Trim(val, `"`))
+ default:
+ r := csv.NewReader(strings.NewReader(val))
+ var err error
+ ss, err = r.Read()
+ if err != nil {
+ return err
+ }
+ }
+
+ out := make(map[string]string, len(ss))
+ for _, pair := range ss {
+ kv := strings.SplitN(pair, "=", 2)
+ if len(kv) != 2 {
+ return fmt.Errorf("%s must be formatted as key=value", pair)
+ }
+ out[kv[0]] = kv[1]
+ }
+ if !s.changed {
+ *s.value = out
+ } else {
+ for k, v := range out {
+ (*s.value)[k] = v
+ }
+ }
+ s.changed = true
+ return nil
+}
+
+func (s *stringToStringValue) Type() string {
+ return "stringToString"
+}
+
+func (s *stringToStringValue) String() string {
+ records := make([]string, 0, len(*s.value)>>1)
+ for k, v := range *s.value {
+ records = append(records, k+"="+v)
+ }
+
+ var buf bytes.Buffer
+ w := csv.NewWriter(&buf)
+ if err := w.Write(records); err != nil {
+ panic(err)
+ }
+ w.Flush()
+ return "[" + strings.TrimSpace(buf.String()) + "]"
+}
+
+func stringToStringConv(val string) (interface{}, error) {
+ val = strings.Trim(val, "[]")
+ // An empty string would cause an empty map
+ if len(val) == 0 {
+ return map[string]string{}, nil
+ }
+ r := csv.NewReader(strings.NewReader(val))
+ ss, err := r.Read()
+ if err != nil {
+ return nil, err
+ }
+ out := make(map[string]string, len(ss))
+ for _, pair := range ss {
+ kv := strings.SplitN(pair, "=", 2)
+ if len(kv) != 2 {
+ return nil, fmt.Errorf("%s must be formatted as key=value", pair)
+ }
+ out[kv[0]] = kv[1]
+ }
+ return out, nil
+}
+
+// GetStringToString return the map[string]string value of a flag with the given name
+func (f *FlagSet) GetStringToString(name string) (map[string]string, error) {
+ val, err := f.getFlagType(name, "stringToString", stringToStringConv)
+ if err != nil {
+ return map[string]string{}, err
+ }
+ return val.(map[string]string), nil
+}
+
+// StringToStringVar defines a string flag with specified name, default value, and usage string.
+// The argument p points to a map[string]string variable in which to store the values of the multiple flags.
+// The value of each argument will not try to be separated by comma
+func (f *FlagSet) StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) {
+ f.VarP(newStringToStringValue(value, p), name, "", usage)
+}
+
+// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) {
+ f.VarP(newStringToStringValue(value, p), name, shorthand, usage)
+}
+
+// StringToStringVar defines a string flag with specified name, default value, and usage string.
+// The argument p points to a map[string]string variable in which to store the value of the flag.
+// The value of each argument will not try to be separated by comma
+func StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) {
+ CommandLine.VarP(newStringToStringValue(value, p), name, "", usage)
+}
+
+// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash.
+func StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) {
+ CommandLine.VarP(newStringToStringValue(value, p), name, shorthand, usage)
+}
+
+// StringToString defines a string flag with specified name, default value, and usage string.
+// The return value is the address of a map[string]string variable that stores the value of the flag.
+// The value of each argument will not try to be separated by comma
+func (f *FlagSet) StringToString(name string, value map[string]string, usage string) *map[string]string {
+ p := map[string]string{}
+ f.StringToStringVarP(&p, name, "", value, usage)
+ return &p
+}
+
+// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string {
+ p := map[string]string{}
+ f.StringToStringVarP(&p, name, shorthand, value, usage)
+ return &p
+}
+
+// StringToString defines a string flag with specified name, default value, and usage string.
+// The return value is the address of a map[string]string variable that stores the value of the flag.
+// The value of each argument will not try to be separated by comma
+func StringToString(name string, value map[string]string, usage string) *map[string]string {
+ return CommandLine.StringToStringP(name, "", value, usage)
+}
+
+// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash.
+func StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string {
+ return CommandLine.StringToStringP(name, shorthand, value, usage)
+}
diff --git a/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/stretchr/testify/LICENSE
index 473b670a..f38ec595 100644
--- a/vendor/github.com/stretchr/testify/LICENSE
+++ b/vendor/github.com/stretchr/testify/LICENSE
@@ -1,22 +1,21 @@
-Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell
+MIT License
-Please consider promoting this project if you find it useful.
+Copyright (c) 2012-2018 Mat Ryer and Tyler Bunnell
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without restriction,
-including without limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
-OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
-OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go
index 5bdec56c..9bd4a80e 100644
--- a/vendor/github.com/stretchr/testify/assert/assertions.go
+++ b/vendor/github.com/stretchr/testify/assert/assertions.go
@@ -39,7 +39,7 @@ type ValueAssertionFunc func(TestingT, interface{}, ...interface{}) bool
// for table driven tests.
type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool
-// ValuesAssertionFunc is a common function prototype when validating an error value. Can be useful
+// ErrorAssertionFunc is a common function prototype when validating an error value. Can be useful
// for table driven tests.
type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool
@@ -179,7 +179,11 @@ func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
return ""
}
if len(msgAndArgs) == 1 {
- return msgAndArgs[0].(string)
+ msg := msgAndArgs[0]
+ if msgAsStr, ok := msg.(string); ok {
+ return msgAsStr
+ }
+ return fmt.Sprintf("%+v", msg)
}
if len(msgAndArgs) > 1 {
return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)
@@ -415,6 +419,17 @@ func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
return Fail(t, "Expected value not to be nil.", msgAndArgs...)
}
+// containsKind checks if a specified kind in the slice of kinds.
+func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {
+ for i := 0; i < len(kinds); i++ {
+ if kind == kinds[i] {
+ return true
+ }
+ }
+
+ return false
+}
+
// isNil checks if a specified object is nil or not, without Failing.
func isNil(object interface{}) bool {
if object == nil {
@@ -423,7 +438,14 @@ func isNil(object interface{}) bool {
value := reflect.ValueOf(object)
kind := value.Kind()
- if kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() {
+ isNilableKind := containsKind(
+ []reflect.Kind{
+ reflect.Chan, reflect.Func,
+ reflect.Interface, reflect.Map,
+ reflect.Ptr, reflect.Slice},
+ kind)
+
+ if isNilableKind && value.IsNil() {
return true
}
@@ -1327,7 +1349,7 @@ func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) {
}
// diff returns a diff of both values as long as both are of the same type and
-// are a struct, map, slice or array. Otherwise it returns an empty string.
+// are a struct, map, slice, array or string. Otherwise it returns an empty string.
func diff(expected interface{}, actual interface{}) string {
if expected == nil || actual == nil {
return ""
@@ -1345,7 +1367,7 @@ func diff(expected interface{}, actual interface{}) string {
}
var e, a string
- if ek != reflect.String {
+ if et != reflect.TypeOf("") {
e = spewConfig.Sdump(expected)
a = spewConfig.Sdump(actual)
} else {
diff --git a/vendor/github.com/ugorji/go/codec/0doc.go b/vendor/github.com/ugorji/go/codec/0doc.go
index b61a8180..9c8ce86f 100644
--- a/vendor/github.com/ugorji/go/codec/0doc.go
+++ b/vendor/github.com/ugorji/go/codec/0doc.go
@@ -39,6 +39,7 @@ Rich Feature Set includes:
- Careful selected use of 'unsafe' for targeted performance gains.
100% mode exists where 'unsafe' is not used at all.
- Lock-free (sans mutex) concurrency for scaling to 100's of cores
+ - In-place updates during decode, with option to zero value in maps and slices prior to decode
- Coerce types where appropriate
e.g. decode an int in the stream into a float, decode numbers from formatted strings, etc
- Corner Cases:
@@ -224,41 +225,3 @@ with some caveats. See Encode documentation.
*/
package codec
-// TODO:
-// - For Go 1.11, when mid-stack inlining is enabled,
-// we should use committed functions for writeXXX and readXXX calls.
-// This involves uncommenting the methods for decReaderSwitch and encWriterSwitch
-// and using those (decReaderSwitch and encWriterSwitch) in all handles
-// instead of encWriter and decReader.
-// The benefit is that, for the (En|De)coder over []byte, the encWriter/decReader
-// will be inlined, giving a performance bump for that typical case.
-// However, it will only be inlined if mid-stack inlining is enabled,
-// as we call panic to raise errors, and panic currently prevents inlining.
-//
-// PUNTED:
-// - To make Handle comparable, make extHandle in BasicHandle a non-embedded pointer,
-// and use overlay methods on *BasicHandle to call through to extHandle after initializing
-// the "xh *extHandle" to point to a real slice.
-//
-// BEFORE EACH RELEASE:
-// - Look through and fix padding for each type, to eliminate false sharing
-// - critical shared objects that are read many times
-// TypeInfos
-// - pooled objects:
-// decNaked, decNakedContainers, codecFner, typeInfoLoadArray,
-// - small objects allocated independently, that we read/use much across threads:
-// codecFn, typeInfo
-// - Objects allocated independently and used a lot
-// Decoder, Encoder,
-// xxxHandle, xxxEncDriver, xxxDecDriver (xxx = json, msgpack, cbor, binc, simple)
-// - In all above, arrange values modified together to be close to each other.
-//
-// For all of these, either ensure that they occupy full cache lines,
-// or ensure that the things just past the cache line boundary are hardly read/written
-// e.g. JsonHandle.RawBytesExt - which is copied into json(En|De)cDriver at init
-//
-// Occupying full cache lines means they occupy 8*N words (where N is an integer).
-// Check this out by running: ./run.sh -z
-// - look at those tagged ****, meaning they are not occupying full cache lines
-// - look at those tagged <<<<, meaning they are larger than 32 words (something to watch)
-// - Run "golint -min_confidence 0.81"
diff --git a/vendor/github.com/ugorji/go/codec/binc.go b/vendor/github.com/ugorji/go/codec/binc.go
index a3c96fe7..e6f3f49b 100644
--- a/vendor/github.com/ugorji/go/codec/binc.go
+++ b/vendor/github.com/ugorji/go/codec/binc.go
@@ -102,7 +102,7 @@ func bincdesc(vd, vs byte) string {
type bincEncDriver struct {
e *Encoder
h *BincHandle
- w encWriter
+ w *encWriterSwitch
m map[string]uint16 // symbols
b [16]byte // scratch, used for encoding numbers - bigendian style
s uint16 // symbols sequencer
@@ -110,6 +110,7 @@ type bincEncDriver struct {
encDriverTrackContainerWriter
noBuiltInTypes
// encNoSeparator
+ _ [1]uint64 // padding
}
func (e *bincEncDriver) EncodeNil() {
@@ -182,7 +183,7 @@ func (e *bincEncDriver) encIntegerPrune(bd byte, pos bool, v uint64, lim uint8)
}
func (e *bincEncDriver) EncodeInt(v int64) {
- const nbd byte = bincVdNegInt << 4
+ // const nbd byte = bincVdNegInt << 4
if v >= 0 {
e.encUint(bincVdPosInt<<4, true, uint64(v))
} else if v == -1 {
@@ -243,18 +244,6 @@ func (e *bincEncDriver) WriteMapStart(length int) {
e.c = containerMapStart
}
-func (e *bincEncDriver) EncodeString(c charEncoding, v string) {
- if e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 0 || e.h.AsSymbols == 1) {
- e.EncodeSymbol(v)
- return
- }
- l := uint64(len(v))
- e.encBytesLen(c, l)
- if l > 0 {
- e.w.writestr(v)
- }
-}
-
func (e *bincEncDriver) EncodeSymbol(v string) {
// if WriteSymbolsNoRefs {
// e.encodeString(cUTF8, v)
@@ -319,6 +308,31 @@ func (e *bincEncDriver) EncodeSymbol(v string) {
}
}
+func (e *bincEncDriver) EncodeString(c charEncoding, v string) {
+ if e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 0 || e.h.AsSymbols == 1) {
+ e.EncodeSymbol(v)
+ return
+ }
+ l := uint64(len(v))
+ e.encBytesLen(c, l)
+ if l > 0 {
+ e.w.writestr(v)
+ }
+}
+
+func (e *bincEncDriver) EncodeStringEnc(c charEncoding, v string) {
+ if e.c == containerMapKey && c == cUTF8 && (e.h.AsSymbols == 0 || e.h.AsSymbols == 1) {
+ e.EncodeSymbol(v)
+ return
+ }
+ l := uint64(len(v))
+ e.encLen(bincVdString<<4, l) // e.encBytesLen(c, l)
+ if l > 0 {
+ e.w.writestr(v)
+ }
+
+}
+
func (e *bincEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
if v == nil {
e.EncodeNil()
@@ -331,6 +345,18 @@ func (e *bincEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
}
}
+func (e *bincEncDriver) EncodeStringBytesRaw(v []byte) {
+ if v == nil {
+ e.EncodeNil()
+ return
+ }
+ l := uint64(len(v))
+ e.encLen(bincVdByteArray<<4, l) // e.encBytesLen(c, l)
+ if l > 0 {
+ e.w.writeb(v)
+ }
+}
+
func (e *bincEncDriver) encBytesLen(c charEncoding, length uint64) {
//TODO: support bincUnicodeOther (for now, just use string or bytearray)
if c == cRAW {
@@ -377,7 +403,7 @@ type bincDecDriver struct {
d *Decoder
h *BincHandle
- r decReader
+ r *decReaderSwitch
br bool // bytes reader
bdRead bool
bd byte
@@ -391,7 +417,7 @@ type bincDecDriver struct {
// noStreamingCodec
// decNoSeparator
- b [8 * 8]byte // scratch
+ b [(8 + 1) * 8]byte // scratch
}
func (d *bincDecDriver) readNextBd() {
@@ -452,7 +478,7 @@ func (d *bincDecDriver) DecodeTime() (t time.Time) {
d.d.errorf("cannot decode time - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs))
return
}
- t, err := bincDecodeTime(d.r.readx(int(d.vs)))
+ t, err := bincDecodeTime(d.r.readx(uint(d.vs)))
if err != nil {
panic(err)
}
@@ -485,7 +511,8 @@ func (d *bincDecDriver) decFloat() (f float64) {
d.decFloatPre(d.vs, 8)
f = math.Float64frombits(bigen.Uint64(d.b[0:8]))
} else {
- d.d.errorf("read float - only float32 and float64 are supported - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs))
+ d.d.errorf("read float - only float32 and float64 are supported - %s %x-%x/%s",
+ msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs))
return
}
return
@@ -507,9 +534,9 @@ func (d *bincDecDriver) decUint() (v uint64) {
d.r.readb(d.b[4:8])
v = uint64(bigen.Uint32(d.b[4:8]))
case 4, 5, 6:
- lim := int(7 - d.vs)
+ lim := 7 - d.vs
d.r.readb(d.b[lim:8])
- for i := 0; i < lim; i++ {
+ for i := uint8(0); i < lim; i++ {
d.b[i] = 0
}
v = uint64(bigen.Uint64(d.b[:8]))
@@ -684,7 +711,7 @@ func (d *bincDecDriver) decStringAndBytes(bs []byte, withString, zerocopy bool)
slen = d.decLen()
if zerocopy {
if d.br {
- bs2 = d.r.readx(slen)
+ bs2 = d.r.readx(uint(slen))
} else if len(bs) == 0 {
bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, d.b[:])
} else {
@@ -793,7 +820,7 @@ func (d *bincDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
d.bdRead = false
if zerocopy {
if d.br {
- return d.r.readx(clen)
+ return d.r.readx(uint(clen))
} else if len(bs) == 0 {
bs = d.b[:]
}
@@ -829,11 +856,16 @@ func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []b
d.d.errorf("wrong extension tag - got %b, expecting: %v", xtag, tag)
return
}
- xbs = d.r.readx(l)
+ if d.br {
+ xbs = d.r.readx(uint(l))
+ } else {
+ xbs = decByteSlice(d.r, l, d.d.h.MaxInitLen, d.d.b[:])
+ }
} else if d.vd == bincVdByteArray {
xbs = d.DecodeBytes(nil, true)
} else {
- d.d.errorf("ext - expecting extensions or byte array - %s %x-%x/%s", msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs))
+ d.d.errorf("ext - expecting extensions or byte array - %s %x-%x/%s",
+ msgBadDesc, d.vd, d.vs, bincdesc(d.vd, d.vs))
return
}
d.bdRead = false
@@ -845,7 +877,7 @@ func (d *bincDecDriver) DecodeNaked() {
d.readNextBd()
}
- n := d.d.n
+ n := d.d.naked()
var decodeFurther bool
switch d.vd {
@@ -878,7 +910,8 @@ func (d *bincDecDriver) DecodeNaked() {
n.v = valueTypeInt
n.i = int64(-1) // int8(-1)
default:
- d.d.errorf("cannot infer value - unrecognized special value from descriptor %x-%x/%s", d.vd, d.vs, bincdesc(d.vd, d.vs))
+ d.d.errorf("cannot infer value - unrecognized special value from descriptor %x-%x/%s",
+ d.vd, d.vs, bincdesc(d.vd, d.vs))
}
case bincVdSmallInt:
n.v = valueTypeUint
@@ -903,7 +936,7 @@ func (d *bincDecDriver) DecodeNaked() {
n.l = d.DecodeBytes(nil, false)
case bincVdTimestamp:
n.v = valueTypeTime
- tt, err := bincDecodeTime(d.r.readx(int(d.vs)))
+ tt, err := bincDecodeTime(d.r.readx(uint(d.vs)))
if err != nil {
panic(err)
}
@@ -912,7 +945,11 @@ func (d *bincDecDriver) DecodeNaked() {
n.v = valueTypeExt
l := d.decLen()
n.u = uint64(d.r.readn1())
- n.l = d.r.readx(l)
+ if d.br {
+ n.l = d.r.readx(uint(l))
+ } else {
+ n.l = decByteSlice(d.r, l, d.d.h.MaxInitLen, d.d.b[:])
+ }
case bincVdArray:
n.v = valueTypeArray
decodeFurther = true
@@ -930,7 +967,6 @@ func (d *bincDecDriver) DecodeNaked() {
n.v = valueTypeInt
n.i = int64(n.u)
}
- return
}
//------------------------------------
diff --git a/vendor/github.com/ugorji/go/codec/cbor.go b/vendor/github.com/ugorji/go/codec/cbor.go
index 7633c04a..2a0d714c 100644
--- a/vendor/github.com/ugorji/go/codec/cbor.go
+++ b/vendor/github.com/ugorji/go/codec/cbor.go
@@ -33,31 +33,31 @@ const (
const (
cborBdIndefiniteBytes byte = 0x5f
- cborBdIndefiniteString = 0x7f
- cborBdIndefiniteArray = 0x9f
- cborBdIndefiniteMap = 0xbf
- cborBdBreak = 0xff
+ cborBdIndefiniteString byte = 0x7f
+ cborBdIndefiniteArray byte = 0x9f
+ cborBdIndefiniteMap byte = 0xbf
+ cborBdBreak byte = 0xff
)
// These define some in-stream descriptors for
// manual encoding e.g. when doing explicit indefinite-length
const (
CborStreamBytes byte = 0x5f
- CborStreamString = 0x7f
- CborStreamArray = 0x9f
- CborStreamMap = 0xbf
- CborStreamBreak = 0xff
+ CborStreamString byte = 0x7f
+ CborStreamArray byte = 0x9f
+ CborStreamMap byte = 0xbf
+ CborStreamBreak byte = 0xff
)
const (
cborBaseUint byte = 0x00
- cborBaseNegInt = 0x20
- cborBaseBytes = 0x40
- cborBaseString = 0x60
- cborBaseArray = 0x80
- cborBaseMap = 0xa0
- cborBaseTag = 0xc0
- cborBaseSimple = 0xe0
+ cborBaseNegInt byte = 0x20
+ cborBaseBytes byte = 0x40
+ cborBaseString byte = 0x60
+ cborBaseArray byte = 0x80
+ cborBaseMap byte = 0xa0
+ cborBaseTag byte = 0xc0
+ cborBaseSimple byte = 0xe0
)
func cbordesc(bd byte) string {
@@ -105,12 +105,11 @@ func cbordesc(bd byte) string {
type cborEncDriver struct {
noBuiltInTypes
encDriverNoopContainerWriter
- // encNoSeparator
e *Encoder
- w encWriter
+ w *encWriterSwitch
h *CborHandle
x [8]byte
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
}
func (e *cborEncDriver) EncodeNil() {
@@ -173,7 +172,7 @@ func (e *cborEncDriver) EncodeTime(t time.Time) {
e.EncodeNil()
} else if e.h.TimeRFC3339 {
e.encUint(0, cborBaseTag)
- e.EncodeString(cUTF8, t.Format(time.RFC3339Nano))
+ e.EncodeStringEnc(cUTF8, t.Format(time.RFC3339Nano))
} else {
e.encUint(1, cborBaseTag)
t = t.UTC().Round(time.Microsecond)
@@ -197,9 +196,11 @@ func (e *cborEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, en *Enco
func (e *cborEncDriver) EncodeRawExt(re *RawExt, en *Encoder) {
e.encUint(uint64(re.Tag), cborBaseTag)
- if false && re.Data != nil {
- en.encode(re.Data)
- } else if re.Value != nil {
+ // only encodes re.Value (never re.Data)
+ // if false && re.Data != nil {
+ // en.encode(re.Data)
+ // } else if re.Value != nil {
+ if re.Value != nil {
en.encode(re.Value)
} else {
e.EncodeNil()
@@ -238,6 +239,10 @@ func (e *cborEncDriver) EncodeString(c charEncoding, v string) {
e.encStringBytesS(cborBaseString, v)
}
+func (e *cborEncDriver) EncodeStringEnc(c charEncoding, v string) {
+ e.encStringBytesS(cborBaseString, v)
+}
+
func (e *cborEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
if v == nil {
e.EncodeNil()
@@ -248,6 +253,14 @@ func (e *cborEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
}
}
+func (e *cborEncDriver) EncodeStringBytesRaw(v []byte) {
+ if v == nil {
+ e.EncodeNil()
+ } else {
+ e.encStringBytesS(cborBaseBytes, stringView(v))
+ }
+}
+
func (e *cborEncDriver) encStringBytesS(bb byte, v string) {
if e.h.IndefiniteLength {
if bb == cborBaseBytes {
@@ -255,16 +268,17 @@ func (e *cborEncDriver) encStringBytesS(bb byte, v string) {
} else {
e.w.writen1(cborBdIndefiniteString)
}
- blen := len(v) / 4
+ var vlen uint = uint(len(v))
+ blen := vlen / 4
if blen == 0 {
blen = 64
} else if blen > 1024 {
blen = 1024
}
- for i := 0; i < len(v); {
+ for i := uint(0); i < vlen; {
var v2 string
i2 := i + blen
- if i2 < len(v) {
+ if i2 < vlen {
v2 = v[i:i2]
} else {
v2 = v[i:]
@@ -283,17 +297,16 @@ func (e *cborEncDriver) encStringBytesS(bb byte, v string) {
// ----------------------
type cborDecDriver struct {
- d *Decoder
- h *CborHandle
- r decReader
- // b [scratchByteArrayLen]byte
+ d *Decoder
+ h *CborHandle
+ r *decReaderSwitch
br bool // bytes reader
bdRead bool
bd byte
noBuiltInTypes
// decNoSeparator
decDriverNoopContainerReader
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
}
func (d *cborDecDriver) readNextBd() {
@@ -382,7 +395,8 @@ func (d *cborDecDriver) decCheckInteger() (neg bool) {
} else if major == cborMajorNegInt {
neg = true
} else {
- d.d.errorf("not an integer - invalid major %v from descriptor %x/%s", major, d.bd, cbordesc(d.bd))
+ d.d.errorf("not an integer - invalid major %v from descriptor %x/%s",
+ major, d.bd, cbordesc(d.bd))
return
}
return
@@ -529,7 +543,7 @@ func (d *cborDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
d.bdRead = false
if zerocopy {
if d.br {
- return d.r.readx(clen)
+ return d.r.readx(uint(clen))
} else if len(bs) == 0 {
bs = d.d.b[:]
}
@@ -619,7 +633,7 @@ func (d *cborDecDriver) DecodeNaked() {
d.readNextBd()
}
- n := d.d.n
+ n := d.d.naked()
var decodeFurther bool
switch d.bd {
@@ -692,7 +706,6 @@ func (d *cborDecDriver) DecodeNaked() {
if !decodeFurther {
d.bdRead = false
}
- return
}
// -------------------------
diff --git a/vendor/github.com/ugorji/go/codec/codecgen.go b/vendor/github.com/ugorji/go/codec/codecgen.go
new file mode 100644
index 00000000..cc5ecec6
--- /dev/null
+++ b/vendor/github.com/ugorji/go/codec/codecgen.go
@@ -0,0 +1,13 @@
+// +build codecgen generated
+
+package codec
+
+// this file is here, to set the codecgen variable to true
+// when the build tag codecgen is set.
+//
+// this allows us do specific things e.g. skip missing fields tests,
+// when running in codecgen mode.
+
+func init() {
+ codecgen = true
+}
diff --git a/vendor/github.com/ugorji/go/codec/decode.go b/vendor/github.com/ugorji/go/codec/decode.go
index 1c0817aa..4caa2595 100644
--- a/vendor/github.com/ugorji/go/codec/decode.go
+++ b/vendor/github.com/ugorji/go/codec/decode.go
@@ -9,20 +9,23 @@ import (
"fmt"
"io"
"reflect"
+ "runtime"
"strconv"
- "sync"
"time"
)
// Some tagging information for error messages.
const (
- msgBadDesc = "unrecognized descriptor byte"
- msgDecCannotExpandArr = "cannot expand go array from %v to stream length: %v"
+ msgBadDesc = "unrecognized descriptor byte"
+ // msgDecCannotExpandArr = "cannot expand go array from %v to stream length: %v"
)
-const decDefSliceCap = 8
-const decDefChanCap = 64 // should be large, as cap cannot be expanded
-const decScratchByteArrayLen = cacheLineSize - 8
+const (
+ decDefMaxDepth = 1024 // maximum depth
+ decDefSliceCap = 8
+ decDefChanCap = 64 // should be large, as cap cannot be expanded
+ decScratchByteArrayLen = cacheLineSize // + (8 * 2) // - (8 * 1)
+)
var (
errstrOnlyMapOrArrayCanDecodeIntoStruct = "only encoded map or array can be decoded into a struct"
@@ -36,20 +39,24 @@ var (
errDecUnreadByteNothingToRead = errors.New("cannot unread - nothing has been read")
errDecUnreadByteLastByteNotRead = errors.New("cannot unread - last byte has not been read")
errDecUnreadByteUnknown = errors.New("cannot unread - reason unknown")
+ errMaxDepthExceeded = errors.New("maximum decoding depth exceeded")
)
+/*
+
// decReader abstracts the reading source, allowing implementations that can
// read from an io.Reader or directly off a byte slice with zero-copying.
+//
+// Deprecated: Use decReaderSwitch instead.
type decReader interface {
unreadn1()
-
// readx will use the implementation scratch buffer if possible i.e. n < len(scratchbuf), OR
// just return a view of the []byte being decoded from.
// Ensure you call detachZeroCopyBytes later if this needs to be sent outside codec control.
readx(n int) []byte
readb([]byte)
readn1() uint8
- numread() int // number of bytes read
+ numread() uint // number of bytes read
track()
stopTrack() []byte
@@ -61,15 +68,18 @@ type decReader interface {
readUntil(in []byte, stop byte) (out []byte)
}
+*/
+
type decDriver interface {
// this will check if the next token is a break.
CheckBreak() bool
+ // TryDecodeAsNil tries to decode as nil.
// Note: TryDecodeAsNil should be careful not to share any temporary []byte with
// the rest of the decDriver. This is because sometimes, we optimize by holding onto
// a transient []byte, and ensuring the only other call we make to the decDriver
// during that time is maybe a TryDecodeAsNil() call.
TryDecodeAsNil() bool
- // vt is one of: Bytes, String, Nil, Slice or Map. Return unSet if not known.
+ // ContainerType returns one of: Bytes, String, Nil, Slice or Map. Return unSet if not known.
ContainerType() (vt valueType)
// IsBuiltinType(rt uintptr) bool
@@ -126,6 +136,15 @@ type decDriver interface {
uncacheRead()
}
+type decodeError struct {
+ codecError
+ pos int
+}
+
+func (d decodeError) Error() string {
+ return fmt.Sprintf("%s decode error [pos %d]: %v", d.name, d.pos, d.err)
+}
+
type decDriverNoopContainerReader struct{}
func (x decDriverNoopContainerReader) ReadArrayStart() (v int) { return }
@@ -164,6 +183,10 @@ type DecodeOptions struct {
// if > 0, we use a smart buffer internally for performance purposes.
ReaderBufferSize int
+ // MaxDepth defines the maximum depth when decoding nested
+ // maps and slices. If 0 or negative, we default to a suitably large number (currently 1024).
+ MaxDepth int16
+
// If ErrorIfNoField, return an error when decoding a map
// from a codec stream into a struct, and no matching struct field is found.
ErrorIfNoField bool
@@ -236,338 +259,80 @@ type DecodeOptions struct {
DeleteOnNilMapValue bool
}
-// ------------------------------------
+// ------------------------------------------------
-type bufioDecReader struct {
- buf []byte
- r io.Reader
+type unreadByteStatus uint8
- c int // cursor
- n int // num read
- err error
+// unreadByteStatus goes from
+// undefined (when initialized) -- (read) --> canUnread -- (unread) --> canRead ...
+const (
+ unreadByteUndefined unreadByteStatus = iota
+ unreadByteCanRead
+ unreadByteCanUnread
+)
- tr []byte
- trb bool
- b [4]byte
-}
+type ioDecReaderCommon struct {
+ r io.Reader // the reader passed in
-func (z *bufioDecReader) reset(r io.Reader) {
- z.r, z.c, z.n, z.err, z.trb = r, 0, 0, nil, false
- if z.tr != nil {
- z.tr = z.tr[:0]
- }
-}
+ n uint // num read
-func (z *bufioDecReader) Read(p []byte) (n int, err error) {
- if z.err != nil {
- return 0, z.err
- }
- p0 := p
- n = copy(p, z.buf[z.c:])
- z.c += n
- if z.c == len(z.buf) {
- z.c = 0
- }
- z.n += n
- if len(p) == n {
- if z.c == 0 {
- z.buf = z.buf[:1]
- z.buf[0] = p[len(p)-1]
- z.c = 1
- }
- if z.trb {
- z.tr = append(z.tr, p0[:n]...)
- }
- return
- }
- p = p[n:]
- var n2 int
- // if we are here, then z.buf is all read
- if len(p) > len(z.buf) {
- n2, err = decReadFull(z.r, p)
- n += n2
- z.n += n2
- z.err = err
- // don't return EOF if some bytes were read. keep for next time.
- if n > 0 && err == io.EOF {
- err = nil
- }
- // always keep last byte in z.buf
- z.buf = z.buf[:1]
- z.buf[0] = p[len(p)-1]
- z.c = 1
- if z.trb {
- z.tr = append(z.tr, p0[:n]...)
- }
- return
- }
- // z.c is now 0, and len(p) <= len(z.buf)
- for len(p) > 0 && z.err == nil {
- // println("len(p) loop starting ... ")
- z.c = 0
- z.buf = z.buf[0:cap(z.buf)]
- n2, err = z.r.Read(z.buf)
- if n2 > 0 {
- if err == io.EOF {
- err = nil
- }
- z.buf = z.buf[:n2]
- n2 = copy(p, z.buf)
- z.c = n2
- n += n2
- z.n += n2
- p = p[n2:]
- }
- z.err = err
- // println("... len(p) loop done")
- }
- if z.c == 0 {
- z.buf = z.buf[:1]
- z.buf[0] = p[len(p)-1]
- z.c = 1
- }
- if z.trb {
- z.tr = append(z.tr, p0[:n]...)
- }
- return
-}
+ l byte // last byte
+ ls unreadByteStatus // last byte status
+ trb bool // tracking bytes turned on
+ _ bool
+ b [4]byte // tiny buffer for reading single bytes
-func (z *bufioDecReader) ReadByte() (b byte, err error) {
- z.b[0] = 0
- _, err = z.Read(z.b[:1])
- b = z.b[0]
- return
+ tr []byte // tracking bytes read
}
-func (z *bufioDecReader) UnreadByte() (err error) {
- if z.err != nil {
- return z.err
- }
- if z.c > 0 {
- z.c--
- z.n--
- if z.trb {
- z.tr = z.tr[:len(z.tr)-1]
- }
- return
+func (z *ioDecReaderCommon) reset(r io.Reader) {
+ z.r = r
+ z.ls = unreadByteUndefined
+ z.l, z.n = 0, 0
+ z.trb = false
+ if z.tr != nil {
+ z.tr = z.tr[:0]
}
- return errDecUnreadByteNothingToRead
}
-func (z *bufioDecReader) numread() int {
+func (z *ioDecReaderCommon) numread() uint {
return z.n
}
-func (z *bufioDecReader) readx(n int) (bs []byte) {
- if n <= 0 || z.err != nil {
- return
- }
- if z.c+n <= len(z.buf) {
- bs = z.buf[z.c : z.c+n]
- z.n += n
- z.c += n
- if z.trb {
- z.tr = append(z.tr, bs...)
- }
- return
- }
- bs = make([]byte, n)
- _, err := z.Read(bs)
- if err != nil {
- panic(err)
- }
- return
-}
-
-func (z *bufioDecReader) readb(bs []byte) {
- _, err := z.Read(bs)
- if err != nil {
- panic(err)
- }
-}
-
-// func (z *bufioDecReader) readn1eof() (b uint8, eof bool) {
-// b, err := z.ReadByte()
-// if err != nil {
-// if err == io.EOF {
-// eof = true
-// } else {
-// panic(err)
-// }
-// }
-// return
-// }
-
-func (z *bufioDecReader) readn1() (b uint8) {
- b, err := z.ReadByte()
- if err != nil {
- panic(err)
- }
- return
-}
-
-func (z *bufioDecReader) search(in []byte, accept *bitset256, stop, flag uint8) (token byte, out []byte) {
- // flag: 1 (skip), 2 (readTo), 4 (readUntil)
- if flag == 4 {
- for i := z.c; i < len(z.buf); i++ {
- if z.buf[i] == stop {
- token = z.buf[i]
- z.n = z.n + (i - z.c) - 1
- i++
- out = z.buf[z.c:i]
- if z.trb {
- z.tr = append(z.tr, z.buf[z.c:i]...)
- }
- z.c = i
- return
- }
- }
- } else {
- for i := z.c; i < len(z.buf); i++ {
- if !accept.isset(z.buf[i]) {
- token = z.buf[i]
- z.n = z.n + (i - z.c) - 1
- if flag == 1 {
- i++
- } else {
- out = z.buf[z.c:i]
- }
- if z.trb {
- z.tr = append(z.tr, z.buf[z.c:i]...)
- }
- z.c = i
- return
- }
- }
- }
- z.n += len(z.buf) - z.c
- if flag != 1 {
- out = append(in, z.buf[z.c:]...)
- }
- if z.trb {
- z.tr = append(z.tr, z.buf[z.c:]...)
- }
- var n2 int
- if z.err != nil {
- return
- }
- for {
- z.c = 0
- z.buf = z.buf[0:cap(z.buf)]
- n2, z.err = z.r.Read(z.buf)
- if n2 > 0 && z.err != nil {
- z.err = nil
- }
- z.buf = z.buf[:n2]
- if flag == 4 {
- for i := 0; i < n2; i++ {
- if z.buf[i] == stop {
- token = z.buf[i]
- z.n += i - 1
- i++
- out = append(out, z.buf[z.c:i]...)
- if z.trb {
- z.tr = append(z.tr, z.buf[z.c:i]...)
- }
- z.c = i
- return
- }
- }
- } else {
- for i := 0; i < n2; i++ {
- if !accept.isset(z.buf[i]) {
- token = z.buf[i]
- z.n += i - 1
- if flag == 1 {
- i++
- }
- if flag != 1 {
- out = append(out, z.buf[z.c:i]...)
- }
- if z.trb {
- z.tr = append(z.tr, z.buf[z.c:i]...)
- }
- z.c = i
- return
- }
- }
- }
- if flag != 1 {
- out = append(out, z.buf[:n2]...)
- }
- z.n += n2
- if z.err != nil {
- return
- }
- if z.trb {
- z.tr = append(z.tr, z.buf[:n2]...)
- }
- }
-}
-
-func (z *bufioDecReader) skip(accept *bitset256) (token byte) {
- token, _ = z.search(nil, accept, 0, 1)
- return
-}
-
-func (z *bufioDecReader) readTo(in []byte, accept *bitset256) (out []byte) {
- _, out = z.search(in, accept, 0, 2)
- return
-}
-
-func (z *bufioDecReader) readUntil(in []byte, stop byte) (out []byte) {
- _, out = z.search(in, nil, stop, 4)
- return
-}
-
-func (z *bufioDecReader) unreadn1() {
- err := z.UnreadByte()
- if err != nil {
- panic(err)
- }
-}
-
-func (z *bufioDecReader) track() {
+func (z *ioDecReaderCommon) track() {
if z.tr != nil {
z.tr = z.tr[:0]
}
z.trb = true
}
-func (z *bufioDecReader) stopTrack() (bs []byte) {
+func (z *ioDecReaderCommon) stopTrack() (bs []byte) {
z.trb = false
return z.tr
}
+// ------------------------------------------
+
// ioDecReader is a decReader that reads off an io.Reader.
//
// It also has a fallback implementation of ByteScanner if needed.
type ioDecReader struct {
- r io.Reader // the reader passed in
+ ioDecReaderCommon
rr io.Reader
br io.ByteScanner
- l byte // last byte
- ls byte // last byte status. 0: init-canDoNothing, 1: canRead, 2: canUnread
- trb bool // tracking bytes turned on
- _ bool
- b [4]byte // tiny buffer for reading single bytes
-
- x [scratchByteArrayLen]byte // for: get struct field name, swallow valueTypeBytes, etc
- n int // num read
- tr []byte // tracking bytes read
+ x [scratchByteArrayLen]byte // for: get struct field name, swallow valueTypeBytes, etc
+ _ [1]uint64 // padding
}
func (z *ioDecReader) reset(r io.Reader) {
- z.r = r
- z.rr = r
- z.l, z.ls, z.n, z.trb = 0, 0, 0, false
- if z.tr != nil {
- z.tr = z.tr[:0]
- }
+ z.ioDecReaderCommon.reset(r)
+
var ok bool
- if z.br, ok = r.(io.ByteScanner); !ok {
+ z.rr = r
+ z.br, ok = r.(io.ByteScanner)
+ if !ok {
z.br = z
z.rr = z
}
@@ -578,8 +343,8 @@ func (z *ioDecReader) Read(p []byte) (n int, err error) {
return
}
var firstByte bool
- if z.ls == 1 {
- z.ls = 2
+ if z.ls == unreadByteCanRead {
+ z.ls = unreadByteCanUnread
p[0] = z.l
if len(p) == 1 {
n = 1
@@ -594,7 +359,7 @@ func (z *ioDecReader) Read(p []byte) (n int, err error) {
err = nil // read was successful, so postpone EOF (till next time)
}
z.l = p[n-1]
- z.ls = 2
+ z.ls = unreadByteCanUnread
}
if firstByte {
n++
@@ -615,27 +380,23 @@ func (z *ioDecReader) ReadByte() (c byte, err error) {
func (z *ioDecReader) UnreadByte() (err error) {
switch z.ls {
- case 2:
- z.ls = 1
- case 0:
- err = errDecUnreadByteNothingToRead
- case 1:
+ case unreadByteCanUnread:
+ z.ls = unreadByteCanRead
+ case unreadByteCanRead:
err = errDecUnreadByteLastByteNotRead
+ case unreadByteUndefined:
+ err = errDecUnreadByteNothingToRead
default:
err = errDecUnreadByteUnknown
}
return
}
-func (z *ioDecReader) numread() int {
- return z.n
-}
-
-func (z *ioDecReader) readx(n int) (bs []byte) {
- if n <= 0 {
+func (z *ioDecReader) readx(n uint) (bs []byte) {
+ if n == 0 {
return
}
- if n < len(z.x) {
+ if n < uint(len(z.x)) {
bs = z.x[:n]
} else {
bs = make([]byte, n)
@@ -643,7 +404,7 @@ func (z *ioDecReader) readx(n int) (bs []byte) {
if _, err := decReadFull(z.rr, bs); err != nil {
panic(err)
}
- z.n += len(bs)
+ z.n += uint(len(bs))
if z.trb {
z.tr = append(z.tr, bs...)
}
@@ -651,13 +412,13 @@ func (z *ioDecReader) readx(n int) (bs []byte) {
}
func (z *ioDecReader) readb(bs []byte) {
- // if len(bs) == 0 {
- // return
- // }
+ if len(bs) == 0 {
+ return
+ }
if _, err := decReadFull(z.rr, bs); err != nil {
panic(err)
}
- z.n += len(bs)
+ z.n += uint(len(bs))
if z.trb {
z.tr = append(z.tr, bs...)
}
@@ -679,8 +440,8 @@ func (z *ioDecReader) readn1eof() (b uint8, eof bool) {
}
func (z *ioDecReader) readn1() (b uint8) {
- var err error
- if b, err = z.br.ReadByte(); err == nil {
+ b, err := z.br.ReadByte()
+ if err == nil {
z.n++
if z.trb {
z.tr = append(z.tr, b)
@@ -691,49 +452,82 @@ func (z *ioDecReader) readn1() (b uint8) {
}
func (z *ioDecReader) skip(accept *bitset256) (token byte) {
- for {
- var eof bool
- token, eof = z.readn1eof()
- if eof {
- return
- }
- if accept.isset(token) {
- continue
- }
+ var eof bool
+ // for {
+ // token, eof = z.readn1eof()
+ // if eof {
+ // return
+ // }
+ // if accept.isset(token) {
+ // continue
+ // }
+ // return
+ // }
+LOOP:
+ token, eof = z.readn1eof()
+ if eof {
return
}
+ if accept.isset(token) {
+ goto LOOP
+ }
+ return
}
-func (z *ioDecReader) readTo(in []byte, accept *bitset256) (out []byte) {
- out = in
- for {
- token, eof := z.readn1eof()
- if eof {
- return
- }
- if accept.isset(token) {
- out = append(out, token)
- } else {
- z.unreadn1()
- return
- }
+func (z *ioDecReader) readTo(in []byte, accept *bitset256) []byte {
+ // out = in
+
+ // for {
+ // token, eof := z.readn1eof()
+ // if eof {
+ // return
+ // }
+ // if accept.isset(token) {
+ // out = append(out, token)
+ // } else {
+ // z.unreadn1()
+ // return
+ // }
+ // }
+LOOP:
+ token, eof := z.readn1eof()
+ if eof {
+ return in
+ }
+ if accept.isset(token) {
+ // out = append(out, token)
+ in = append(in, token)
+ goto LOOP
}
+ z.unreadn1()
+ return in
}
func (z *ioDecReader) readUntil(in []byte, stop byte) (out []byte) {
out = in
- for {
- token, eof := z.readn1eof()
- if eof {
- panic(io.EOF)
- }
- out = append(out, token)
- if token == stop {
- return
- }
+ // for {
+ // token, eof := z.readn1eof()
+ // if eof {
+ // panic(io.EOF)
+ // }
+ // out = append(out, token)
+ // if token == stop {
+ // return
+ // }
+ // }
+LOOP:
+ token, eof := z.readn1eof()
+ if eof {
+ panic(io.EOF)
}
+ out = append(out, token)
+ if token == stop {
+ return
+ }
+ goto LOOP
}
+//go:noinline
func (z *ioDecReader) unreadn1() {
err := z.br.UnreadByte()
if err != nil {
@@ -747,16 +541,377 @@ func (z *ioDecReader) unreadn1() {
}
}
-func (z *ioDecReader) track() {
- if z.tr != nil {
- z.tr = z.tr[:0]
+// ------------------------------------
+
+type bufioDecReader struct {
+ ioDecReaderCommon
+
+ c uint // cursor
+ buf []byte
+
+ bytesBufPooler
+
+ // err error
+
+ _ [2]uint64 // padding
+}
+
+func (z *bufioDecReader) reset(r io.Reader, bufsize int) {
+ z.ioDecReaderCommon.reset(r)
+ z.c = 0
+ if cap(z.buf) >= bufsize {
+ z.buf = z.buf[:0]
+ } else {
+ z.bytesBufPooler.end() // potentially return old one to pool
+ z.buf = z.bytesBufPooler.get(bufsize)[:0]
+ // z.buf = make([]byte, 0, bufsize)
}
- z.trb = true
}
-func (z *ioDecReader) stopTrack() (bs []byte) {
- z.trb = false
- return z.tr
+func (z *bufioDecReader) readb(p []byte) {
+ var n = uint(copy(p, z.buf[z.c:]))
+ z.n += n
+ z.c += n
+ if len(p) == int(n) {
+ if z.trb {
+ z.tr = append(z.tr, p...) // cost=9
+ }
+ } else {
+ z.readbFill(p, n)
+ }
+}
+
+//go:noinline - fallback when z.buf is consumed
+func (z *bufioDecReader) readbFill(p0 []byte, n uint) {
+ // at this point, there's nothing in z.buf to read (z.buf is fully consumed)
+ p := p0[n:]
+ var n2 uint
+ var err error
+ if len(p) > cap(z.buf) {
+ n2, err = decReadFull(z.r, p)
+ if err != nil {
+ panic(err)
+ }
+ n += n2
+ z.n += n2
+ // always keep last byte in z.buf
+ z.buf = z.buf[:1]
+ z.buf[0] = p[len(p)-1]
+ z.c = 1
+ if z.trb {
+ z.tr = append(z.tr, p0[:n]...)
+ }
+ return
+ }
+ // z.c is now 0, and len(p) <= cap(z.buf)
+LOOP:
+ // for len(p) > 0 && z.err == nil {
+ if len(p) > 0 {
+ z.buf = z.buf[0:cap(z.buf)]
+ var n1 int
+ n1, err = z.r.Read(z.buf)
+ n2 = uint(n1)
+ if n2 == 0 && err != nil {
+ panic(err)
+ }
+ z.buf = z.buf[:n2]
+ n2 = uint(copy(p, z.buf))
+ z.c = n2
+ n += n2
+ z.n += n2
+ p = p[n2:]
+ goto LOOP
+ }
+ if z.c == 0 {
+ z.buf = z.buf[:1]
+ z.buf[0] = p[len(p)-1]
+ z.c = 1
+ }
+ if z.trb {
+ z.tr = append(z.tr, p0[:n]...)
+ }
+}
+
+func (z *bufioDecReader) readn1() (b byte) {
+ // fast-path, so we elide calling into Read() most of the time
+ if z.c < uint(len(z.buf)) {
+ b = z.buf[z.c]
+ z.c++
+ z.n++
+ if z.trb {
+ z.tr = append(z.tr, b)
+ }
+ } else { // meaning z.c == len(z.buf) or greater ... so need to fill
+ z.readbFill(z.b[:1], 0)
+ b = z.b[0]
+ }
+ return
+}
+
+func (z *bufioDecReader) unreadn1() {
+ if z.c == 0 {
+ panic(errDecUnreadByteNothingToRead)
+ }
+ z.c--
+ z.n--
+ if z.trb {
+ z.tr = z.tr[:len(z.tr)-1]
+ }
+}
+
+func (z *bufioDecReader) readx(n uint) (bs []byte) {
+ if n == 0 {
+ // return
+ } else if z.c+n <= uint(len(z.buf)) {
+ bs = z.buf[z.c : z.c+n]
+ z.n += n
+ z.c += n
+ if z.trb {
+ z.tr = append(z.tr, bs...)
+ }
+ } else {
+ bs = make([]byte, n)
+ // n no longer used - can reuse
+ n = uint(copy(bs, z.buf[z.c:]))
+ z.n += n
+ z.c += n
+ z.readbFill(bs, n)
+ }
+ return
+}
+
+//go:noinline - track called by Decoder.nextValueBytes() (called by jsonUnmarshal,rawBytes)
+func (z *bufioDecReader) doTrack(y uint) {
+ z.tr = append(z.tr, z.buf[z.c:y]...) // cost=14???
+}
+
+func (z *bufioDecReader) skipLoopFn(i uint) {
+ z.n += (i - z.c) - 1
+ i++
+ if z.trb {
+ // z.tr = append(z.tr, z.buf[z.c:i]...)
+ z.doTrack(i)
+ }
+ z.c = i
+}
+
+func (z *bufioDecReader) skip(accept *bitset256) (token byte) {
+ // token, _ = z.search(nil, accept, 0, 1); return
+
+ // for i := z.c; i < len(z.buf); i++ {
+ // if token = z.buf[i]; !accept.isset(token) {
+ // z.skipLoopFn(i)
+ // return
+ // }
+ // }
+
+ i := z.c
+LOOP:
+ if i < uint(len(z.buf)) {
+ // inline z.skipLoopFn(i) and refactor, so cost is within inline budget
+ token = z.buf[i]
+ i++
+ if accept.isset(token) {
+ goto LOOP
+ }
+ z.n += i - 2 - z.c
+ if z.trb {
+ z.doTrack(i)
+ }
+ z.c = i
+ return
+ }
+ return z.skipFill(accept)
+}
+
+func (z *bufioDecReader) skipFill(accept *bitset256) (token byte) {
+ z.n += uint(len(z.buf)) - z.c
+ if z.trb {
+ z.tr = append(z.tr, z.buf[z.c:]...)
+ }
+ var n2 int
+ var err error
+ for {
+ z.c = 0
+ z.buf = z.buf[0:cap(z.buf)]
+ n2, err = z.r.Read(z.buf)
+ if n2 == 0 && err != nil {
+ panic(err)
+ }
+ z.buf = z.buf[:n2]
+ var i int
+ for i, token = range z.buf {
+ if !accept.isset(token) {
+ z.skipLoopFn(uint(i))
+ return
+ }
+ }
+ // for i := 0; i < n2; i++ {
+ // if token = z.buf[i]; !accept.isset(token) {
+ // z.skipLoopFn(i)
+ // return
+ // }
+ // }
+ z.n += uint(n2)
+ if z.trb {
+ z.tr = append(z.tr, z.buf...)
+ }
+ }
+}
+
+func (z *bufioDecReader) readToLoopFn(i uint, out0 []byte) (out []byte) {
+ // out0 is never nil
+ z.n += (i - z.c) - 1
+ out = append(out0, z.buf[z.c:i]...)
+ if z.trb {
+ z.doTrack(i)
+ }
+ z.c = i
+ return
+}
+
+func (z *bufioDecReader) readTo(in []byte, accept *bitset256) (out []byte) {
+ // _, out = z.search(in, accept, 0, 2); return
+
+ // for i := z.c; i < len(z.buf); i++ {
+ // if !accept.isset(z.buf[i]) {
+ // return z.readToLoopFn(i, nil)
+ // }
+ // }
+
+ i := z.c
+LOOP:
+ if i < uint(len(z.buf)) {
+ if !accept.isset(z.buf[i]) {
+ // return z.readToLoopFn(i, nil)
+ // inline readToLoopFn here (for performance)
+ z.n += (i - z.c) - 1
+ out = z.buf[z.c:i]
+ if z.trb {
+ z.doTrack(i)
+ }
+ z.c = i
+ return
+ }
+ i++
+ goto LOOP
+ }
+ return z.readToFill(in, accept)
+}
+
+func (z *bufioDecReader) readToFill(in []byte, accept *bitset256) (out []byte) {
+ z.n += uint(len(z.buf)) - z.c
+ out = append(in, z.buf[z.c:]...)
+ if z.trb {
+ z.tr = append(z.tr, z.buf[z.c:]...)
+ }
+ var n2 int
+ var err error
+ for {
+ z.c = 0
+ z.buf = z.buf[0:cap(z.buf)]
+ n2, err = z.r.Read(z.buf)
+ if n2 == 0 && err != nil {
+ if err == io.EOF {
+ return // readTo should read until it matches or end is reached
+ }
+ panic(err)
+ }
+ z.buf = z.buf[:n2]
+ for i, token := range z.buf {
+ if !accept.isset(token) {
+ return z.readToLoopFn(uint(i), out)
+ }
+ }
+ // for i := 0; i < n2; i++ {
+ // if !accept.isset(z.buf[i]) {
+ // return z.readToLoopFn(i, out)
+ // }
+ // }
+ out = append(out, z.buf...)
+ z.n += uint(n2)
+ if z.trb {
+ z.tr = append(z.tr, z.buf...)
+ }
+ }
+}
+
+func (z *bufioDecReader) readUntilLoopFn(i uint, out0 []byte) (out []byte) {
+ z.n += (i - z.c) - 1
+ i++
+ out = append(out0, z.buf[z.c:i]...)
+ if z.trb {
+ // z.tr = append(z.tr, z.buf[z.c:i]...)
+ z.doTrack(i)
+ }
+ z.c = i
+ return
+}
+
+func (z *bufioDecReader) readUntil(in []byte, stop byte) (out []byte) {
+ // _, out = z.search(in, nil, stop, 4); return
+
+ // for i := z.c; i < len(z.buf); i++ {
+ // if z.buf[i] == stop {
+ // return z.readUntilLoopFn(i, nil)
+ // }
+ // }
+
+ i := z.c
+LOOP:
+ if i < uint(len(z.buf)) {
+ if z.buf[i] == stop {
+ // inline readUntilLoopFn
+ // return z.readUntilLoopFn(i, nil)
+ z.n += (i - z.c) - 1
+ i++
+ out = z.buf[z.c:i]
+ if z.trb {
+ z.doTrack(i)
+ }
+ z.c = i
+ return
+ }
+ i++
+ goto LOOP
+ }
+ return z.readUntilFill(in, stop)
+}
+
+func (z *bufioDecReader) readUntilFill(in []byte, stop byte) (out []byte) {
+ z.n += uint(len(z.buf)) - z.c
+ out = append(in, z.buf[z.c:]...)
+ if z.trb {
+ z.tr = append(z.tr, z.buf[z.c:]...)
+ }
+ var n1 int
+ var n2 uint
+ var err error
+ for {
+ z.c = 0
+ z.buf = z.buf[0:cap(z.buf)]
+ n1, err = z.r.Read(z.buf)
+ n2 = uint(n1)
+ if n2 == 0 && err != nil {
+ panic(err)
+ }
+ z.buf = z.buf[:n2]
+ for i, token := range z.buf {
+ if token == stop {
+ return z.readUntilLoopFn(uint(i), out)
+ }
+ }
+ // for i := 0; i < n2; i++ {
+ // if z.buf[i] == stop {
+ // return z.readUntilLoopFn(i, out)
+ // }
+ // }
+ out = append(out, z.buf...)
+ z.n += n2
+ if z.trb {
+ z.tr = append(z.tr, z.buf...)
+ }
+ }
}
// ------------------------------------
@@ -766,19 +921,19 @@ var errBytesDecReaderCannotUnread = errors.New("cannot unread last byte read")
// bytesDecReader is a decReader that reads off a byte slice with zero copying
type bytesDecReader struct {
b []byte // data
- c int // cursor
- a int // available
- t int // track start
+ c uint // cursor
+ t uint // track start
+ // a int // available
}
func (z *bytesDecReader) reset(in []byte) {
z.b = in
- z.a = len(in)
+ // z.a = len(in)
z.c = 0
z.t = 0
}
-func (z *bytesDecReader) numread() int {
+func (z *bytesDecReader) numread() uint {
return z.c
}
@@ -787,40 +942,72 @@ func (z *bytesDecReader) unreadn1() {
panic(errBytesDecReaderCannotUnread)
}
z.c--
- z.a++
- return
+ // z.a++
}
-func (z *bytesDecReader) readx(n int) (bs []byte) {
+func (z *bytesDecReader) readx(n uint) (bs []byte) {
// slicing from a non-constant start position is more expensive,
// as more computation is required to decipher the pointer start position.
// However, we do it only once, and it's better than reslicing both z.b and return value.
- if n <= 0 {
- } else if z.a == 0 {
- panic(io.EOF)
- } else if n > z.a {
- panic(io.ErrUnexpectedEOF)
- } else {
- c0 := z.c
- z.c = c0 + n
- z.a = z.a - n
- bs = z.b[c0:z.c]
+ // if n <= 0 {
+ // } else if z.a == 0 {
+ // panic(io.EOF)
+ // } else if n > z.a {
+ // panic(io.ErrUnexpectedEOF)
+ // } else {
+ // c0 := z.c
+ // z.c = c0 + n
+ // z.a = z.a - n
+ // bs = z.b[c0:z.c]
+ // }
+ // return
+
+ if n != 0 {
+ z.c += n
+ if z.c > uint(len(z.b)) {
+ z.c = uint(len(z.b))
+ panic(io.EOF)
+ }
+ bs = z.b[z.c-n : z.c]
}
return
+
+ // if n == 0 {
+ // } else if z.c+n > uint(len(z.b)) {
+ // z.c = uint(len(z.b))
+ // panic(io.EOF)
+ // } else {
+ // z.c += n
+ // bs = z.b[z.c-n : z.c]
+ // }
+ // return
+
+ // if n == 0 {
+ // return
+ // }
+ // if z.c == uint(len(z.b)) {
+ // panic(io.EOF)
+ // }
+ // if z.c+n > uint(len(z.b)) {
+ // panic(io.ErrUnexpectedEOF)
+ // }
+ // // z.a -= n
+ // z.c += n
+ // return z.b[z.c-n : z.c]
}
func (z *bytesDecReader) readb(bs []byte) {
- copy(bs, z.readx(len(bs)))
+ copy(bs, z.readx(uint(len(bs))))
}
func (z *bytesDecReader) readn1() (v uint8) {
- if z.a == 0 {
+ if z.c == uint(len(z.b)) {
panic(io.EOF)
}
v = z.b[z.c]
z.c++
- z.a--
+ // z.a--
return
}
@@ -836,56 +1023,134 @@ func (z *bytesDecReader) readn1() (v uint8) {
// }
func (z *bytesDecReader) skip(accept *bitset256) (token byte) {
- if z.a == 0 {
- return
- }
- blen := len(z.b)
- for i := z.c; i < blen; i++ {
- if !accept.isset(z.b[i]) {
- token = z.b[i]
- i++
- z.a -= (i - z.c)
- z.c = i
- return
+ i := z.c
+ // if i == len(z.b) {
+ // goto END
+ // // panic(io.EOF)
+ // }
+
+ // Replace loop with goto construct, so that this can be inlined
+ // for i := z.c; i < blen; i++ {
+ // if !accept.isset(z.b[i]) {
+ // token = z.b[i]
+ // i++
+ // z.a -= (i - z.c)
+ // z.c = i
+ // return
+ // }
+ // }
+
+ // i := z.c
+LOOP:
+ if i < uint(len(z.b)) {
+ token = z.b[i]
+ i++
+ if accept.isset(token) {
+ goto LOOP
}
+ // z.a -= (i - z.c)
+ z.c = i
+ return
}
- z.a, z.c = 0, blen
- return
+ // END:
+ panic(io.EOF)
+ // // z.a = 0
+ // z.c = blen
+ // return
}
func (z *bytesDecReader) readTo(_ []byte, accept *bitset256) (out []byte) {
- if z.a == 0 {
- return
+ return z.readToNoInput(accept)
+}
+
+func (z *bytesDecReader) readToNoInput(accept *bitset256) (out []byte) {
+ i := z.c
+ if i == uint(len(z.b)) {
+ panic(io.EOF)
}
- blen := len(z.b)
- for i := z.c; i < blen; i++ {
- if !accept.isset(z.b[i]) {
- out = z.b[z.c:i]
- z.a -= (i - z.c)
- z.c = i
- return
+
+ // Replace loop with goto construct, so that this can be inlined
+ // for i := z.c; i < blen; i++ {
+ // if !accept.isset(z.b[i]) {
+ // out = z.b[z.c:i]
+ // z.a -= (i - z.c)
+ // z.c = i
+ // return
+ // }
+ // }
+ // out = z.b[z.c:]
+ // z.a, z.c = 0, blen
+ // return
+
+ // i := z.c
+ // LOOP:
+ // if i < blen {
+ // if accept.isset(z.b[i]) {
+ // i++
+ // goto LOOP
+ // }
+ // out = z.b[z.c:i]
+ // z.a -= (i - z.c)
+ // z.c = i
+ // return
+ // }
+ // out = z.b[z.c:]
+ // // z.a, z.c = 0, blen
+ // z.a = 0
+ // z.c = blen
+ // return
+
+ // c := i
+LOOP:
+ if i < uint(len(z.b)) {
+ if accept.isset(z.b[i]) {
+ i++
+ goto LOOP
}
}
- out = z.b[z.c:]
- z.a, z.c = 0, blen
- return
+
+ out = z.b[z.c:i]
+ // z.a -= (i - z.c)
+ z.c = i
+ return // z.b[c:i]
+ // z.c, i = i, z.c
+ // return z.b[i:z.c]
}
func (z *bytesDecReader) readUntil(_ []byte, stop byte) (out []byte) {
- if z.a == 0 {
- panic(io.EOF)
- }
- blen := len(z.b)
- for i := z.c; i < blen; i++ {
+ return z.readUntilNoInput(stop)
+}
+
+func (z *bytesDecReader) readUntilNoInput(stop byte) (out []byte) {
+ i := z.c
+ // if i == len(z.b) {
+ // panic(io.EOF)
+ // }
+
+ // Replace loop with goto construct, so that this can be inlined
+ // for i := z.c; i < blen; i++ {
+ // if z.b[i] == stop {
+ // i++
+ // out = z.b[z.c:i]
+ // z.a -= (i - z.c)
+ // z.c = i
+ // return
+ // }
+ // }
+LOOP:
+ if i < uint(len(z.b)) {
if z.b[i] == stop {
i++
out = z.b[z.c:i]
- z.a -= (i - z.c)
+ // z.a -= (i - z.c)
z.c = i
return
}
+ i++
+ goto LOOP
}
- z.a, z.c = 0, blen
+ // z.a = 0
+ // z.c = blen
panic(io.EOF)
}
@@ -974,31 +1239,13 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) {
}
}
if mtid == mapIntfIntfTypId {
- n.initContainers()
- if n.lm < arrayCacheLen {
- n.ma[n.lm] = nil
- rvn = n.rma[n.lm]
- n.lm++
- d.decode(&n.ma[n.lm-1])
- n.lm--
- } else {
- var v2 map[interface{}]interface{}
- d.decode(&v2)
- rvn = reflect.ValueOf(&v2).Elem()
- }
+ var v2 map[interface{}]interface{}
+ d.decode(&v2)
+ rvn = reflect.ValueOf(&v2).Elem()
} else if mtid == mapStrIntfTypId { // for json performance
- n.initContainers()
- if n.ln < arrayCacheLen {
- n.na[n.ln] = nil
- rvn = n.rna[n.ln]
- n.ln++
- d.decode(&n.na[n.ln-1])
- n.ln--
- } else {
- var v2 map[string]interface{}
- d.decode(&v2)
- rvn = reflect.ValueOf(&v2).Elem()
- }
+ var v2 map[string]interface{}
+ d.decode(&v2)
+ rvn = reflect.ValueOf(&v2).Elem()
} else {
if d.mtr {
rvn = reflect.New(d.h.MapType)
@@ -1011,18 +1258,9 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) {
}
case valueTypeArray:
if d.stid == 0 || d.stid == intfSliceTypId {
- n.initContainers()
- if n.ls < arrayCacheLen {
- n.sa[n.ls] = nil
- rvn = n.rsa[n.ls]
- n.ls++
- d.decode(&n.sa[n.ls-1])
- n.ls--
- } else {
- var v2 []interface{}
- d.decode(&v2)
- rvn = reflect.ValueOf(&v2).Elem()
- }
+ var v2 []interface{}
+ d.decode(&v2)
+ rvn = reflect.ValueOf(&v2).Elem()
if reflectArrayOfSupported && d.stid == 0 && d.h.PreferArrayOverSlice {
rvn2 := reflect.New(reflectArrayOf(rvn.Len(), intfTyp)).Elem()
reflect.Copy(rvn2, rvn)
@@ -1042,18 +1280,7 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) {
var v interface{}
tag, bytes := n.u, n.l // calling decode below might taint the values
if bytes == nil {
- n.initContainers()
- if n.li < arrayCacheLen {
- n.ia[n.li] = nil
- n.li++
- d.decode(&n.ia[n.li-1])
- // v = *(&n.ia[l])
- n.li--
- v = n.ia[n.li]
- n.ia[n.li] = nil
- } else {
- d.decode(&v)
- }
+ d.decode(&v)
}
bfn := d.h.getExtForTag(tag)
if bfn == nil {
@@ -1074,19 +1301,19 @@ func (d *Decoder) kInterfaceNaked(f *codecFnInfo) (rvn reflect.Value) {
case valueTypeNil:
// no-op
case valueTypeInt:
- rvn = n.ri
+ rvn = n.ri()
case valueTypeUint:
- rvn = n.ru
+ rvn = n.ru()
case valueTypeFloat:
- rvn = n.rf
+ rvn = n.rf()
case valueTypeBool:
- rvn = n.rb
+ rvn = n.rb()
case valueTypeString, valueTypeSymbol:
- rvn = n.rs
+ rvn = n.rs()
case valueTypeBytes:
- rvn = n.rl
+ rvn = n.rl()
case valueTypeTime:
- rvn = n.rt
+ rvn = n.rt()
default:
panicv.errorf("kInterfaceNaked: unexpected valueType: %d", n.v)
}
@@ -1167,12 +1394,19 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) {
elemsep := d.esep
sfn := structFieldNode{v: rv, update: true}
ctyp := dd.ContainerType()
+ var mf MissingFielder
+ if fti.mf {
+ mf = rv2i(rv).(MissingFielder)
+ } else if fti.mfp {
+ mf = rv2i(rv.Addr()).(MissingFielder)
+ }
if ctyp == valueTypeMap {
containerLen := dd.ReadMapStart()
if containerLen == 0 {
dd.ReadMapEnd()
return
}
+ d.depthIncr()
tisfi := fti.sfiSort
hasLen := containerLen >= 0
@@ -1192,23 +1426,44 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) {
} else {
d.decodeValue(sfn.field(si), nil, true)
}
+ } else if mf != nil {
+ // store rvkencname in new []byte, as it previously shares Decoder.b, which is used in decode
+ name2 := rvkencname
+ rvkencname = make([]byte, len(rvkencname))
+ copy(rvkencname, name2)
+
+ var f interface{}
+ // xdebugf("kStruct: mf != nil: before decode: rvkencname: %s", rvkencname)
+ d.decode(&f)
+ // xdebugf("kStruct: mf != nil: after decode: rvkencname: %s", rvkencname)
+ if !mf.CodecMissingField(rvkencname, f) && d.h.ErrorIfNoField {
+ d.errorf("no matching struct field found when decoding stream map with key: %s ",
+ stringView(rvkencname))
+ }
} else {
d.structFieldNotFound(-1, stringView(rvkencname))
}
// keepAlive4StringView(rvkencnameB) // not needed, as reference is outside loop
}
dd.ReadMapEnd()
+ d.depthDecr()
} else if ctyp == valueTypeArray {
containerLen := dd.ReadArrayStart()
if containerLen == 0 {
dd.ReadArrayEnd()
return
}
+ d.depthIncr()
// Not much gain from doing it two ways for array.
// Arrays are not used as much for structs.
hasLen := containerLen >= 0
+ var checkbreak bool
for j, si := range fti.sfiSrc {
- if (hasLen && j == containerLen) || (!hasLen && dd.CheckBreak()) {
+ if hasLen && j == containerLen {
+ break
+ }
+ if !hasLen && dd.CheckBreak() {
+ checkbreak = true
break
}
if elemsep {
@@ -1220,9 +1475,12 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) {
d.decodeValue(sfn.field(si), nil, true)
}
}
- if containerLen > len(fti.sfiSrc) {
+ if (hasLen && containerLen > len(fti.sfiSrc)) || (!hasLen && !checkbreak) {
// read remaining values and throw away
- for j := len(fti.sfiSrc); j < containerLen; j++ {
+ for j := len(fti.sfiSrc); ; j++ {
+ if (hasLen && j == containerLen) || (!hasLen && dd.CheckBreak()) {
+ break
+ }
if elemsep {
dd.ReadArrayElem()
}
@@ -1230,6 +1488,7 @@ func (d *Decoder) kStruct(f *codecFnInfo, rv reflect.Value) {
}
}
dd.ReadArrayEnd()
+ d.depthDecr()
} else {
d.errorstr(errstrOnlyMapOrArrayCanDecodeIntoStruct)
return
@@ -1299,6 +1558,8 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
return
}
+ d.depthIncr()
+
rtelem0Size := int(rtelem0.Size())
rtElem0Kind := rtelem0.Kind()
rtelem0Mut := !isImmutableKind(rtElem0Kind)
@@ -1355,7 +1616,7 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
var rtelem0ZeroValid bool
var decodeAsNil bool
var j int
- d.cfer()
+
for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && (f.seq == seqTypeSlice || f.seq == seqTypeChan) && rv.IsNil() {
if hasLen {
@@ -1370,7 +1631,6 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
rv = reflect.MakeSlice(ti.rt, rvlen, rvlen)
rvChanged = true
} else { // chan
- // xdebugf(">>>>>> haslen = %v, make chan of type '%v' with length: %v", hasLen, ti.rt, rvlen)
rv = reflect.MakeChan(ti.rt, rvlen)
rvChanged = true
}
@@ -1389,10 +1649,9 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
rv9 = reflect.New(rtelem0).Elem()
}
if fn == nil {
- fn = d.cf.get(rtelem, true, true)
+ fn = d.h.fn(rtelem, true, true)
}
d.decodeValue(rv9, fn, true)
- // xdebugf(">>>> rv9 sent on %v during decode: %v, with len=%v, cap=%v", rv.Type(), rv9, rv.Len(), rv.Cap())
rv.Send(rv9)
} else {
// if indefinite, etc, then expand the slice if necessary
@@ -1429,13 +1688,13 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
rtelem0Zero = reflect.Zero(rtelem0)
}
rv9.Set(rtelem0Zero)
- }
- if decodeAsNil {
- continue
+ if decodeAsNil {
+ continue
+ }
}
if fn == nil {
- fn = d.cf.get(rtelem, true, true)
+ fn = d.h.fn(rtelem, true, true)
}
d.decodeValue(rv9, fn, true)
}
@@ -1462,6 +1721,8 @@ func (d *Decoder) kSlice(f *codecFnInfo, rv reflect.Value) {
if rvChanged { // infers rvCanset=true, so it can be reset
rv0.Set(rv)
}
+
+ d.depthDecr()
}
// func (d *Decoder) kArray(f *codecFnInfo, rv reflect.Value) {
@@ -1475,7 +1736,8 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
elemsep := d.esep
ti := f.ti
if rv.IsNil() {
- rv.Set(makeMapReflect(ti.rt, containerLen))
+ rvlen := decInferLen(containerLen, d.h.MaxInitLen, int(ti.key.Size()+ti.elem.Size()))
+ rv.Set(makeMapReflect(ti.rt, rvlen))
}
if containerLen == 0 {
@@ -1483,6 +1745,8 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
return
}
+ d.depthIncr()
+
ktype, vtype := ti.key, ti.elem
ktypeId := rt2id(ktype)
vtypeKind := vtype.Kind()
@@ -1520,7 +1784,7 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
ktypeIsIntf := ktypeId == intfTypId
hasLen := containerLen > 0
var kstrbs []byte
- d.cfer()
+
for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ {
if rvkMut || !rvkp.IsValid() {
rvkp = reflect.New(ktype)
@@ -1529,19 +1793,20 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
if elemsep {
dd.ReadMapElemKey()
}
- if false && dd.TryDecodeAsNil() { // nil cannot be a map key, so disregard this block
- // Previously, if a nil key, we just ignored the mapped value and continued.
- // However, that makes the result of encoding and then decoding map[intf]intf{nil:nil}
- // to be an empty map.
- // Instead, we treat a nil key as the zero value of the type.
- rvk.Set(reflect.Zero(ktype))
- } else if ktypeIsString {
+ // if false && dd.TryDecodeAsNil() { // nil cannot be a map key, so disregard this block
+ // // Previously, if a nil key, we just ignored the mapped value and continued.
+ // // However, that makes the result of encoding and then decoding map[intf]intf{nil:nil}
+ // // to be an empty map.
+ // // Instead, we treat a nil key as the zero value of the type.
+ // rvk.Set(reflect.Zero(ktype))
+ // } else if ktypeIsString {
+ if ktypeIsString {
kstrbs = dd.DecodeStringAsBytes()
rvk.SetString(stringView(kstrbs))
// NOTE: if doing an insert, you MUST use a real string (not stringview)
} else {
if keyFn == nil {
- keyFn = d.cf.get(ktypeLo, true, true)
+ keyFn = d.h.fn(ktypeLo, true, true)
}
d.decodeValue(rvk, keyFn, true)
}
@@ -1611,7 +1876,7 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
rvk.SetString(d.string(kstrbs))
}
if valFn == nil {
- valFn = d.cf.get(vtypeLo, true, true)
+ valFn = d.h.fn(vtypeLo, true, true)
}
d.decodeValue(rvv, valFn, true)
// d.decodeValueFn(rvv, valFn)
@@ -1624,6 +1889,8 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
}
dd.ReadMapEnd()
+
+ d.depthDecr()
}
// decNaked is used to keep track of the primitives decoded.
@@ -1645,27 +1912,6 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
// kInterfaceNaked will ensure that there is no allocation for the common
// uses.
-type decNakedContainers struct {
- // array/stacks for reducing allocation
- // keep arrays at the bottom? Chance is that they are not used much.
- ia [arrayCacheLen]interface{}
- ma [arrayCacheLen]map[interface{}]interface{}
- na [arrayCacheLen]map[string]interface{}
- sa [arrayCacheLen][]interface{}
-
- // ria [arrayCacheLen]reflect.Value // not needed, as we decode directly into &ia[n]
- rma, rna, rsa [arrayCacheLen]reflect.Value // reflect.Value mapping to above
-}
-
-func (n *decNakedContainers) init() {
- for i := 0; i < arrayCacheLen; i++ {
- // n.ria[i] = reflect.ValueOf(&(n.ia[i])).Elem()
- n.rma[i] = reflect.ValueOf(&(n.ma[i])).Elem()
- n.rna[i] = reflect.ValueOf(&(n.na[i])).Elem()
- n.rsa[i] = reflect.ValueOf(&(n.sa[i])).Elem()
- }
-}
-
type decNaked struct {
// r RawExt // used for RawExt, uint, []byte.
@@ -1681,162 +1927,384 @@ type decNaked struct {
b bool
// state
- v valueType
- li, lm, ln, ls int8
- inited bool
-
- *decNakedContainers
+ v valueType
+ _ [6]bool // padding
- ru, ri, rf, rl, rs, rb, rt reflect.Value // mapping to the primitives above
-
- // _ [6]uint64 // padding // no padding - rt goes into next cache line
-}
-
-func (n *decNaked) init() {
- if n.inited {
- return
- }
- n.ru = reflect.ValueOf(&n.u).Elem()
- n.ri = reflect.ValueOf(&n.i).Elem()
- n.rf = reflect.ValueOf(&n.f).Elem()
- n.rl = reflect.ValueOf(&n.l).Elem()
- n.rs = reflect.ValueOf(&n.s).Elem()
- n.rt = reflect.ValueOf(&n.t).Elem()
- n.rb = reflect.ValueOf(&n.b).Elem()
+ // ru, ri, rf, rl, rs, rb, rt reflect.Value // mapping to the primitives above
+ //
+ // _ [3]uint64 // padding
+}
+
+// func (n *decNaked) init() {
+// n.ru = reflect.ValueOf(&n.u).Elem()
+// n.ri = reflect.ValueOf(&n.i).Elem()
+// n.rf = reflect.ValueOf(&n.f).Elem()
+// n.rl = reflect.ValueOf(&n.l).Elem()
+// n.rs = reflect.ValueOf(&n.s).Elem()
+// n.rt = reflect.ValueOf(&n.t).Elem()
+// n.rb = reflect.ValueOf(&n.b).Elem()
+// // n.rr[] = reflect.ValueOf(&n.)
+// }
- n.inited = true
- // n.rr[] = reflect.ValueOf(&n.)
-}
+// type decNakedPooler struct {
+// n *decNaked
+// nsp *sync.Pool
+// }
-func (n *decNaked) initContainers() {
- if n.decNakedContainers == nil {
- n.decNakedContainers = new(decNakedContainers)
- n.decNakedContainers.init()
- }
-}
+// // naked must be called before each call to .DecodeNaked, as they will use it.
+// func (d *decNakedPooler) naked() *decNaked {
+// if d.n == nil {
+// // consider one of:
+// // - get from sync.Pool (if GC is frequent, there's no value here)
+// // - new alloc (safest. only init'ed if it a naked decode will be done)
+// // - field in Decoder (makes the Decoder struct very big)
+// // To support using a decoder where a DecodeNaked is not needed,
+// // we prefer #1 or #2.
+// // d.n = new(decNaked) // &d.nv // new(decNaked) // grab from a sync.Pool
+// // d.n.init()
+// var v interface{}
+// d.nsp, v = pool.decNaked()
+// d.n = v.(*decNaked)
+// }
+// return d.n
+// }
-func (n *decNaked) reset() {
- if n == nil {
- return
- }
- n.li, n.lm, n.ln, n.ls = 0, 0, 0, 0
-}
+// func (d *decNakedPooler) end() {
+// if d.n != nil {
+// // if n != nil, then nsp != nil (they are always set together)
+// d.nsp.Put(d.n)
+// d.n, d.nsp = nil, nil
+// }
+// }
-type rtid2rv struct {
- rtid uintptr
- rv reflect.Value
-}
+// type rtid2rv struct {
+// rtid uintptr
+// rv reflect.Value
+// }
// --------------
type decReaderSwitch struct {
rb bytesDecReader
// ---- cpu cache line boundary?
- ri *ioDecReader
+ ri *ioDecReader
+ bi *bufioDecReader
+
mtr, str bool // whether maptype or slicetype are known types
- be bool // is binary encoding
+ be bool // is binary encoding
+ js bool // is json handle
+ jsms bool // is json handle, and MapKeyAsString
+ esep bool // has elem separators
+
+ // typ entryType
bytes bool // is bytes reader
- js bool // is json handle
- jsms bool // is json handle, and MapKeyAsString
- esep bool // has elem separators
+ bufio bool // is this a bufioDecReader?
}
-// TODO: Uncomment after mid-stack inlining enabled in go 1.11
+// numread, track and stopTrack are always inlined, as they just check int fields, etc.
+
+/*
+func (z *decReaderSwitch) numread() int {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.numread()
+ case entryTypeIo:
+ return z.ri.numread()
+ default:
+ return z.bi.numread()
+ }
+}
+func (z *decReaderSwitch) track() {
+ switch z.typ {
+ case entryTypeBytes:
+ z.rb.track()
+ case entryTypeIo:
+ z.ri.track()
+ default:
+ z.bi.track()
+ }
+}
+func (z *decReaderSwitch) stopTrack() []byte {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.stopTrack()
+ case entryTypeIo:
+ return z.ri.stopTrack()
+ default:
+ return z.bi.stopTrack()
+ }
+}
+
+func (z *decReaderSwitch) unreadn1() {
+ switch z.typ {
+ case entryTypeBytes:
+ z.rb.unreadn1()
+ case entryTypeIo:
+ z.ri.unreadn1()
+ default:
+ z.bi.unreadn1()
+ }
+}
+func (z *decReaderSwitch) readx(n int) []byte {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.readx(n)
+ case entryTypeIo:
+ return z.ri.readx(n)
+ default:
+ return z.bi.readx(n)
+ }
+}
+func (z *decReaderSwitch) readb(s []byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ z.rb.readb(s)
+ case entryTypeIo:
+ z.ri.readb(s)
+ default:
+ z.bi.readb(s)
+ }
+}
+func (z *decReaderSwitch) readn1() uint8 {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.readn1()
+ case entryTypeIo:
+ return z.ri.readn1()
+ default:
+ return z.bi.readn1()
+ }
+}
+func (z *decReaderSwitch) skip(accept *bitset256) (token byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.skip(accept)
+ case entryTypeIo:
+ return z.ri.skip(accept)
+ default:
+ return z.bi.skip(accept)
+ }
+}
+func (z *decReaderSwitch) readTo(in []byte, accept *bitset256) (out []byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.readTo(in, accept)
+ case entryTypeIo:
+ return z.ri.readTo(in, accept)
+ default:
+ return z.bi.readTo(in, accept)
+ }
+}
+func (z *decReaderSwitch) readUntil(in []byte, stop byte) (out []byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ return z.rb.readUntil(in, stop)
+ case entryTypeIo:
+ return z.ri.readUntil(in, stop)
+ default:
+ return z.bi.readUntil(in, stop)
+ }
+}
+
+*/
+
+// the if/else-if/else block is expensive to inline.
+// Each node of this construct costs a lot and dominates the budget.
+// Best to only do an if fast-path else block (so fast-path is inlined).
+// This is irrespective of inlineExtraCallCost set in $GOROOT/src/cmd/compile/internal/gc/inl.go
//
+// In decReaderSwitch methods below, we delegate all IO functions into their own methods.
+// This allows for the inlining of the common path when z.bytes=true.
+// Go 1.12+ supports inlining methods with up to 1 inlined function (or 2 if no other constructs).
+
+func (z *decReaderSwitch) numread() uint {
+ if z.bytes {
+ return z.rb.numread()
+ } else if z.bufio {
+ return z.bi.numread()
+ } else {
+ return z.ri.numread()
+ }
+}
+func (z *decReaderSwitch) track() {
+ if z.bytes {
+ z.rb.track()
+ } else if z.bufio {
+ z.bi.track()
+ } else {
+ z.ri.track()
+ }
+}
+func (z *decReaderSwitch) stopTrack() []byte {
+ if z.bytes {
+ return z.rb.stopTrack()
+ } else if z.bufio {
+ return z.bi.stopTrack()
+ } else {
+ return z.ri.stopTrack()
+ }
+}
+
// func (z *decReaderSwitch) unreadn1() {
// if z.bytes {
// z.rb.unreadn1()
// } else {
-// z.ri.unreadn1()
-// }
-// }
-// func (z *decReaderSwitch) readx(n int) []byte {
-// if z.bytes {
-// return z.rb.readx(n)
-// }
-// return z.ri.readx(n)
-// }
-// func (z *decReaderSwitch) readb(s []byte) {
-// if z.bytes {
-// z.rb.readb(s)
-// } else {
-// z.ri.readb(s)
-// }
-// }
-// func (z *decReaderSwitch) readn1() uint8 {
-// if z.bytes {
-// return z.rb.readn1()
-// }
-// return z.ri.readn1()
-// }
-// func (z *decReaderSwitch) numread() int {
-// if z.bytes {
-// return z.rb.numread()
+// z.unreadn1IO()
// }
-// return z.ri.numread()
// }
-// func (z *decReaderSwitch) track() {
-// if z.bytes {
-// z.rb.track()
+// func (z *decReaderSwitch) unreadn1IO() {
+// if z.bufio {
+// z.bi.unreadn1()
// } else {
-// z.ri.track()
-// }
-// }
-// func (z *decReaderSwitch) stopTrack() []byte {
-// if z.bytes {
-// return z.rb.stopTrack()
-// }
-// return z.ri.stopTrack()
-// }
-// func (z *decReaderSwitch) skip(accept *bitset256) (token byte) {
-// if z.bytes {
-// return z.rb.skip(accept)
-// }
-// return z.ri.skip(accept)
-// }
-// func (z *decReaderSwitch) readTo(in []byte, accept *bitset256) (out []byte) {
-// if z.bytes {
-// return z.rb.readTo(in, accept)
-// }
-// return z.ri.readTo(in, accept)
-// }
-// func (z *decReaderSwitch) readUntil(in []byte, stop byte) (out []byte) {
-// if z.bytes {
-// return z.rb.readUntil(in, stop)
+// z.ri.unreadn1()
// }
-// return z.ri.readUntil(in, stop)
// }
-// A Decoder reads and decodes an object from an input stream in the codec format.
+func (z *decReaderSwitch) unreadn1() {
+ if z.bytes {
+ z.rb.unreadn1()
+ } else if z.bufio {
+ z.bi.unreadn1()
+ } else {
+ z.ri.unreadn1() // not inlined
+ }
+}
+
+func (z *decReaderSwitch) readx(n uint) []byte {
+ if z.bytes {
+ return z.rb.readx(n)
+ }
+ return z.readxIO(n)
+}
+func (z *decReaderSwitch) readxIO(n uint) []byte {
+ if z.bufio {
+ return z.bi.readx(n)
+ }
+ return z.ri.readx(n)
+}
+
+func (z *decReaderSwitch) readb(s []byte) {
+ if z.bytes {
+ z.rb.readb(s)
+ } else {
+ z.readbIO(s)
+ }
+}
+
+//go:noinline - fallback for io, ensures z.bytes path is inlined
+func (z *decReaderSwitch) readbIO(s []byte) {
+ if z.bufio {
+ z.bi.readb(s)
+ } else {
+ z.ri.readb(s)
+ }
+}
+
+func (z *decReaderSwitch) readn1() uint8 {
+ if z.bytes {
+ return z.rb.readn1()
+ }
+ return z.readn1IO()
+}
+func (z *decReaderSwitch) readn1IO() uint8 {
+ if z.bufio {
+ return z.bi.readn1()
+ }
+ return z.ri.readn1()
+}
+
+func (z *decReaderSwitch) skip(accept *bitset256) (token byte) {
+ if z.bytes {
+ return z.rb.skip(accept)
+ }
+ return z.skipIO(accept)
+}
+func (z *decReaderSwitch) skipIO(accept *bitset256) (token byte) {
+ if z.bufio {
+ return z.bi.skip(accept)
+ }
+ return z.ri.skip(accept)
+}
+
+func (z *decReaderSwitch) readTo(in []byte, accept *bitset256) (out []byte) {
+ if z.bytes {
+ return z.rb.readToNoInput(accept) // z.rb.readTo(in, accept)
+ }
+ return z.readToIO(in, accept)
+}
+
+//go:noinline - fallback for io, ensures z.bytes path is inlined
+func (z *decReaderSwitch) readToIO(in []byte, accept *bitset256) (out []byte) {
+ if z.bufio {
+ return z.bi.readTo(in, accept)
+ }
+ return z.ri.readTo(in, accept)
+}
+func (z *decReaderSwitch) readUntil(in []byte, stop byte) (out []byte) {
+ if z.bytes {
+ return z.rb.readUntilNoInput(stop)
+ }
+ return z.readUntilIO(in, stop)
+}
+
+func (z *decReaderSwitch) readUntilIO(in []byte, stop byte) (out []byte) {
+ if z.bufio {
+ return z.bi.readUntil(in, stop)
+ }
+ return z.ri.readUntil(in, stop)
+}
+
+// Decoder reads and decodes an object from an input stream in a supported format.
+//
+// Decoder is NOT safe for concurrent use i.e. a Decoder cannot be used
+// concurrently in multiple goroutines.
+//
+// However, as Decoder could be allocation heavy to initialize, a Reset method is provided
+// so its state can be reused to decode new input streams repeatedly.
+// This is the idiomatic way to use.
type Decoder struct {
panicHdl
// hopefully, reduce derefencing cost by laying the decReader inside the Decoder.
// Try to put things that go together to fit within a cache line (8 words).
d decDriver
+
// NOTE: Decoder shouldn't call it's read methods,
// as the handler MAY need to do some coordination.
- r decReader
- h *BasicHandle
- bi *bufioDecReader
+ r *decReaderSwitch
+
+ // bi *bufioDecReader
// cache the mapTypeId and sliceTypeId for faster comparisons
mtid uintptr
stid uintptr
+ hh Handle
+ h *BasicHandle
+
// ---- cpu cache line boundary?
decReaderSwitch
// ---- cpu cache line boundary?
- codecFnPooler
+ n decNaked
+
// cr containerStateRecv
- n *decNaked
- nsp *sync.Pool
err error
+ depth int16
+ maxdepth int16
+
+ // Extensions can call Decode() within a current Decode() call.
+ // We need to know when the top level Decode() call returns,
+ // so we can decide whether to Release() or not.
+ calls uint16 // what depth in mustDecode are we in now.
+
+ _ [2]uint8 // padding
+
+ is map[string]string // used for interning strings
+
// ---- cpu cache line boundary?
- b [decScratchByteArrayLen]byte // scratch buffer, used by Decoder and xxxEncDrivers
- is map[string]string // used for interning strings
+ b [decScratchByteArrayLen]byte // scratch buffer, used by Decoder and xxxEncDrivers
// padding - false sharing help // modify 232 if Decoder struct changes.
// _ [cacheLineSize - 232%cacheLineSize]byte
@@ -1844,8 +2312,8 @@ type Decoder struct {
// NewDecoder returns a Decoder for decoding a stream of bytes from an io.Reader.
//
-// For efficiency, Users are encouraged to pass in a memory buffered reader
-// (eg bufio.Reader, bytes.Buffer).
+// For efficiency, Users are encouraged to configure ReaderBufferSize on the handle
+// OR pass in a memory buffered reader (eg bufio.Reader, bytes.Buffer).
func NewDecoder(r io.Reader, h Handle) *Decoder {
d := newDecoder(h)
d.Reset(r)
@@ -1860,10 +2328,16 @@ func NewDecoderBytes(in []byte, h Handle) *Decoder {
return d
}
-var defaultDecNaked decNaked
+// var defaultDecNaked decNaked
func newDecoder(h Handle) *Decoder {
- d := &Decoder{h: h.getBasicHandle(), err: errDecoderNotInitialized}
+ d := &Decoder{h: basicHandle(h), err: errDecoderNotInitialized}
+ d.bytes = true
+ if useFinalizers {
+ runtime.SetFinalizer(d, (*Decoder).finalize)
+ // xdebugf(">>>> new(Decoder) with finalizer")
+ }
+ d.r = &d.decReaderSwitch
d.hh = h
d.be = h.isBinary()
// NOTE: do not initialize d.n here. It is lazily initialized in d.naked()
@@ -1882,9 +2356,15 @@ func newDecoder(h Handle) *Decoder {
}
func (d *Decoder) resetCommon() {
- d.n.reset()
+ // d.r = &d.decReaderSwitch
d.d.reset()
d.err = nil
+ d.calls = 0
+ d.depth = 0
+ d.maxdepth = d.h.MaxDepth
+ if d.maxdepth <= 0 {
+ d.maxdepth = decDefMaxDepth
+ }
// reset all things which were cached from the Handle, but could change
d.mtid, d.stid = 0, 0
d.mtr, d.str = false, false
@@ -1904,14 +2384,16 @@ func (d *Decoder) Reset(r io.Reader) {
if r == nil {
return
}
- if d.bi == nil {
- d.bi = new(bufioDecReader)
- }
d.bytes = false
+ // d.typ = entryTypeUnset
if d.h.ReaderBufferSize > 0 {
- d.bi.buf = make([]byte, 0, d.h.ReaderBufferSize)
- d.bi.reset(r)
- d.r = d.bi
+ if d.bi == nil {
+ d.bi = new(bufioDecReader)
+ }
+ d.bi.reset(r, d.h.ReaderBufferSize)
+ // d.r = d.bi
+ // d.typ = entryTypeBufio
+ d.bufio = true
} else {
// d.ri.x = &d.b
// d.s = d.sa[:0]
@@ -1919,7 +2401,9 @@ func (d *Decoder) Reset(r io.Reader) {
d.ri = new(ioDecReader)
}
d.ri.reset(r)
- d.r = d.ri
+ // d.r = d.ri
+ // d.typ = entryTypeIo
+ d.bufio = false
}
d.resetCommon()
}
@@ -1931,28 +2415,15 @@ func (d *Decoder) ResetBytes(in []byte) {
return
}
d.bytes = true
+ d.bufio = false
+ // d.typ = entryTypeBytes
d.rb.reset(in)
- d.r = &d.rb
+ // d.r = &d.rb
d.resetCommon()
}
-// naked must be called before each call to .DecodeNaked,
-// as they will use it.
func (d *Decoder) naked() *decNaked {
- if d.n == nil {
- // consider one of:
- // - get from sync.Pool (if GC is frequent, there's no value here)
- // - new alloc (safest. only init'ed if it a naked decode will be done)
- // - field in Decoder (makes the Decoder struct very big)
- // To support using a decoder where a DecodeNaked is not needed,
- // we prefer #1 or #2.
- // d.n = new(decNaked) // &d.nv // new(decNaked) // grab from a sync.Pool
- // d.n.init()
- var v interface{}
- d.nsp, v = pool.decNaked()
- d.n = v.(*decNaked)
- }
- return d.n
+ return &d.n
}
// Decode decodes the stream from reader and stores the result in the
@@ -1989,7 +2460,8 @@ func (d *Decoder) naked() *decNaked {
// - Else decode it based on its reflect.Kind
//
// There are some special rules when decoding into containers (slice/array/map/struct).
-// Decode will typically use the stream contents to UPDATE the container.
+// Decode will typically use the stream contents to UPDATE the container i.e. the values
+// in these containers will not be zero'ed before decoding.
// - A map can be decoded from a stream map, by updating matching keys.
// - A slice can be decoded from a stream array,
// by updating the first n elements, where n is length of the stream.
@@ -1999,7 +2471,15 @@ func (d *Decoder) naked() *decNaked {
// - A struct can be decoded from a stream array,
// by updating fields as they occur in the struct (by index).
//
-// When decoding a stream map or array with length of 0 into a nil map or slice,
+// This in-place update maintains consistency in the decoding philosophy (i.e. we ALWAYS update
+// in place by default). However, the consequence of this is that values in slices or maps
+// which are not zero'ed before hand, will have part of the prior values in place after decode
+// if the stream doesn't contain an update for those parts.
+//
+// This in-place update can be disabled by configuring the MapValueReset and SliceElementReset
+// decode options available on every handle.
+//
+// Furthermore, when decoding a stream map or array with length of 0 into a nil map or slice,
// we reset the destination map or slice to a zero-length value.
//
// However, when decoding a stream nil, we reset the destination container
@@ -2008,44 +2488,84 @@ func (d *Decoder) naked() *decNaked {
// Note: we allow nil values in the stream anywhere except for map keys.
// A nil value in the encoded stream where a map key is expected is treated as an error.
func (d *Decoder) Decode(v interface{}) (err error) {
- defer d.deferred(&err)
- d.MustDecode(v)
+ // tried to use closure, as runtime optimizes defer with no params.
+ // This seemed to be causing weird issues (like circular reference found, unexpected panic, etc).
+ // Also, see https://github.com/golang/go/issues/14939#issuecomment-417836139
+ // defer func() { d.deferred(&err) }()
+ // { x, y := d, &err; defer func() { x.deferred(y) }() }
+ if d.err != nil {
+ return d.err
+ }
+ if recoverPanicToErr {
+ defer func() {
+ if x := recover(); x != nil {
+ panicValToErr(d, x, &d.err)
+ err = d.err
+ }
+ }()
+ }
+
+ // defer d.deferred(&err)
+ d.mustDecode(v)
return
}
// MustDecode is like Decode, but panics if unable to Decode.
// This provides insight to the code location that triggered the error.
func (d *Decoder) MustDecode(v interface{}) {
- // TODO: Top-level: ensure that v is a pointer and not nil.
if d.err != nil {
panic(d.err)
}
+ d.mustDecode(v)
+}
+
+// MustDecode is like Decode, but panics if unable to Decode.
+// This provides insight to the code location that triggered the error.
+func (d *Decoder) mustDecode(v interface{}) {
+ // TODO: Top-level: ensure that v is a pointer and not nil.
+ d.calls++
if d.d.TryDecodeAsNil() {
setZero(v)
} else {
d.decode(v)
}
- d.alwaysAtEnd()
// xprintf(">>>>>>>> >>>>>>>> num decFns: %v\n", d.cf.sn)
+ d.calls--
+ if !d.h.ExplicitRelease && d.calls == 0 {
+ d.Release()
+ }
}
-func (d *Decoder) deferred(err1 *error) {
- d.alwaysAtEnd()
- if recoverPanicToErr {
- if x := recover(); x != nil {
- panicValToErr(d, x, err1)
- panicValToErr(d, x, &d.err)
- }
- }
+// func (d *Decoder) deferred(err1 *error) {
+// if recoverPanicToErr {
+// if x := recover(); x != nil {
+// panicValToErr(d, x, err1)
+// panicValToErr(d, x, &d.err)
+// }
+// }
+// }
+
+//go:noinline -- as it is run by finalizer
+func (d *Decoder) finalize() {
+ // xdebugf("finalizing Decoder")
+ d.Release()
}
-func (d *Decoder) alwaysAtEnd() {
- if d.n != nil {
- // if n != nil, then nsp != nil (they are always set together)
- d.nsp.Put(d.n)
- d.n, d.nsp = nil, nil
+// Release releases shared (pooled) resources.
+//
+// It is important to call Release() when done with a Decoder, so those resources
+// are released instantly for use by subsequently created Decoders.
+//
+// By default, Release() is automatically called unless the option ExplicitRelease is set.
+func (d *Decoder) Release() {
+ if useFinalizers && removeFinalizerOnRelease {
+ runtime.SetFinalizer(d, nil)
}
- d.codecFnPooler.alwaysAtEnd()
+ if d.bi != nil && d.bi.bytesBufPooler.pool != nil {
+ d.bi.buf = nil
+ d.bi.bytesBufPooler.end()
+ }
+ // d.decNakedPooler.end()
}
// // this is not a smart swallow, as it allocates objects and does unnecessary work.
@@ -2064,6 +2584,7 @@ func (d *Decoder) swallow() {
switch dd.ContainerType() {
case valueTypeMap:
containerLen := dd.ReadMapStart()
+ d.depthIncr()
hasLen := containerLen >= 0
for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ {
// if clenGtEqualZero {if j >= containerLen {break} } else if dd.CheckBreak() {break}
@@ -2077,8 +2598,10 @@ func (d *Decoder) swallow() {
d.swallow()
}
dd.ReadMapEnd()
+ d.depthDecr()
case valueTypeArray:
containerLen := dd.ReadArrayStart()
+ d.depthIncr()
hasLen := containerLen >= 0
for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ {
if elemsep {
@@ -2087,6 +2610,7 @@ func (d *Decoder) swallow() {
d.swallow()
}
dd.ReadArrayEnd()
+ d.depthDecr()
case valueTypeBytes:
dd.DecodeBytes(d.b[:], true)
case valueTypeString:
@@ -2097,17 +2621,8 @@ func (d *Decoder) swallow() {
n := d.naked()
dd.DecodeNaked()
if n.v == valueTypeExt && n.l == nil {
- n.initContainers()
- if n.li < arrayCacheLen {
- n.ia[n.li] = nil
- n.li++
- d.decode(&n.ia[n.li-1])
- n.ia[n.li-1] = nil
- n.li--
- } else {
- var v2 interface{}
- d.decode(&v2)
- }
+ var v2 interface{}
+ d.decode(&v2)
}
}
}
@@ -2167,21 +2682,17 @@ func setZero(iv interface{}) {
}
func (d *Decoder) decode(iv interface{}) {
- // check nil and interfaces explicitly,
- // so that type switches just have a run of constant non-interface types.
+ // a switch with only concrete types can be optimized.
+ // consequently, we deal with nil and interfaces outside the switch.
+
if iv == nil {
d.errorstr(errstrCannotDecodeIntoNil)
return
}
- if v, ok := iv.(Selfer); ok {
- v.CodecDecodeSelf(d)
- return
- }
switch v := iv.(type) {
// case nil:
// case Selfer:
-
case reflect.Value:
v = d.ensureDecodeable(v)
d.decodeValue(v, nil, true)
@@ -2235,7 +2746,9 @@ func (d *Decoder) decode(iv interface{}) {
// d.decodeValueNotNil(reflect.ValueOf(iv).Elem())
default:
- if !fastpathDecodeTypeSwitch(iv, d) {
+ if v, ok := iv.(Selfer); ok {
+ v.CodecDecodeSelf(d)
+ } else if !fastpathDecodeTypeSwitch(iv, d) {
v := reflect.ValueOf(iv)
v = d.ensureDecodeable(v)
d.decodeValue(v, nil, false)
@@ -2265,7 +2778,7 @@ func (d *Decoder) decodeValue(rv reflect.Value, fn *codecFn, chkAll bool) {
if fn == nil {
// always pass checkCodecSelfer=true, in case T or ****T is passed, where *T is a Selfer
- fn = d.cfer().get(rv.Type(), chkAll, true) // chkAll, chkAll)
+ fn = d.h.fn(rv.Type(), chkAll, true) // chkAll, chkAll)
}
if fn.i.addrD {
if rvpValid {
@@ -2306,7 +2819,7 @@ func (d *Decoder) arrayCannotExpand(sliceLen, streamLen int) {
func isDecodeable(rv reflect.Value) (rv2 reflect.Value, canDecode bool) {
switch rv.Kind() {
case reflect.Array:
- return rv, true
+ return rv, rv.CanAddr()
case reflect.Ptr:
if !rv.IsNil() {
return rv.Elem(), true
@@ -2344,6 +2857,17 @@ func (d *Decoder) ensureDecodeable(rv reflect.Value) (rv2 reflect.Value) {
return
}
+func (d *Decoder) depthIncr() {
+ d.depth++
+ if d.depth >= d.maxdepth {
+ panic(errMaxDepthExceeded)
+ }
+}
+
+func (d *Decoder) depthDecr() {
+ d.depth--
+}
+
// Possibly get an interned version of a string
//
// This should mostly be used for map keys, where the key type is string.
@@ -2378,8 +2902,13 @@ func (d *Decoder) rawBytes() []byte {
return bs2
}
-func (d *Decoder) wrapErrstr(v interface{}, err *error) {
- *err = fmt.Errorf("%s decode error [pos %d]: %v", d.hh.Name(), d.r.numread(), v)
+func (d *Decoder) wrapErr(v interface{}, err *error) {
+ *err = decodeError{codecError: codecError{name: d.hh.Name(), err: v}, pos: int(d.r.numread())}
+}
+
+// NumBytesRead returns the number of bytes read
+func (d *Decoder) NumBytesRead() int {
+ return int(d.r.numread())
}
// --------------------------------------------------
@@ -2427,7 +2956,7 @@ func (x decSliceHelper) ElemContainerState(index int) {
}
}
-func decByteSlice(r decReader, clen, maxInitLen int, bs []byte) (bsOut []byte) {
+func decByteSlice(r *decReaderSwitch, clen, maxInitLen int, bs []byte) (bsOut []byte) {
if clen == 0 {
return zeroByteSlice
}
@@ -2454,6 +2983,13 @@ func decByteSlice(r decReader, clen, maxInitLen int, bs []byte) (bsOut []byte) {
return
}
+// func decByteSliceZeroCopy(r decReader, clen, maxInitLen int, bs []byte) (bsOut []byte) {
+// if _, ok := r.(*bytesDecReader); ok && clen <= maxInitLen {
+// return r.readx(clen)
+// }
+// return decByteSlice(r, clen, maxInitLen, bs)
+// }
+
func detachZeroCopyBytes(isBytesReader bool, dest []byte, in []byte) (out []byte) {
if xlen := len(in); xlen > 0 {
if isBytesReader || xlen <= scratchByteArrayLen {
@@ -2533,19 +3069,19 @@ func expandSliceRV(s reflect.Value, st reflect.Type, canChange bool, stElemSize,
return
}
-func decReadFull(r io.Reader, bs []byte) (n int, err error) {
+func decReadFull(r io.Reader, bs []byte) (n uint, err error) {
var nn int
- for n < len(bs) && err == nil {
+ for n < uint(len(bs)) && err == nil {
nn, err = r.Read(bs[n:])
if nn > 0 {
if err == io.EOF {
// leave EOF for next time
err = nil
}
- n += nn
+ n += uint(nn)
}
}
-
+ // xdebugf("decReadFull: len(bs): %v, n: %v, err: %v", len(bs), n, err)
// do not do this - it serves no purpose
// if n != len(bs) && err == io.EOF { err = io.ErrUnexpectedEOF }
return
diff --git a/vendor/github.com/ugorji/go/codec/encode.go b/vendor/github.com/ugorji/go/codec/encode.go
index ef465294..f3a7ced5 100644
--- a/vendor/github.com/ugorji/go/codec/encode.go
+++ b/vendor/github.com/ugorji/go/codec/encode.go
@@ -4,31 +4,39 @@
package codec
import (
- "bufio"
"encoding"
"errors"
"fmt"
"io"
"reflect"
+ "runtime"
"sort"
"strconv"
- "sync"
"time"
)
-const defEncByteBufSize = 1 << 6 // 4:16, 6:64, 8:256, 10:1024
+// defEncByteBufSize is the default size of []byte used
+// for bufio buffer or []byte (when nil passed)
+const defEncByteBufSize = 1 << 10 // 4:16, 6:64, 8:256, 10:1024
var errEncoderNotInitialized = errors.New("Encoder not initialized")
+/*
+
// encWriter abstracts writing to a byte array or to an io.Writer.
+//
+//
+// Deprecated: Use encWriterSwitch instead.
type encWriter interface {
writeb([]byte)
writestr(string)
writen1(byte)
writen2(byte, byte)
- atEndOfEncode()
+ end()
}
+*/
+
// encDriver abstracts the actual codec (binc vs msgpack, etc)
type encDriver interface {
EncodeNil()
@@ -40,9 +48,14 @@ type encDriver interface {
// encodeExtPreamble(xtag byte, length int)
EncodeRawExt(re *RawExt, e *Encoder)
EncodeExt(v interface{}, xtag uint64, ext Ext, e *Encoder)
+ // Deprecated: try to use EncodeStringEnc instead
EncodeString(c charEncoding, v string)
+ // c cannot be cRAW
+ EncodeStringEnc(c charEncoding, v string)
// EncodeSymbol(v string)
+ // Deprecated: try to use EncodeStringBytesRaw instead
EncodeStringBytes(c charEncoding, v []byte)
+ EncodeStringBytesRaw(v []byte)
EncodeTime(time.Time)
//encBignum(f *big.Int)
//encStringRunes(c charEncoding, v []rune)
@@ -58,14 +71,18 @@ type encDriver interface {
atEndOfEncode()
}
-type ioEncStringWriter interface {
- WriteString(s string) (n int, err error)
-}
-
type encDriverAsis interface {
EncodeAsis(v []byte)
}
+type encodeError struct {
+ codecError
+}
+
+func (e encodeError) Error() string {
+ return fmt.Sprintf("%s encode error: %v", e.name, e.err)
+}
+
type encDriverNoopContainerWriter struct{}
func (encDriverNoopContainerWriter) WriteArrayStart(length int) {}
@@ -170,6 +187,12 @@ type EncodeOptions struct {
// ---------------------------------------------
+/*
+
+type ioEncStringWriter interface {
+ WriteString(s string) (n int, err error)
+}
+
// ioEncWriter implements encWriter and can write to an io.Writer implementation
type ioEncWriter struct {
w io.Writer
@@ -180,6 +203,19 @@ type ioEncWriter struct {
b [8]byte
}
+func (z *ioEncWriter) reset(w io.Writer) {
+ z.w = w
+ var ok bool
+ if z.bw, ok = w.(io.ByteWriter); !ok {
+ z.bw = z
+ }
+ if z.sw, ok = w.(ioEncStringWriter); !ok {
+ z.sw = z
+ }
+ z.fw, _ = w.(ioFlusher)
+ z.ww = w
+}
+
func (z *ioEncWriter) WriteByte(b byte) (err error) {
z.b[0] = b
_, err = z.w.Write(z.b[:1])
@@ -225,7 +261,8 @@ func (z *ioEncWriter) writen2(b1, b2 byte) {
// }
// }
-func (z *ioEncWriter) atEndOfEncode() {
+//go:noinline - so *encWriterSwitch.XXX has the bytesEncAppender.XXX inlined
+func (z *ioEncWriter) end() {
if z.fw != nil {
if err := z.fw.Flush(); err != nil {
panic(err)
@@ -233,6 +270,104 @@ func (z *ioEncWriter) atEndOfEncode() {
}
}
+*/
+
+// ---------------------------------------------
+
+// bufioEncWriter
+type bufioEncWriter struct {
+ buf []byte
+ w io.Writer
+ n int
+
+ bytesBufPooler
+
+ _ [3]uint64 // padding
+ // a int
+ // b [4]byte
+ // err
+}
+
+func (z *bufioEncWriter) reset(w io.Writer, bufsize int) {
+ z.w = w
+ z.n = 0
+ if bufsize <= 0 {
+ bufsize = defEncByteBufSize
+ }
+ if z.buf == nil {
+ z.buf = z.bytesBufPooler.get(bufsize)
+ } else if cap(z.buf) >= bufsize {
+ z.buf = z.buf[:cap(z.buf)]
+ } else {
+ z.bytesBufPooler.end() // potentially return old one to pool
+ z.buf = z.bytesBufPooler.get(bufsize)
+ // z.buf = make([]byte, bufsize)
+ }
+}
+
+//go:noinline - flush only called intermittently
+func (z *bufioEncWriter) flush() {
+ n, err := z.w.Write(z.buf[:z.n])
+ z.n -= n
+ if z.n > 0 && err == nil {
+ err = io.ErrShortWrite
+ }
+ if err != nil {
+ if n > 0 && z.n > 0 {
+ copy(z.buf, z.buf[n:z.n+n])
+ }
+ panic(err)
+ }
+}
+
+func (z *bufioEncWriter) writeb(s []byte) {
+LOOP:
+ a := len(z.buf) - z.n
+ if len(s) > a {
+ z.n += copy(z.buf[z.n:], s[:a])
+ s = s[a:]
+ z.flush()
+ goto LOOP
+ }
+ z.n += copy(z.buf[z.n:], s)
+}
+
+func (z *bufioEncWriter) writestr(s string) {
+ // z.writeb(bytesView(s)) // inlined below
+LOOP:
+ a := len(z.buf) - z.n
+ if len(s) > a {
+ z.n += copy(z.buf[z.n:], s[:a])
+ s = s[a:]
+ z.flush()
+ goto LOOP
+ }
+ z.n += copy(z.buf[z.n:], s)
+}
+
+func (z *bufioEncWriter) writen1(b1 byte) {
+ if 1 > len(z.buf)-z.n {
+ z.flush()
+ }
+ z.buf[z.n] = b1
+ z.n++
+}
+
+func (z *bufioEncWriter) writen2(b1, b2 byte) {
+ if 2 > len(z.buf)-z.n {
+ z.flush()
+ }
+ z.buf[z.n+1] = b2
+ z.buf[z.n] = b1
+ z.n += 2
+}
+
+func (z *bufioEncWriter) end() {
+ if z.n > 0 {
+ z.flush()
+ }
+}
+
// ---------------------------------------------
// bytesEncAppender implements encWriter and can write to an byte slice.
@@ -253,7 +388,7 @@ func (z *bytesEncAppender) writen1(b1 byte) {
func (z *bytesEncAppender) writen2(b1, b2 byte) {
z.b = append(z.b, b1, b2)
}
-func (z *bytesEncAppender) atEndOfEncode() {
+func (z *bytesEncAppender) end() {
*(z.out) = z.b
}
func (z *bytesEncAppender) reset(in []byte, out *[]byte) {
@@ -277,17 +412,17 @@ func (e *Encoder) selferMarshal(f *codecFnInfo, rv reflect.Value) {
func (e *Encoder) binaryMarshal(f *codecFnInfo, rv reflect.Value) {
bs, fnerr := rv2i(rv).(encoding.BinaryMarshaler).MarshalBinary()
- e.marshal(bs, fnerr, false, cRAW)
+ e.marshalRaw(bs, fnerr)
}
func (e *Encoder) textMarshal(f *codecFnInfo, rv reflect.Value) {
bs, fnerr := rv2i(rv).(encoding.TextMarshaler).MarshalText()
- e.marshal(bs, fnerr, false, cUTF8)
+ e.marshalUtf8(bs, fnerr)
}
func (e *Encoder) jsonMarshal(f *codecFnInfo, rv reflect.Value) {
bs, fnerr := rv2i(rv).(jsonMarshaler).MarshalJSON()
- e.marshal(bs, fnerr, true, cUTF8)
+ e.marshalAsis(bs, fnerr)
}
func (e *Encoder) raw(f *codecFnInfo, rv reflect.Value) {
@@ -317,7 +452,7 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
// If in this method, then there was no extension function defined.
// So it's okay to treat as []byte.
if ti.rtid == uint8SliceTypId {
- ee.EncodeStringBytes(cRAW, rv.Bytes())
+ ee.EncodeStringBytesRaw(rv.Bytes())
return
}
}
@@ -332,11 +467,11 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
if rtelemIsByte {
switch f.seq {
case seqTypeSlice:
- ee.EncodeStringBytes(cRAW, rv.Bytes())
+ ee.EncodeStringBytesRaw(rv.Bytes())
case seqTypeArray:
l = rv.Len()
if rv.CanAddr() {
- ee.EncodeStringBytes(cRAW, rv.Slice(0, l).Bytes())
+ ee.EncodeStringBytesRaw(rv.Slice(0, l).Bytes())
} else {
var bs []byte
if l <= cap(e.b) {
@@ -345,7 +480,7 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
bs = make([]byte, l)
}
reflect.Copy(reflect.ValueOf(bs), rv)
- ee.EncodeStringBytes(cRAW, bs)
+ ee.EncodeStringBytesRaw(bs)
}
case seqTypeChan:
// do not use range, so that the number of elements encoded
@@ -392,15 +527,14 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
}
}
- ee.EncodeStringBytes(cRAW, bs)
+ ee.EncodeStringBytesRaw(bs)
}
return
}
// if chan, consume chan into a slice, and work off that slice.
- var rvcs reflect.Value
if f.seq == seqTypeChan {
- rvcs = reflect.Zero(reflect.SliceOf(rtelem))
+ rvcs := reflect.Zero(reflect.SliceOf(rtelem))
timeout := e.h.ChanRecvTimeout
if timeout < 0 { // consume until close
for {
@@ -450,7 +584,7 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
// encoding type, because preEncodeValue may break it down to
// a concrete type and kInterface will bomb.
if rtelem.Kind() != reflect.Interface {
- fn = e.cfer().get(rtelem, true, true)
+ fn = e.h.fn(rtelem, true, true)
}
for j := 0; j < l; j++ {
if elemsep {
@@ -477,36 +611,36 @@ func (e *Encoder) kSlice(f *codecFnInfo, rv reflect.Value) {
func (e *Encoder) kStructNoOmitempty(f *codecFnInfo, rv reflect.Value) {
fti := f.ti
- elemsep := e.esep
tisfi := fti.sfiSrc
toMap := !(fti.toArray || e.h.StructToArray)
if toMap {
tisfi = fti.sfiSort
}
+
ee := e.e
sfn := structFieldNode{v: rv, update: false}
if toMap {
ee.WriteMapStart(len(tisfi))
- if elemsep {
+ if e.esep {
for _, si := range tisfi {
ee.WriteMapElemKey()
- // ee.EncodeString(cUTF8, si.encName)
- encStructFieldKey(ee, fti.keyType, si.encName)
+ // ee.EncodeStringEnc(cUTF8, si.encName)
+ e.kStructFieldKey(fti.keyType, si)
ee.WriteMapElemValue()
e.encodeValue(sfn.field(si), nil, true)
}
} else {
for _, si := range tisfi {
- // ee.EncodeString(cUTF8, si.encName)
- encStructFieldKey(ee, fti.keyType, si.encName)
+ // ee.EncodeStringEnc(cUTF8, si.encName)
+ e.kStructFieldKey(fti.keyType, si)
e.encodeValue(sfn.field(si), nil, true)
}
}
ee.WriteMapEnd()
} else {
ee.WriteArrayStart(len(tisfi))
- if elemsep {
+ if e.esep {
for _, si := range tisfi {
ee.WriteArrayElem()
e.encodeValue(sfn.field(si), nil, true)
@@ -520,22 +654,39 @@ func (e *Encoder) kStructNoOmitempty(f *codecFnInfo, rv reflect.Value) {
}
}
-func encStructFieldKey(ee encDriver, keyType valueType, s string) {
+func (e *Encoder) kStructFieldKey(keyType valueType, s *structFieldInfo) {
var m must
-
// use if-else-if, not switch (which compiles to binary-search)
// since keyType is typically valueTypeString, branch prediction is pretty good.
+ if keyType == valueTypeString {
+ if e.js && s.encNameAsciiAlphaNum { // keyType == valueTypeString
+ e.w.writen1('"')
+ e.w.writestr(s.encName)
+ e.w.writen1('"')
+ } else { // keyType == valueTypeString
+ e.e.EncodeStringEnc(cUTF8, s.encName)
+ }
+ } else if keyType == valueTypeInt {
+ e.e.EncodeInt(m.Int(strconv.ParseInt(s.encName, 10, 64)))
+ } else if keyType == valueTypeUint {
+ e.e.EncodeUint(m.Uint(strconv.ParseUint(s.encName, 10, 64)))
+ } else if keyType == valueTypeFloat {
+ e.e.EncodeFloat64(m.Float(strconv.ParseFloat(s.encName, 64)))
+ }
+}
+func (e *Encoder) kStructFieldKeyName(keyType valueType, encName string) {
+ var m must
+ // use if-else-if, not switch (which compiles to binary-search)
+ // since keyType is typically valueTypeString, branch prediction is pretty good.
if keyType == valueTypeString {
- ee.EncodeString(cUTF8, s)
+ e.e.EncodeStringEnc(cUTF8, encName)
} else if keyType == valueTypeInt {
- ee.EncodeInt(m.Int(strconv.ParseInt(s, 10, 64)))
+ e.e.EncodeInt(m.Int(strconv.ParseInt(encName, 10, 64)))
} else if keyType == valueTypeUint {
- ee.EncodeUint(m.Uint(strconv.ParseUint(s, 10, 64)))
+ e.e.EncodeUint(m.Uint(strconv.ParseUint(encName, 10, 64)))
} else if keyType == valueTypeFloat {
- ee.EncodeFloat64(m.Float(strconv.ParseFloat(s, 64)))
- } else {
- ee.EncodeString(cUTF8, s)
+ e.e.EncodeFloat64(m.Float(strconv.ParseFloat(encName, 64)))
}
}
@@ -543,12 +694,30 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) {
fti := f.ti
elemsep := e.esep
tisfi := fti.sfiSrc
+ var newlen int
toMap := !(fti.toArray || e.h.StructToArray)
+ var mf map[string]interface{}
+ if f.ti.mf {
+ mf = rv2i(rv).(MissingFielder).CodecMissingFields()
+ toMap = true
+ newlen += len(mf)
+ } else if f.ti.mfp {
+ if rv.CanAddr() {
+ mf = rv2i(rv.Addr()).(MissingFielder).CodecMissingFields()
+ } else {
+ // make a new addressable value of same one, and use it
+ rv2 := reflect.New(rv.Type())
+ rv2.Elem().Set(rv)
+ mf = rv2i(rv2).(MissingFielder).CodecMissingFields()
+ }
+ toMap = true
+ newlen += len(mf)
+ }
// if toMap, use the sorted array. If toArray, use unsorted array (to match sequence in struct)
if toMap {
tisfi = fti.sfiSort
}
- newlen := len(fti.sfiSort)
+ newlen += len(tisfi)
ee := e.e
// Use sync.Pool to reduce allocating slices unnecessarily.
@@ -563,33 +732,14 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) {
// The cost is that of locking sometimes, but sync.Pool is efficient
// enough to reduce thread contention.
- var spool *sync.Pool
- var poolv interface{}
- var fkvs []stringRv
// fmt.Printf(">>>>>>>>>>>>>> encode.kStruct: newlen: %d\n", newlen)
- if newlen <= 8 {
- spool, poolv = pool.stringRv8()
- fkvs = poolv.(*[8]stringRv)[:newlen]
- } else if newlen <= 16 {
- spool, poolv = pool.stringRv16()
- fkvs = poolv.(*[16]stringRv)[:newlen]
- } else if newlen <= 32 {
- spool, poolv = pool.stringRv32()
- fkvs = poolv.(*[32]stringRv)[:newlen]
- } else if newlen <= 64 {
- spool, poolv = pool.stringRv64()
- fkvs = poolv.(*[64]stringRv)[:newlen]
- } else if newlen <= 128 {
- spool, poolv = pool.stringRv128()
- fkvs = poolv.(*[128]stringRv)[:newlen]
- } else {
- fkvs = make([]stringRv, newlen)
- }
+ var spool sfiRvPooler
+ var fkvs = spool.get(newlen)
- newlen = 0
- var kv stringRv
+ var kv sfiRv
recur := e.h.RecursiveEmptyCheck
sfn := structFieldNode{v: rv, update: false}
+ newlen = 0
for _, si := range tisfi {
// kv.r = si.field(rv, false)
kv.r = sfn.field(si)
@@ -597,13 +747,14 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) {
if si.omitEmpty() && isEmptyValue(kv.r, e.h.TypeInfos, recur, recur) {
continue
}
- kv.v = si.encName
+ kv.v = si // si.encName
} else {
// use the zero value.
// if a reference or struct, set to nil (so you do not output too much)
if si.omitEmpty() && isEmptyValue(kv.r, e.h.TypeInfos, recur, recur) {
switch kv.r.Kind() {
- case reflect.Struct, reflect.Interface, reflect.Ptr, reflect.Array, reflect.Map, reflect.Slice:
+ case reflect.Struct, reflect.Interface, reflect.Ptr,
+ reflect.Array, reflect.Map, reflect.Slice:
kv.r = reflect.Value{} //encode as nil
}
}
@@ -611,36 +762,58 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) {
fkvs[newlen] = kv
newlen++
}
+ fkvs = fkvs[:newlen]
+
+ var mflen int
+ for k, v := range mf {
+ if k == "" {
+ delete(mf, k)
+ continue
+ }
+ if fti.infoFieldOmitempty && isEmptyValue(reflect.ValueOf(v), e.h.TypeInfos, recur, recur) {
+ delete(mf, k)
+ continue
+ }
+ mflen++
+ }
+ var j int
if toMap {
- ee.WriteMapStart(newlen)
+ ee.WriteMapStart(newlen + mflen)
if elemsep {
- for j := 0; j < newlen; j++ {
+ for j = 0; j < len(fkvs); j++ {
kv = fkvs[j]
ee.WriteMapElemKey()
- // ee.EncodeString(cUTF8, kv.v)
- encStructFieldKey(ee, fti.keyType, kv.v)
+ // ee.EncodeStringEnc(cUTF8, kv.v)
+ e.kStructFieldKey(fti.keyType, kv.v)
ee.WriteMapElemValue()
e.encodeValue(kv.r, nil, true)
}
} else {
- for j := 0; j < newlen; j++ {
+ for j = 0; j < len(fkvs); j++ {
kv = fkvs[j]
- // ee.EncodeString(cUTF8, kv.v)
- encStructFieldKey(ee, fti.keyType, kv.v)
+ // ee.EncodeStringEnc(cUTF8, kv.v)
+ e.kStructFieldKey(fti.keyType, kv.v)
e.encodeValue(kv.r, nil, true)
}
}
+ // now, add the others
+ for k, v := range mf {
+ ee.WriteMapElemKey()
+ e.kStructFieldKeyName(fti.keyType, k)
+ ee.WriteMapElemValue()
+ e.encode(v)
+ }
ee.WriteMapEnd()
} else {
ee.WriteArrayStart(newlen)
if elemsep {
- for j := 0; j < newlen; j++ {
+ for j = 0; j < len(fkvs); j++ {
ee.WriteArrayElem()
e.encodeValue(fkvs[j].r, nil, true)
}
} else {
- for j := 0; j < newlen; j++ {
+ for j = 0; j < len(fkvs); j++ {
e.encodeValue(fkvs[j].r, nil, true)
}
}
@@ -650,9 +823,7 @@ func (e *Encoder) kStruct(f *codecFnInfo, rv reflect.Value) {
// do not use defer. Instead, use explicit pool return at end of function.
// defer has a cost we are trying to avoid.
// If there is a panic and these slices are not returned, it is ok.
- if spool != nil {
- spool.Put(poolv)
- }
+ spool.end()
}
func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) {
@@ -664,7 +835,6 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) {
l := rv.Len()
ee.WriteMapStart(l)
- elemsep := e.esep
if l == 0 {
ee.WriteMapEnd()
return
@@ -688,7 +858,7 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) {
rtval = rtval.Elem()
}
if rtval.Kind() != reflect.Interface {
- valFn = e.cfer().get(rtval, true, true)
+ valFn = e.h.fn(rtval, true, true)
}
mks := rv.MapKeys()
@@ -705,21 +875,21 @@ func (e *Encoder) kMap(f *codecFnInfo, rv reflect.Value) {
}
if rtkey.Kind() != reflect.Interface {
// rtkeyid = rt2id(rtkey)
- keyFn = e.cfer().get(rtkey, true, true)
+ keyFn = e.h.fn(rtkey, true, true)
}
}
// for j, lmks := 0, len(mks); j < lmks; j++ {
for j := range mks {
- if elemsep {
+ if e.esep {
ee.WriteMapElemKey()
}
if keyTypeIsString {
- ee.EncodeString(cUTF8, mks[j].String())
+ ee.EncodeStringEnc(cUTF8, mks[j].String())
} else {
e.encodeValue(mks[j], keyFn, true)
}
- if elemsep {
+ if e.esep {
ee.WriteMapElemValue()
}
e.encodeValue(rv.MapIndex(mks[j]), valFn, true)
@@ -765,7 +935,7 @@ func (e *Encoder) kMapCanonical(rtkey reflect.Type, rv reflect.Value, mks []refl
if elemsep {
ee.WriteMapElemKey()
}
- ee.EncodeString(cUTF8, mksv[i].v)
+ ee.EncodeStringEnc(cUTF8, mksv[i].v)
if elemsep {
ee.WriteMapElemValue()
}
@@ -895,83 +1065,197 @@ func (e *Encoder) kMapCanonical(rtkey reflect.Type, rv reflect.Value, mks []refl
// // --------------------------------------------------
type encWriterSwitch struct {
- wi *ioEncWriter
- // wb bytesEncWriter
- wb bytesEncAppender
- wx bool // if bytes, wx=true
- esep bool // whether it has elem separators
- isas bool // whether e.as != nil
+ // wi *ioEncWriter
+ wb bytesEncAppender
+ wf *bufioEncWriter
+ // typ entryType
+ bytes bool // encoding to []byte
+ esep bool // whether it has elem separators
+ isas bool // whether e.as != nil
+ js bool // is json encoder?
+ be bool // is binary encoder?
+ _ [2]byte // padding
+ // _ [2]uint64 // padding
+ // _ uint64 // padding
}
-// // TODO: Uncomment after mid-stack inlining enabled in go 1.11
+func (z *encWriterSwitch) writeb(s []byte) {
+ if z.bytes {
+ z.wb.writeb(s)
+ } else {
+ z.wf.writeb(s)
+ }
+}
+func (z *encWriterSwitch) writestr(s string) {
+ if z.bytes {
+ z.wb.writestr(s)
+ } else {
+ z.wf.writestr(s)
+ }
+}
+func (z *encWriterSwitch) writen1(b1 byte) {
+ if z.bytes {
+ z.wb.writen1(b1)
+ } else {
+ z.wf.writen1(b1)
+ }
+}
+func (z *encWriterSwitch) writen2(b1, b2 byte) {
+ if z.bytes {
+ z.wb.writen2(b1, b2)
+ } else {
+ z.wf.writen2(b1, b2)
+ }
+}
+func (z *encWriterSwitch) end() {
+ if z.bytes {
+ z.wb.end()
+ } else {
+ z.wf.end()
+ }
+}
-// func (z *encWriterSwitch) writeb(s []byte) {
-// if z.wx {
-// z.wb.writeb(s)
-// } else {
-// z.wi.writeb(s)
-// }
-// }
-// func (z *encWriterSwitch) writestr(s string) {
-// if z.wx {
-// z.wb.writestr(s)
-// } else {
-// z.wi.writestr(s)
-// }
-// }
-// func (z *encWriterSwitch) writen1(b1 byte) {
-// if z.wx {
-// z.wb.writen1(b1)
-// } else {
-// z.wi.writen1(b1)
-// }
-// }
-// func (z *encWriterSwitch) writen2(b1, b2 byte) {
-// if z.wx {
-// z.wb.writen2(b1, b2)
-// } else {
-// z.wi.writen2(b1, b2)
-// }
-// }
+/*
+
+// ------------------------------------------
+func (z *encWriterSwitch) writeb(s []byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ z.wb.writeb(s)
+ case entryTypeIo:
+ z.wi.writeb(s)
+ default:
+ z.wf.writeb(s)
+ }
+}
+func (z *encWriterSwitch) writestr(s string) {
+ switch z.typ {
+ case entryTypeBytes:
+ z.wb.writestr(s)
+ case entryTypeIo:
+ z.wi.writestr(s)
+ default:
+ z.wf.writestr(s)
+ }
+}
+func (z *encWriterSwitch) writen1(b1 byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ z.wb.writen1(b1)
+ case entryTypeIo:
+ z.wi.writen1(b1)
+ default:
+ z.wf.writen1(b1)
+ }
+}
+func (z *encWriterSwitch) writen2(b1, b2 byte) {
+ switch z.typ {
+ case entryTypeBytes:
+ z.wb.writen2(b1, b2)
+ case entryTypeIo:
+ z.wi.writen2(b1, b2)
+ default:
+ z.wf.writen2(b1, b2)
+ }
+}
+func (z *encWriterSwitch) end() {
+ switch z.typ {
+ case entryTypeBytes:
+ z.wb.end()
+ case entryTypeIo:
+ z.wi.end()
+ default:
+ z.wf.end()
+ }
+}
+
+// ------------------------------------------
+func (z *encWriterSwitch) writeb(s []byte) {
+ if z.bytes {
+ z.wb.writeb(s)
+ } else {
+ z.wi.writeb(s)
+ }
+}
+func (z *encWriterSwitch) writestr(s string) {
+ if z.bytes {
+ z.wb.writestr(s)
+ } else {
+ z.wi.writestr(s)
+ }
+}
+func (z *encWriterSwitch) writen1(b1 byte) {
+ if z.bytes {
+ z.wb.writen1(b1)
+ } else {
+ z.wi.writen1(b1)
+ }
+}
+func (z *encWriterSwitch) writen2(b1, b2 byte) {
+ if z.bytes {
+ z.wb.writen2(b1, b2)
+ } else {
+ z.wi.writen2(b1, b2)
+ }
+}
+func (z *encWriterSwitch) end() {
+ if z.bytes {
+ z.wb.end()
+ } else {
+ z.wi.end()
+ }
+}
-// An Encoder writes an object to an output stream in the codec format.
+*/
+
+// Encoder writes an object to an output stream in a supported format.
+//
+// Encoder is NOT safe for concurrent use i.e. a Encoder cannot be used
+// concurrently in multiple goroutines.
+//
+// However, as Encoder could be allocation heavy to initialize, a Reset method is provided
+// so its state can be reused to decode new input streams repeatedly.
+// This is the idiomatic way to use.
type Encoder struct {
panicHdl
// hopefully, reduce derefencing cost by laying the encWriter inside the Encoder
e encDriver
+
// NOTE: Encoder shouldn't call it's write methods,
// as the handler MAY need to do some coordination.
- w encWriter
+ w *encWriterSwitch
- h *BasicHandle
- bw *bufio.Writer
+ // bw *bufio.Writer
as encDriverAsis
- // ---- cpu cache line boundary?
+ err error
- // ---- cpu cache line boundary?
+ h *BasicHandle
+ hh Handle
+ // ---- cpu cache line boundary? + 3
encWriterSwitch
- err error
- // ---- cpu cache line boundary?
- codecFnPooler
ci set
- js bool // here, so that no need to piggy back on *codecFner for this
- be bool // here, so that no need to piggy back on *codecFner for this
- _ [6]byte // padding
+
+ // Extensions can call Encode() within a current Encode() call.
+ // We need to know when the top level Encode() call returns,
+ // so we can decide whether to Release() or not.
+ calls uint16 // what depth in mustEncode are we in now.
+
+ b [(5 * 8) - 2]byte // for encoding chan or (non-addressable) [N]byte
// ---- writable fields during execution --- *try* to keep in sep cache line
// ---- cpu cache line boundary?
// b [scratchByteArrayLen]byte
// _ [cacheLineSize - scratchByteArrayLen]byte // padding
- b [cacheLineSize - 0]byte // used for encoding a chan or (non-addressable) array of bytes
+ // b [cacheLineSize - (8 * 0)]byte // used for encoding a chan or (non-addressable) array of bytes
}
// NewEncoder returns an Encoder for encoding into an io.Writer.
//
-// For efficiency, Users are encouraged to pass in a memory buffered writer
-// (eg bufio.Writer, bytes.Buffer).
+// For efficiency, Users are encouraged to configure WriterBufferSize on the handle
+// OR pass in a memory buffered writer (eg bufio.Writer, bytes.Buffer).
func NewEncoder(w io.Writer, h Handle) *Encoder {
e := newEncoder(h)
e.Reset(w)
@@ -990,13 +1274,21 @@ func NewEncoderBytes(out *[]byte, h Handle) *Encoder {
}
func newEncoder(h Handle) *Encoder {
- e := &Encoder{h: h.getBasicHandle(), err: errEncoderNotInitialized}
+ e := &Encoder{h: basicHandle(h), err: errEncoderNotInitialized}
+ e.bytes = true
+ if useFinalizers {
+ runtime.SetFinalizer(e, (*Encoder).finalize)
+ // xdebugf(">>>> new(Encoder) with finalizer")
+ }
+ e.w = &e.encWriterSwitch
e.hh = h
e.esep = h.hasElemSeparators()
+
return e
}
func (e *Encoder) resetCommon() {
+ // e.w = &e.encWriterSwitch
if e.e == nil || e.hh.recreateEncDriver(e.e) {
e.e = e.hh.newEncDriver(e)
e.as, e.isas = e.e.(encDriverAsis)
@@ -1006,6 +1298,7 @@ func (e *Encoder) resetCommon() {
_, e.js = e.hh.(*JsonHandle)
e.e.reset()
e.err = nil
+ e.calls = 0
}
// Reset resets the Encoder with a new output stream.
@@ -1016,29 +1309,34 @@ func (e *Encoder) Reset(w io.Writer) {
if w == nil {
return
}
- if e.wi == nil {
- e.wi = new(ioEncWriter)
- }
- var ok bool
- e.wx = false
- e.wi.w = w
- if e.h.WriterBufferSize > 0 {
- e.bw = bufio.NewWriterSize(w, e.h.WriterBufferSize)
- e.wi.bw = e.bw
- e.wi.sw = e.bw
- e.wi.fw = e.bw
- e.wi.ww = e.bw
- } else {
- if e.wi.bw, ok = w.(io.ByteWriter); !ok {
- e.wi.bw = e.wi
- }
- if e.wi.sw, ok = w.(ioEncStringWriter); !ok {
- e.wi.sw = e.wi
- }
- e.wi.fw, _ = w.(ioFlusher)
- e.wi.ww = w
+ // var ok bool
+ e.bytes = false
+ if e.wf == nil {
+ e.wf = new(bufioEncWriter)
}
- e.w = e.wi
+ // e.typ = entryTypeUnset
+ // if e.h.WriterBufferSize > 0 {
+ // // bw := bufio.NewWriterSize(w, e.h.WriterBufferSize)
+ // // e.wi.bw = bw
+ // // e.wi.sw = bw
+ // // e.wi.fw = bw
+ // // e.wi.ww = bw
+ // if e.wf == nil {
+ // e.wf = new(bufioEncWriter)
+ // }
+ // e.wf.reset(w, e.h.WriterBufferSize)
+ // e.typ = entryTypeBufio
+ // } else {
+ // if e.wi == nil {
+ // e.wi = new(ioEncWriter)
+ // }
+ // e.wi.reset(w)
+ // e.typ = entryTypeIo
+ // }
+ e.wf.reset(w, e.h.WriterBufferSize)
+ // e.typ = entryTypeBufio
+
+ // e.w = e.wi
e.resetCommon()
}
@@ -1047,16 +1345,14 @@ func (e *Encoder) ResetBytes(out *[]byte) {
if out == nil {
return
}
- var in []byte
- if out != nil {
- in = *out
- }
+ var in []byte = *out
if in == nil {
in = make([]byte, defEncByteBufSize)
}
- e.wx = true
+ e.bytes = true
+ // e.typ = entryTypeBytes
e.wb.reset(in, out)
- e.w = &e.wb
+ // e.w = &e.wb
e.resetCommon()
}
@@ -1144,8 +1440,26 @@ func (e *Encoder) ResetBytes(out *[]byte) {
// Some formats support symbols (e.g. binc) and will properly encode the string
// only once in the stream, and use a tag to refer to it thereafter.
func (e *Encoder) Encode(v interface{}) (err error) {
- defer e.deferred(&err)
- e.MustEncode(v)
+ // tried to use closure, as runtime optimizes defer with no params.
+ // This seemed to be causing weird issues (like circular reference found, unexpected panic, etc).
+ // Also, see https://github.com/golang/go/issues/14939#issuecomment-417836139
+ // defer func() { e.deferred(&err) }() }
+ // { x, y := e, &err; defer func() { x.deferred(y) }() }
+ if e.err != nil {
+ return e.err
+ }
+ if recoverPanicToErr {
+ defer func() {
+ e.w.end()
+ if x := recover(); x != nil {
+ panicValToErr(e, x, &e.err)
+ err = e.err
+ }
+ }()
+ }
+
+ // defer e.deferred(&err)
+ e.mustEncode(v)
return
}
@@ -1155,47 +1469,79 @@ func (e *Encoder) MustEncode(v interface{}) {
if e.err != nil {
panic(e.err)
}
- e.encode(v)
- e.e.atEndOfEncode()
- e.w.atEndOfEncode()
- e.alwaysAtEnd()
+ e.mustEncode(v)
}
-func (e *Encoder) deferred(err1 *error) {
- e.alwaysAtEnd()
- if recoverPanicToErr {
- if x := recover(); x != nil {
- panicValToErr(e, x, err1)
- panicValToErr(e, x, &e.err)
+func (e *Encoder) mustEncode(v interface{}) {
+ // ensure the bufioEncWriter buffer is not nil (e.g. if Release() was called)
+ if e.wf != nil && e.wf.buf == nil {
+ if e.h.WriterBufferSize > 0 {
+ e.wf.buf = e.wf.bytesBufPooler.get(e.h.WriterBufferSize)
+ } else {
+ e.wf.buf = e.wf.bytesBufPooler.get(defEncByteBufSize)
}
}
+
+ e.calls++
+ e.encode(v)
+ e.e.atEndOfEncode()
+ e.w.end()
+ e.calls--
+
+ if !e.h.ExplicitRelease && e.calls == 0 {
+ e.Release()
+ }
}
-// func (e *Encoder) alwaysAtEnd() {
-// e.codecFnPooler.alwaysAtEnd()
+// func (e *Encoder) deferred(err1 *error) {
+// e.w.end()
+// if recoverPanicToErr {
+// if x := recover(); x != nil {
+// panicValToErr(e, x, err1)
+// panicValToErr(e, x, &e.err)
+// }
+// }
// }
+//go:noinline -- as it is run by finalizer
+func (e *Encoder) finalize() {
+ // xdebugf("finalizing Encoder")
+ e.Release()
+}
+
+// Release releases shared (pooled) resources.
+//
+// It is important to call Release() when done with an Encoder, so those resources
+// are released instantly for use by subsequently created Encoders.
+func (e *Encoder) Release() {
+ if useFinalizers && removeFinalizerOnRelease {
+ runtime.SetFinalizer(e, nil)
+ }
+ if e.wf != nil {
+ e.wf.buf = nil
+ e.wf.bytesBufPooler.end()
+ }
+}
+
func (e *Encoder) encode(iv interface{}) {
+ // a switch with only concrete types can be optimized.
+ // consequently, we deal with nil and interfaces outside the switch.
+
if iv == nil || definitelyNil(iv) {
e.e.EncodeNil()
return
}
- if v, ok := iv.(Selfer); ok {
- v.CodecEncodeSelf(e)
- return
- }
-
- // a switch with only concrete types can be optimized.
- // consequently, we deal with nil and interfaces outside.
switch v := iv.(type) {
+ // case nil:
+ // case Selfer:
case Raw:
e.rawBytes(v)
case reflect.Value:
e.encodeValue(v, nil, true)
case string:
- e.e.EncodeString(cUTF8, v)
+ e.e.EncodeStringEnc(cUTF8, v)
case bool:
e.e.EncodeBool(v)
case int:
@@ -1227,13 +1573,13 @@ func (e *Encoder) encode(iv interface{}) {
case time.Time:
e.e.EncodeTime(v)
case []uint8:
- e.e.EncodeStringBytes(cRAW, v)
+ e.e.EncodeStringBytesRaw(v)
case *Raw:
e.rawBytes(*v)
case *string:
- e.e.EncodeString(cUTF8, *v)
+ e.e.EncodeStringEnc(cUTF8, *v)
case *bool:
e.e.EncodeBool(*v)
case *int:
@@ -1266,10 +1612,12 @@ func (e *Encoder) encode(iv interface{}) {
e.e.EncodeTime(*v)
case *[]uint8:
- e.e.EncodeStringBytes(cRAW, *v)
+ e.e.EncodeStringBytesRaw(*v)
default:
- if !fastpathEncodeTypeSwitch(iv, e) {
+ if v, ok := iv.(Selfer); ok {
+ v.CodecEncodeSelf(e)
+ } else if !fastpathEncodeTypeSwitch(iv, e) {
// checkfastpath=true (not false), as underlying slice/map type may be fast-path
e.encodeValue(reflect.ValueOf(iv), nil, true)
}
@@ -1321,7 +1669,7 @@ TOP:
if fn == nil {
rt := rv.Type()
// always pass checkCodecSelfer=true, in case T or ****T is passed, where *T is a Selfer
- fn = e.cfer().get(rt, checkFastpath, true)
+ fn = e.h.fn(rt, checkFastpath, true)
}
if fn.i.addrE {
if rvpValid {
@@ -1341,16 +1689,49 @@ TOP:
}
}
-func (e *Encoder) marshal(bs []byte, fnerr error, asis bool, c charEncoding) {
+// func (e *Encoder) marshal(bs []byte, fnerr error, asis bool, c charEncoding) {
+// if fnerr != nil {
+// panic(fnerr)
+// }
+// if bs == nil {
+// e.e.EncodeNil()
+// } else if asis {
+// e.asis(bs)
+// } else {
+// e.e.EncodeStringBytes(c, bs)
+// }
+// }
+
+func (e *Encoder) marshalUtf8(bs []byte, fnerr error) {
+ if fnerr != nil {
+ panic(fnerr)
+ }
+ if bs == nil {
+ e.e.EncodeNil()
+ } else {
+ e.e.EncodeStringEnc(cUTF8, stringView(bs))
+ }
+}
+
+func (e *Encoder) marshalAsis(bs []byte, fnerr error) {
if fnerr != nil {
panic(fnerr)
}
if bs == nil {
e.e.EncodeNil()
- } else if asis {
+ } else {
e.asis(bs)
+ }
+}
+
+func (e *Encoder) marshalRaw(bs []byte, fnerr error) {
+ if fnerr != nil {
+ panic(fnerr)
+ }
+ if bs == nil {
+ e.e.EncodeNil()
} else {
- e.e.EncodeStringBytes(c, bs)
+ e.e.EncodeStringBytesRaw(bs)
}
}
@@ -1370,6 +1751,6 @@ func (e *Encoder) rawBytes(vv Raw) {
e.asis(v)
}
-func (e *Encoder) wrapErrstr(v interface{}, err *error) {
- *err = fmt.Errorf("%s encode error: %v", e.hh.Name(), v)
+func (e *Encoder) wrapErr(v interface{}, err *error) {
+ *err = encodeError{codecError{name: e.hh.Name(), err: v}}
}
diff --git a/vendor/github.com/ugorji/go/codec/fast-path.generated.go b/vendor/github.com/ugorji/go/codec/fast-path.generated.go
index 87f2562f..45137afa 100644
--- a/vendor/github.com/ugorji/go/codec/fast-path.generated.go
+++ b/vendor/github.com/ugorji/go/codec/fast-path.generated.go
@@ -1,6 +1,6 @@
// +build !notfastpath
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
+// Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved.
// Use of this source code is governed by a MIT license found in the LICENSE file.
// Code generated from fast-path.go.tmpl - DO NOT EDIT.
@@ -37,6 +37,8 @@ import (
const fastpathEnabled = true
+const fastpathMapBySliceErrMsg = "mapBySlice requires even slice length, but got %v"
+
type fastpathT struct{}
var fastpathTV fastpathT
@@ -52,17 +54,22 @@ type fastpathA [271]fastpathE
func (x *fastpathA) index(rtid uintptr) int {
// use binary search to grab the index (adapted from sort/search.go)
- h, i, j := 0, 0, 271 // len(x)
- for i < j {
+ // Note: we use goto (instead of for loop) so this can be inlined.
+ // h, i, j := 0, 0, len(x)
+ var h, i uint
+ var j = uint(len(x))
+LOOP:
+ if i < j {
h = i + (j-i)/2
if x[h].rtid < rtid {
i = h + 1
} else {
j = h
}
+ goto LOOP
}
- if i < 271 && x[i].rtid == rtid {
- return i
+ if i < uint(len(x)) && x[i].rtid == rtid {
+ return int(i)
}
return -1
}
@@ -70,22 +77,21 @@ func (x *fastpathA) index(rtid uintptr) int {
type fastpathAslice []fastpathE
func (x fastpathAslice) Len() int { return len(x) }
-func (x fastpathAslice) Less(i, j int) bool { return x[i].rtid < x[j].rtid }
-func (x fastpathAslice) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+func (x fastpathAslice) Less(i, j int) bool { return x[uint(i)].rtid < x[uint(j)].rtid }
+func (x fastpathAslice) Swap(i, j int) { x[uint(i)], x[uint(j)] = x[uint(j)], x[uint(i)] }
var fastpathAV fastpathA
// due to possible initialization loop error, make fastpath in an init()
func init() {
- i := 0
+ var i uint = 0
fn := func(v interface{},
fe func(*Encoder, *codecFnInfo, reflect.Value),
- fd func(*Decoder, *codecFnInfo, reflect.Value)) (f fastpathE) {
+ fd func(*Decoder, *codecFnInfo, reflect.Value)) {
xrt := reflect.TypeOf(v)
xptr := rt2id(xrt)
fastpathAV[i] = fastpathE{xptr, xrt, fe, fd}
i++
- return
}
fn([]interface{}(nil), (*Encoder).fastpathEncSliceIntfR, (*Decoder).fastpathDecSliceIntfR)
@@ -1494,7 +1500,7 @@ func (_ fastpathT) EncSliceIntfV(v []interface{}, e *Encoder) {
func (_ fastpathT) EncAsMapSliceIntfV(v []interface{}, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1532,11 +1538,11 @@ func (_ fastpathT) EncSliceStringV(v []string, e *Encoder) {
if esep {
for _, v2 := range v {
ee.WriteArrayElem()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for _, v2 := range v {
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
ee.WriteArrayEnd()
@@ -1544,7 +1550,7 @@ func (_ fastpathT) EncSliceStringV(v []string, e *Encoder) {
func (_ fastpathT) EncAsMapSliceStringV(v []string, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1555,11 +1561,11 @@ func (_ fastpathT) EncAsMapSliceStringV(v []string, e *Encoder) {
} else {
ee.WriteMapElemValue()
}
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for _, v2 := range v {
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
ee.WriteMapEnd()
@@ -1594,7 +1600,7 @@ func (_ fastpathT) EncSliceFloat32V(v []float32, e *Encoder) {
func (_ fastpathT) EncAsMapSliceFloat32V(v []float32, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1644,7 +1650,7 @@ func (_ fastpathT) EncSliceFloat64V(v []float64, e *Encoder) {
func (_ fastpathT) EncAsMapSliceFloat64V(v []float64, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1694,7 +1700,7 @@ func (_ fastpathT) EncSliceUintV(v []uint, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUintV(v []uint, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1744,7 +1750,7 @@ func (_ fastpathT) EncSliceUint8V(v []uint8, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUint8V(v []uint8, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1794,7 +1800,7 @@ func (_ fastpathT) EncSliceUint16V(v []uint16, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUint16V(v []uint16, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1844,7 +1850,7 @@ func (_ fastpathT) EncSliceUint32V(v []uint32, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUint32V(v []uint32, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1894,7 +1900,7 @@ func (_ fastpathT) EncSliceUint64V(v []uint64, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUint64V(v []uint64, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1944,7 +1950,7 @@ func (_ fastpathT) EncSliceUintptrV(v []uintptr, e *Encoder) {
func (_ fastpathT) EncAsMapSliceUintptrV(v []uintptr, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -1994,7 +2000,7 @@ func (_ fastpathT) EncSliceIntV(v []int, e *Encoder) {
func (_ fastpathT) EncAsMapSliceIntV(v []int, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2044,7 +2050,7 @@ func (_ fastpathT) EncSliceInt8V(v []int8, e *Encoder) {
func (_ fastpathT) EncAsMapSliceInt8V(v []int8, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2094,7 +2100,7 @@ func (_ fastpathT) EncSliceInt16V(v []int16, e *Encoder) {
func (_ fastpathT) EncAsMapSliceInt16V(v []int16, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2144,7 +2150,7 @@ func (_ fastpathT) EncSliceInt32V(v []int32, e *Encoder) {
func (_ fastpathT) EncAsMapSliceInt32V(v []int32, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2194,7 +2200,7 @@ func (_ fastpathT) EncSliceInt64V(v []int64, e *Encoder) {
func (_ fastpathT) EncAsMapSliceInt64V(v []int64, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2244,7 +2250,7 @@ func (_ fastpathT) EncSliceBoolV(v []bool, e *Encoder) {
func (_ fastpathT) EncAsMapSliceBoolV(v []bool, e *Encoder) {
ee, esep := e.e, e.hh.hasElemSeparators()
if len(v)%2 == 1 {
- e.errorf("mapBySlice requires even slice length, but got %v", len(v))
+ e.errorf(fastpathMapBySliceErrMsg, len(v))
return
}
ee.WriteMapStart(len(v) / 2)
@@ -2279,10 +2285,10 @@ func (_ fastpathT) EncMapIntfIntfV(v map[interface{}]interface{}, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2335,10 +2341,10 @@ func (_ fastpathT) EncMapIntfStringV(v map[interface{}]string, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2365,12 +2371,12 @@ func (_ fastpathT) EncMapIntfStringV(v map[interface{}]string, e *Encoder) {
ee.WriteMapElemKey()
e.encode(k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
e.encode(k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -2391,10 +2397,10 @@ func (_ fastpathT) EncMapIntfUintV(v map[interface{}]uint, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2447,10 +2453,10 @@ func (_ fastpathT) EncMapIntfUint8V(v map[interface{}]uint8, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2503,10 +2509,10 @@ func (_ fastpathT) EncMapIntfUint16V(v map[interface{}]uint16, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2559,10 +2565,10 @@ func (_ fastpathT) EncMapIntfUint32V(v map[interface{}]uint32, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2615,10 +2621,10 @@ func (_ fastpathT) EncMapIntfUint64V(v map[interface{}]uint64, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2671,10 +2677,10 @@ func (_ fastpathT) EncMapIntfUintptrV(v map[interface{}]uintptr, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2727,10 +2733,10 @@ func (_ fastpathT) EncMapIntfIntV(v map[interface{}]int, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2783,10 +2789,10 @@ func (_ fastpathT) EncMapIntfInt8V(v map[interface{}]int8, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2839,10 +2845,10 @@ func (_ fastpathT) EncMapIntfInt16V(v map[interface{}]int16, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2895,10 +2901,10 @@ func (_ fastpathT) EncMapIntfInt32V(v map[interface{}]int32, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -2951,10 +2957,10 @@ func (_ fastpathT) EncMapIntfInt64V(v map[interface{}]int64, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -3007,10 +3013,10 @@ func (_ fastpathT) EncMapIntfFloat32V(v map[interface{}]float32, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -3063,10 +3069,10 @@ func (_ fastpathT) EncMapIntfFloat64V(v map[interface{}]float64, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -3119,10 +3125,10 @@ func (_ fastpathT) EncMapIntfBoolV(v map[interface{}]bool, e *Encoder) {
var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding
e2 := NewEncoderBytes(&mksv, e.hh)
v2 := make([]bytesI, len(v))
- var i, l int
+ var i, l uint
var vp *bytesI
- for k2, _ := range v {
- l = len(mksv)
+ for k2 := range v {
+ l = uint(len(mksv))
e2.MustEncode(k2)
vp = &v2[i]
vp.v = mksv[l:]
@@ -3173,8 +3179,8 @@ func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3182,13 +3188,13 @@ func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
e.encode(v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
e.encode(v[string(k2)])
}
}
@@ -3196,13 +3202,13 @@ func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
e.encode(v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
e.encode(v2)
}
}
@@ -3222,8 +3228,8 @@ func (_ fastpathT) EncMapStringStringV(v map[string]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3231,28 +3237,28 @@ func (_ fastpathT) EncMapStringStringV(v map[string]string, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[string(k2)])
+ ee.EncodeStringEnc(cUTF8, v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
- ee.EncodeString(cUTF8, v[string(k2)])
+ ee.EncodeStringEnc(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, v[string(k2)])
}
}
} else {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -3271,8 +3277,8 @@ func (_ fastpathT) EncMapStringUintV(v map[string]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3280,13 +3286,13 @@ func (_ fastpathT) EncMapStringUintV(v map[string]uint, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v[string(k2)]))
}
}
@@ -3294,13 +3300,13 @@ func (_ fastpathT) EncMapStringUintV(v map[string]uint, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v2))
}
}
@@ -3320,8 +3326,8 @@ func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3329,13 +3335,13 @@ func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v[string(k2)]))
}
}
@@ -3343,13 +3349,13 @@ func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v2))
}
}
@@ -3369,8 +3375,8 @@ func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3378,13 +3384,13 @@ func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v[string(k2)]))
}
}
@@ -3392,13 +3398,13 @@ func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v2))
}
}
@@ -3418,8 +3424,8 @@ func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3427,13 +3433,13 @@ func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v[string(k2)]))
}
}
@@ -3441,13 +3447,13 @@ func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v2))
}
}
@@ -3467,8 +3473,8 @@ func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3476,13 +3482,13 @@ func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v[string(k2)]))
}
}
@@ -3490,13 +3496,13 @@ func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeUint(uint64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeUint(uint64(v2))
}
}
@@ -3516,8 +3522,8 @@ func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3525,13 +3531,13 @@ func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
e.encode(v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
e.encode(v[string(k2)])
}
}
@@ -3539,13 +3545,13 @@ func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
e.encode(v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
e.encode(v2)
}
}
@@ -3565,8 +3571,8 @@ func (_ fastpathT) EncMapStringIntV(v map[string]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3574,13 +3580,13 @@ func (_ fastpathT) EncMapStringIntV(v map[string]int, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v[string(k2)]))
}
}
@@ -3588,13 +3594,13 @@ func (_ fastpathT) EncMapStringIntV(v map[string]int, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v2))
}
}
@@ -3614,8 +3620,8 @@ func (_ fastpathT) EncMapStringInt8V(v map[string]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3623,13 +3629,13 @@ func (_ fastpathT) EncMapStringInt8V(v map[string]int8, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v[string(k2)]))
}
}
@@ -3637,13 +3643,13 @@ func (_ fastpathT) EncMapStringInt8V(v map[string]int8, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v2))
}
}
@@ -3663,8 +3669,8 @@ func (_ fastpathT) EncMapStringInt16V(v map[string]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3672,13 +3678,13 @@ func (_ fastpathT) EncMapStringInt16V(v map[string]int16, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v[string(k2)]))
}
}
@@ -3686,13 +3692,13 @@ func (_ fastpathT) EncMapStringInt16V(v map[string]int16, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v2))
}
}
@@ -3712,8 +3718,8 @@ func (_ fastpathT) EncMapStringInt32V(v map[string]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3721,13 +3727,13 @@ func (_ fastpathT) EncMapStringInt32V(v map[string]int32, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v[string(k2)]))
}
}
@@ -3735,13 +3741,13 @@ func (_ fastpathT) EncMapStringInt32V(v map[string]int32, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v2))
}
}
@@ -3761,8 +3767,8 @@ func (_ fastpathT) EncMapStringInt64V(v map[string]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3770,13 +3776,13 @@ func (_ fastpathT) EncMapStringInt64V(v map[string]int64, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v[string(k2)]))
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v[string(k2)]))
}
}
@@ -3784,13 +3790,13 @@ func (_ fastpathT) EncMapStringInt64V(v map[string]int64, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeInt(int64(v2))
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeInt(int64(v2))
}
}
@@ -3810,8 +3816,8 @@ func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3819,13 +3825,13 @@ func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeFloat32(v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeFloat32(v[string(k2)])
}
}
@@ -3833,13 +3839,13 @@ func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeFloat32(v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeFloat32(v2)
}
}
@@ -3859,8 +3865,8 @@ func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3868,13 +3874,13 @@ func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeFloat64(v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeFloat64(v[string(k2)])
}
}
@@ -3882,13 +3888,13 @@ func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeFloat64(v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeFloat64(v2)
}
}
@@ -3908,8 +3914,8 @@ func (_ fastpathT) EncMapStringBoolV(v map[string]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]string, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = string(k)
i++
}
@@ -3917,13 +3923,13 @@ func (_ fastpathT) EncMapStringBoolV(v map[string]bool, e *Encoder) {
if esep {
for _, k2 := range v2 {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeBool(v[string(k2)])
}
} else {
for _, k2 := range v2 {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeBool(v[string(k2)])
}
}
@@ -3931,13 +3937,13 @@ func (_ fastpathT) EncMapStringBoolV(v map[string]bool, e *Encoder) {
if esep {
for k2, v2 := range v {
ee.WriteMapElemKey()
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.WriteMapElemValue()
ee.EncodeBool(v2)
}
} else {
for k2, v2 := range v {
- ee.EncodeString(cUTF8, k2)
+ ee.EncodeStringEnc(cUTF8, k2)
ee.EncodeBool(v2)
}
}
@@ -3957,8 +3963,8 @@ func (_ fastpathT) EncMapFloat32IntfV(v map[float32]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4006,8 +4012,8 @@ func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4017,12 +4023,12 @@ func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeFloat32(float32(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[float32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[float32(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeFloat32(float32(k2))
- ee.EncodeString(cUTF8, v[float32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[float32(k2)])
}
}
} else {
@@ -4031,12 +4037,12 @@ func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeFloat32(k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeFloat32(k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -4055,8 +4061,8 @@ func (_ fastpathT) EncMapFloat32UintV(v map[float32]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4104,8 +4110,8 @@ func (_ fastpathT) EncMapFloat32Uint8V(v map[float32]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4153,8 +4159,8 @@ func (_ fastpathT) EncMapFloat32Uint16V(v map[float32]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4202,8 +4208,8 @@ func (_ fastpathT) EncMapFloat32Uint32V(v map[float32]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4251,8 +4257,8 @@ func (_ fastpathT) EncMapFloat32Uint64V(v map[float32]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4300,8 +4306,8 @@ func (_ fastpathT) EncMapFloat32UintptrV(v map[float32]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4349,8 +4355,8 @@ func (_ fastpathT) EncMapFloat32IntV(v map[float32]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4398,8 +4404,8 @@ func (_ fastpathT) EncMapFloat32Int8V(v map[float32]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4447,8 +4453,8 @@ func (_ fastpathT) EncMapFloat32Int16V(v map[float32]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4496,8 +4502,8 @@ func (_ fastpathT) EncMapFloat32Int32V(v map[float32]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4545,8 +4551,8 @@ func (_ fastpathT) EncMapFloat32Int64V(v map[float32]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4594,8 +4600,8 @@ func (_ fastpathT) EncMapFloat32Float32V(v map[float32]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4643,8 +4649,8 @@ func (_ fastpathT) EncMapFloat32Float64V(v map[float32]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4692,8 +4698,8 @@ func (_ fastpathT) EncMapFloat32BoolV(v map[float32]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4741,8 +4747,8 @@ func (_ fastpathT) EncMapFloat64IntfV(v map[float64]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4790,8 +4796,8 @@ func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4801,12 +4807,12 @@ func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeFloat64(float64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[float64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[float64(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeFloat64(float64(k2))
- ee.EncodeString(cUTF8, v[float64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[float64(k2)])
}
}
} else {
@@ -4815,12 +4821,12 @@ func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeFloat64(k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeFloat64(k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -4839,8 +4845,8 @@ func (_ fastpathT) EncMapFloat64UintV(v map[float64]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4888,8 +4894,8 @@ func (_ fastpathT) EncMapFloat64Uint8V(v map[float64]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4937,8 +4943,8 @@ func (_ fastpathT) EncMapFloat64Uint16V(v map[float64]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -4986,8 +4992,8 @@ func (_ fastpathT) EncMapFloat64Uint32V(v map[float64]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5035,8 +5041,8 @@ func (_ fastpathT) EncMapFloat64Uint64V(v map[float64]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5084,8 +5090,8 @@ func (_ fastpathT) EncMapFloat64UintptrV(v map[float64]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5133,8 +5139,8 @@ func (_ fastpathT) EncMapFloat64IntV(v map[float64]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5182,8 +5188,8 @@ func (_ fastpathT) EncMapFloat64Int8V(v map[float64]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5231,8 +5237,8 @@ func (_ fastpathT) EncMapFloat64Int16V(v map[float64]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5280,8 +5286,8 @@ func (_ fastpathT) EncMapFloat64Int32V(v map[float64]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5329,8 +5335,8 @@ func (_ fastpathT) EncMapFloat64Int64V(v map[float64]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5378,8 +5384,8 @@ func (_ fastpathT) EncMapFloat64Float32V(v map[float64]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5427,8 +5433,8 @@ func (_ fastpathT) EncMapFloat64Float64V(v map[float64]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5476,8 +5482,8 @@ func (_ fastpathT) EncMapFloat64BoolV(v map[float64]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]float64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = float64(k)
i++
}
@@ -5525,8 +5531,8 @@ func (_ fastpathT) EncMapUintIntfV(v map[uint]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5574,8 +5580,8 @@ func (_ fastpathT) EncMapUintStringV(v map[uint]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5585,12 +5591,12 @@ func (_ fastpathT) EncMapUintStringV(v map[uint]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(uint(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uint(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeUint(uint64(uint(k2)))
- ee.EncodeString(cUTF8, v[uint(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint(k2)])
}
}
} else {
@@ -5599,12 +5605,12 @@ func (_ fastpathT) EncMapUintStringV(v map[uint]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeUint(uint64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -5623,8 +5629,8 @@ func (_ fastpathT) EncMapUintUintV(v map[uint]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5672,8 +5678,8 @@ func (_ fastpathT) EncMapUintUint8V(v map[uint]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5721,8 +5727,8 @@ func (_ fastpathT) EncMapUintUint16V(v map[uint]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5770,8 +5776,8 @@ func (_ fastpathT) EncMapUintUint32V(v map[uint]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5819,8 +5825,8 @@ func (_ fastpathT) EncMapUintUint64V(v map[uint]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5868,8 +5874,8 @@ func (_ fastpathT) EncMapUintUintptrV(v map[uint]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5917,8 +5923,8 @@ func (_ fastpathT) EncMapUintIntV(v map[uint]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -5966,8 +5972,8 @@ func (_ fastpathT) EncMapUintInt8V(v map[uint]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6015,8 +6021,8 @@ func (_ fastpathT) EncMapUintInt16V(v map[uint]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6064,8 +6070,8 @@ func (_ fastpathT) EncMapUintInt32V(v map[uint]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6113,8 +6119,8 @@ func (_ fastpathT) EncMapUintInt64V(v map[uint]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6162,8 +6168,8 @@ func (_ fastpathT) EncMapUintFloat32V(v map[uint]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6211,8 +6217,8 @@ func (_ fastpathT) EncMapUintFloat64V(v map[uint]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6260,8 +6266,8 @@ func (_ fastpathT) EncMapUintBoolV(v map[uint]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6309,8 +6315,8 @@ func (_ fastpathT) EncMapUint8IntfV(v map[uint8]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6358,8 +6364,8 @@ func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6369,12 +6375,12 @@ func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(uint8(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uint8(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint8(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeUint(uint64(uint8(k2)))
- ee.EncodeString(cUTF8, v[uint8(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint8(k2)])
}
}
} else {
@@ -6383,12 +6389,12 @@ func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeUint(uint64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -6407,8 +6413,8 @@ func (_ fastpathT) EncMapUint8UintV(v map[uint8]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6456,8 +6462,8 @@ func (_ fastpathT) EncMapUint8Uint8V(v map[uint8]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6505,8 +6511,8 @@ func (_ fastpathT) EncMapUint8Uint16V(v map[uint8]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6554,8 +6560,8 @@ func (_ fastpathT) EncMapUint8Uint32V(v map[uint8]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6603,8 +6609,8 @@ func (_ fastpathT) EncMapUint8Uint64V(v map[uint8]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6652,8 +6658,8 @@ func (_ fastpathT) EncMapUint8UintptrV(v map[uint8]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6701,8 +6707,8 @@ func (_ fastpathT) EncMapUint8IntV(v map[uint8]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6750,8 +6756,8 @@ func (_ fastpathT) EncMapUint8Int8V(v map[uint8]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6799,8 +6805,8 @@ func (_ fastpathT) EncMapUint8Int16V(v map[uint8]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6848,8 +6854,8 @@ func (_ fastpathT) EncMapUint8Int32V(v map[uint8]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6897,8 +6903,8 @@ func (_ fastpathT) EncMapUint8Int64V(v map[uint8]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6946,8 +6952,8 @@ func (_ fastpathT) EncMapUint8Float32V(v map[uint8]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -6995,8 +7001,8 @@ func (_ fastpathT) EncMapUint8Float64V(v map[uint8]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7044,8 +7050,8 @@ func (_ fastpathT) EncMapUint8BoolV(v map[uint8]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7093,8 +7099,8 @@ func (_ fastpathT) EncMapUint16IntfV(v map[uint16]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7142,8 +7148,8 @@ func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7153,12 +7159,12 @@ func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(uint16(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uint16(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint16(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeUint(uint64(uint16(k2)))
- ee.EncodeString(cUTF8, v[uint16(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint16(k2)])
}
}
} else {
@@ -7167,12 +7173,12 @@ func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeUint(uint64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -7191,8 +7197,8 @@ func (_ fastpathT) EncMapUint16UintV(v map[uint16]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7240,8 +7246,8 @@ func (_ fastpathT) EncMapUint16Uint8V(v map[uint16]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7289,8 +7295,8 @@ func (_ fastpathT) EncMapUint16Uint16V(v map[uint16]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7338,8 +7344,8 @@ func (_ fastpathT) EncMapUint16Uint32V(v map[uint16]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7387,8 +7393,8 @@ func (_ fastpathT) EncMapUint16Uint64V(v map[uint16]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7436,8 +7442,8 @@ func (_ fastpathT) EncMapUint16UintptrV(v map[uint16]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7485,8 +7491,8 @@ func (_ fastpathT) EncMapUint16IntV(v map[uint16]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7534,8 +7540,8 @@ func (_ fastpathT) EncMapUint16Int8V(v map[uint16]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7583,8 +7589,8 @@ func (_ fastpathT) EncMapUint16Int16V(v map[uint16]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7632,8 +7638,8 @@ func (_ fastpathT) EncMapUint16Int32V(v map[uint16]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7681,8 +7687,8 @@ func (_ fastpathT) EncMapUint16Int64V(v map[uint16]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7730,8 +7736,8 @@ func (_ fastpathT) EncMapUint16Float32V(v map[uint16]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7779,8 +7785,8 @@ func (_ fastpathT) EncMapUint16Float64V(v map[uint16]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7828,8 +7834,8 @@ func (_ fastpathT) EncMapUint16BoolV(v map[uint16]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7877,8 +7883,8 @@ func (_ fastpathT) EncMapUint32IntfV(v map[uint32]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7926,8 +7932,8 @@ func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -7937,12 +7943,12 @@ func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(uint32(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uint32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint32(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeUint(uint64(uint32(k2)))
- ee.EncodeString(cUTF8, v[uint32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint32(k2)])
}
}
} else {
@@ -7951,12 +7957,12 @@ func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeUint(uint64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -7975,8 +7981,8 @@ func (_ fastpathT) EncMapUint32UintV(v map[uint32]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8024,8 +8030,8 @@ func (_ fastpathT) EncMapUint32Uint8V(v map[uint32]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8073,8 +8079,8 @@ func (_ fastpathT) EncMapUint32Uint16V(v map[uint32]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8122,8 +8128,8 @@ func (_ fastpathT) EncMapUint32Uint32V(v map[uint32]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8171,8 +8177,8 @@ func (_ fastpathT) EncMapUint32Uint64V(v map[uint32]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8220,8 +8226,8 @@ func (_ fastpathT) EncMapUint32UintptrV(v map[uint32]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8269,8 +8275,8 @@ func (_ fastpathT) EncMapUint32IntV(v map[uint32]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8318,8 +8324,8 @@ func (_ fastpathT) EncMapUint32Int8V(v map[uint32]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8367,8 +8373,8 @@ func (_ fastpathT) EncMapUint32Int16V(v map[uint32]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8416,8 +8422,8 @@ func (_ fastpathT) EncMapUint32Int32V(v map[uint32]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8465,8 +8471,8 @@ func (_ fastpathT) EncMapUint32Int64V(v map[uint32]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8514,8 +8520,8 @@ func (_ fastpathT) EncMapUint32Float32V(v map[uint32]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8563,8 +8569,8 @@ func (_ fastpathT) EncMapUint32Float64V(v map[uint32]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8612,8 +8618,8 @@ func (_ fastpathT) EncMapUint32BoolV(v map[uint32]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8661,8 +8667,8 @@ func (_ fastpathT) EncMapUint64IntfV(v map[uint64]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8710,8 +8716,8 @@ func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8721,12 +8727,12 @@ func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(uint64(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uint64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint64(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeUint(uint64(uint64(k2)))
- ee.EncodeString(cUTF8, v[uint64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uint64(k2)])
}
}
} else {
@@ -8735,12 +8741,12 @@ func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeUint(uint64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeUint(uint64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -8759,8 +8765,8 @@ func (_ fastpathT) EncMapUint64UintV(v map[uint64]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8808,8 +8814,8 @@ func (_ fastpathT) EncMapUint64Uint8V(v map[uint64]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8857,8 +8863,8 @@ func (_ fastpathT) EncMapUint64Uint16V(v map[uint64]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8906,8 +8912,8 @@ func (_ fastpathT) EncMapUint64Uint32V(v map[uint64]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -8955,8 +8961,8 @@ func (_ fastpathT) EncMapUint64Uint64V(v map[uint64]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9004,8 +9010,8 @@ func (_ fastpathT) EncMapUint64UintptrV(v map[uint64]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9053,8 +9059,8 @@ func (_ fastpathT) EncMapUint64IntV(v map[uint64]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9102,8 +9108,8 @@ func (_ fastpathT) EncMapUint64Int8V(v map[uint64]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9151,8 +9157,8 @@ func (_ fastpathT) EncMapUint64Int16V(v map[uint64]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9200,8 +9206,8 @@ func (_ fastpathT) EncMapUint64Int32V(v map[uint64]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9249,8 +9255,8 @@ func (_ fastpathT) EncMapUint64Int64V(v map[uint64]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9298,8 +9304,8 @@ func (_ fastpathT) EncMapUint64Float32V(v map[uint64]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9347,8 +9353,8 @@ func (_ fastpathT) EncMapUint64Float64V(v map[uint64]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9396,8 +9402,8 @@ func (_ fastpathT) EncMapUint64BoolV(v map[uint64]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9445,8 +9451,8 @@ func (_ fastpathT) EncMapUintptrIntfV(v map[uintptr]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9494,8 +9500,8 @@ func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9505,12 +9511,12 @@ func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, e *Encoder) {
ee.WriteMapElemKey()
e.encode(uintptr(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[uintptr(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uintptr(k2)])
}
} else {
for _, k2 := range v2 {
e.encode(uintptr(k2))
- ee.EncodeString(cUTF8, v[uintptr(k2)])
+ ee.EncodeStringEnc(cUTF8, v[uintptr(k2)])
}
}
} else {
@@ -9519,12 +9525,12 @@ func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, e *Encoder) {
ee.WriteMapElemKey()
e.encode(k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
e.encode(k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -9543,8 +9549,8 @@ func (_ fastpathT) EncMapUintptrUintV(v map[uintptr]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9592,8 +9598,8 @@ func (_ fastpathT) EncMapUintptrUint8V(v map[uintptr]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9641,8 +9647,8 @@ func (_ fastpathT) EncMapUintptrUint16V(v map[uintptr]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9690,8 +9696,8 @@ func (_ fastpathT) EncMapUintptrUint32V(v map[uintptr]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9739,8 +9745,8 @@ func (_ fastpathT) EncMapUintptrUint64V(v map[uintptr]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9788,8 +9794,8 @@ func (_ fastpathT) EncMapUintptrUintptrV(v map[uintptr]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9837,8 +9843,8 @@ func (_ fastpathT) EncMapUintptrIntV(v map[uintptr]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9886,8 +9892,8 @@ func (_ fastpathT) EncMapUintptrInt8V(v map[uintptr]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9935,8 +9941,8 @@ func (_ fastpathT) EncMapUintptrInt16V(v map[uintptr]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -9984,8 +9990,8 @@ func (_ fastpathT) EncMapUintptrInt32V(v map[uintptr]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -10033,8 +10039,8 @@ func (_ fastpathT) EncMapUintptrInt64V(v map[uintptr]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -10082,8 +10088,8 @@ func (_ fastpathT) EncMapUintptrFloat32V(v map[uintptr]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -10131,8 +10137,8 @@ func (_ fastpathT) EncMapUintptrFloat64V(v map[uintptr]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -10180,8 +10186,8 @@ func (_ fastpathT) EncMapUintptrBoolV(v map[uintptr]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]uint64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = uint64(k)
i++
}
@@ -10229,8 +10235,8 @@ func (_ fastpathT) EncMapIntIntfV(v map[int]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10278,8 +10284,8 @@ func (_ fastpathT) EncMapIntStringV(v map[int]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10289,12 +10295,12 @@ func (_ fastpathT) EncMapIntStringV(v map[int]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(int(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[int(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeInt(int64(int(k2)))
- ee.EncodeString(cUTF8, v[int(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int(k2)])
}
}
} else {
@@ -10303,12 +10309,12 @@ func (_ fastpathT) EncMapIntStringV(v map[int]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeInt(int64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -10327,8 +10333,8 @@ func (_ fastpathT) EncMapIntUintV(v map[int]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10376,8 +10382,8 @@ func (_ fastpathT) EncMapIntUint8V(v map[int]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10425,8 +10431,8 @@ func (_ fastpathT) EncMapIntUint16V(v map[int]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10474,8 +10480,8 @@ func (_ fastpathT) EncMapIntUint32V(v map[int]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10523,8 +10529,8 @@ func (_ fastpathT) EncMapIntUint64V(v map[int]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10572,8 +10578,8 @@ func (_ fastpathT) EncMapIntUintptrV(v map[int]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10621,8 +10627,8 @@ func (_ fastpathT) EncMapIntIntV(v map[int]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10670,8 +10676,8 @@ func (_ fastpathT) EncMapIntInt8V(v map[int]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10719,8 +10725,8 @@ func (_ fastpathT) EncMapIntInt16V(v map[int]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10768,8 +10774,8 @@ func (_ fastpathT) EncMapIntInt32V(v map[int]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10817,8 +10823,8 @@ func (_ fastpathT) EncMapIntInt64V(v map[int]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10866,8 +10872,8 @@ func (_ fastpathT) EncMapIntFloat32V(v map[int]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10915,8 +10921,8 @@ func (_ fastpathT) EncMapIntFloat64V(v map[int]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -10964,8 +10970,8 @@ func (_ fastpathT) EncMapIntBoolV(v map[int]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11013,8 +11019,8 @@ func (_ fastpathT) EncMapInt8IntfV(v map[int8]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11062,8 +11068,8 @@ func (_ fastpathT) EncMapInt8StringV(v map[int8]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11073,12 +11079,12 @@ func (_ fastpathT) EncMapInt8StringV(v map[int8]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(int8(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[int8(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int8(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeInt(int64(int8(k2)))
- ee.EncodeString(cUTF8, v[int8(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int8(k2)])
}
}
} else {
@@ -11087,12 +11093,12 @@ func (_ fastpathT) EncMapInt8StringV(v map[int8]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeInt(int64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -11111,8 +11117,8 @@ func (_ fastpathT) EncMapInt8UintV(v map[int8]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11160,8 +11166,8 @@ func (_ fastpathT) EncMapInt8Uint8V(v map[int8]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11209,8 +11215,8 @@ func (_ fastpathT) EncMapInt8Uint16V(v map[int8]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11258,8 +11264,8 @@ func (_ fastpathT) EncMapInt8Uint32V(v map[int8]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11307,8 +11313,8 @@ func (_ fastpathT) EncMapInt8Uint64V(v map[int8]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11356,8 +11362,8 @@ func (_ fastpathT) EncMapInt8UintptrV(v map[int8]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11405,8 +11411,8 @@ func (_ fastpathT) EncMapInt8IntV(v map[int8]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11454,8 +11460,8 @@ func (_ fastpathT) EncMapInt8Int8V(v map[int8]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11503,8 +11509,8 @@ func (_ fastpathT) EncMapInt8Int16V(v map[int8]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11552,8 +11558,8 @@ func (_ fastpathT) EncMapInt8Int32V(v map[int8]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11601,8 +11607,8 @@ func (_ fastpathT) EncMapInt8Int64V(v map[int8]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11650,8 +11656,8 @@ func (_ fastpathT) EncMapInt8Float32V(v map[int8]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11699,8 +11705,8 @@ func (_ fastpathT) EncMapInt8Float64V(v map[int8]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11748,8 +11754,8 @@ func (_ fastpathT) EncMapInt8BoolV(v map[int8]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11797,8 +11803,8 @@ func (_ fastpathT) EncMapInt16IntfV(v map[int16]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11846,8 +11852,8 @@ func (_ fastpathT) EncMapInt16StringV(v map[int16]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11857,12 +11863,12 @@ func (_ fastpathT) EncMapInt16StringV(v map[int16]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(int16(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[int16(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int16(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeInt(int64(int16(k2)))
- ee.EncodeString(cUTF8, v[int16(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int16(k2)])
}
}
} else {
@@ -11871,12 +11877,12 @@ func (_ fastpathT) EncMapInt16StringV(v map[int16]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeInt(int64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -11895,8 +11901,8 @@ func (_ fastpathT) EncMapInt16UintV(v map[int16]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11944,8 +11950,8 @@ func (_ fastpathT) EncMapInt16Uint8V(v map[int16]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -11993,8 +11999,8 @@ func (_ fastpathT) EncMapInt16Uint16V(v map[int16]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12042,8 +12048,8 @@ func (_ fastpathT) EncMapInt16Uint32V(v map[int16]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12091,8 +12097,8 @@ func (_ fastpathT) EncMapInt16Uint64V(v map[int16]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12140,8 +12146,8 @@ func (_ fastpathT) EncMapInt16UintptrV(v map[int16]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12189,8 +12195,8 @@ func (_ fastpathT) EncMapInt16IntV(v map[int16]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12238,8 +12244,8 @@ func (_ fastpathT) EncMapInt16Int8V(v map[int16]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12287,8 +12293,8 @@ func (_ fastpathT) EncMapInt16Int16V(v map[int16]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12336,8 +12342,8 @@ func (_ fastpathT) EncMapInt16Int32V(v map[int16]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12385,8 +12391,8 @@ func (_ fastpathT) EncMapInt16Int64V(v map[int16]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12434,8 +12440,8 @@ func (_ fastpathT) EncMapInt16Float32V(v map[int16]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12483,8 +12489,8 @@ func (_ fastpathT) EncMapInt16Float64V(v map[int16]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12532,8 +12538,8 @@ func (_ fastpathT) EncMapInt16BoolV(v map[int16]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12581,8 +12587,8 @@ func (_ fastpathT) EncMapInt32IntfV(v map[int32]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12630,8 +12636,8 @@ func (_ fastpathT) EncMapInt32StringV(v map[int32]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12641,12 +12647,12 @@ func (_ fastpathT) EncMapInt32StringV(v map[int32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(int32(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[int32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int32(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeInt(int64(int32(k2)))
- ee.EncodeString(cUTF8, v[int32(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int32(k2)])
}
}
} else {
@@ -12655,12 +12661,12 @@ func (_ fastpathT) EncMapInt32StringV(v map[int32]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeInt(int64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -12679,8 +12685,8 @@ func (_ fastpathT) EncMapInt32UintV(v map[int32]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12728,8 +12734,8 @@ func (_ fastpathT) EncMapInt32Uint8V(v map[int32]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12777,8 +12783,8 @@ func (_ fastpathT) EncMapInt32Uint16V(v map[int32]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12826,8 +12832,8 @@ func (_ fastpathT) EncMapInt32Uint32V(v map[int32]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12875,8 +12881,8 @@ func (_ fastpathT) EncMapInt32Uint64V(v map[int32]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12924,8 +12930,8 @@ func (_ fastpathT) EncMapInt32UintptrV(v map[int32]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -12973,8 +12979,8 @@ func (_ fastpathT) EncMapInt32IntV(v map[int32]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13022,8 +13028,8 @@ func (_ fastpathT) EncMapInt32Int8V(v map[int32]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13071,8 +13077,8 @@ func (_ fastpathT) EncMapInt32Int16V(v map[int32]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13120,8 +13126,8 @@ func (_ fastpathT) EncMapInt32Int32V(v map[int32]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13169,8 +13175,8 @@ func (_ fastpathT) EncMapInt32Int64V(v map[int32]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13218,8 +13224,8 @@ func (_ fastpathT) EncMapInt32Float32V(v map[int32]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13267,8 +13273,8 @@ func (_ fastpathT) EncMapInt32Float64V(v map[int32]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13316,8 +13322,8 @@ func (_ fastpathT) EncMapInt32BoolV(v map[int32]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13365,8 +13371,8 @@ func (_ fastpathT) EncMapInt64IntfV(v map[int64]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13414,8 +13420,8 @@ func (_ fastpathT) EncMapInt64StringV(v map[int64]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13425,12 +13431,12 @@ func (_ fastpathT) EncMapInt64StringV(v map[int64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(int64(k2)))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[int64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int64(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeInt(int64(int64(k2)))
- ee.EncodeString(cUTF8, v[int64(k2)])
+ ee.EncodeStringEnc(cUTF8, v[int64(k2)])
}
}
} else {
@@ -13439,12 +13445,12 @@ func (_ fastpathT) EncMapInt64StringV(v map[int64]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeInt(int64(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeInt(int64(k2))
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -13463,8 +13469,8 @@ func (_ fastpathT) EncMapInt64UintV(v map[int64]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13512,8 +13518,8 @@ func (_ fastpathT) EncMapInt64Uint8V(v map[int64]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13561,8 +13567,8 @@ func (_ fastpathT) EncMapInt64Uint16V(v map[int64]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13610,8 +13616,8 @@ func (_ fastpathT) EncMapInt64Uint32V(v map[int64]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13659,8 +13665,8 @@ func (_ fastpathT) EncMapInt64Uint64V(v map[int64]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13708,8 +13714,8 @@ func (_ fastpathT) EncMapInt64UintptrV(v map[int64]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13757,8 +13763,8 @@ func (_ fastpathT) EncMapInt64IntV(v map[int64]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13806,8 +13812,8 @@ func (_ fastpathT) EncMapInt64Int8V(v map[int64]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13855,8 +13861,8 @@ func (_ fastpathT) EncMapInt64Int16V(v map[int64]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13904,8 +13910,8 @@ func (_ fastpathT) EncMapInt64Int32V(v map[int64]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -13953,8 +13959,8 @@ func (_ fastpathT) EncMapInt64Int64V(v map[int64]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -14002,8 +14008,8 @@ func (_ fastpathT) EncMapInt64Float32V(v map[int64]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -14051,8 +14057,8 @@ func (_ fastpathT) EncMapInt64Float64V(v map[int64]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -14100,8 +14106,8 @@ func (_ fastpathT) EncMapInt64BoolV(v map[int64]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]int64, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = int64(k)
i++
}
@@ -14149,8 +14155,8 @@ func (_ fastpathT) EncMapBoolIntfV(v map[bool]interface{}, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14198,8 +14204,8 @@ func (_ fastpathT) EncMapBoolStringV(v map[bool]string, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14209,12 +14215,12 @@ func (_ fastpathT) EncMapBoolStringV(v map[bool]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeBool(bool(k2))
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v[bool(k2)])
+ ee.EncodeStringEnc(cUTF8, v[bool(k2)])
}
} else {
for _, k2 := range v2 {
ee.EncodeBool(bool(k2))
- ee.EncodeString(cUTF8, v[bool(k2)])
+ ee.EncodeStringEnc(cUTF8, v[bool(k2)])
}
}
} else {
@@ -14223,12 +14229,12 @@ func (_ fastpathT) EncMapBoolStringV(v map[bool]string, e *Encoder) {
ee.WriteMapElemKey()
ee.EncodeBool(k2)
ee.WriteMapElemValue()
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
} else {
for k2, v2 := range v {
ee.EncodeBool(k2)
- ee.EncodeString(cUTF8, v2)
+ ee.EncodeStringEnc(cUTF8, v2)
}
}
}
@@ -14247,8 +14253,8 @@ func (_ fastpathT) EncMapBoolUintV(v map[bool]uint, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14296,8 +14302,8 @@ func (_ fastpathT) EncMapBoolUint8V(v map[bool]uint8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14345,8 +14351,8 @@ func (_ fastpathT) EncMapBoolUint16V(v map[bool]uint16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14394,8 +14400,8 @@ func (_ fastpathT) EncMapBoolUint32V(v map[bool]uint32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14443,8 +14449,8 @@ func (_ fastpathT) EncMapBoolUint64V(v map[bool]uint64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14492,8 +14498,8 @@ func (_ fastpathT) EncMapBoolUintptrV(v map[bool]uintptr, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14541,8 +14547,8 @@ func (_ fastpathT) EncMapBoolIntV(v map[bool]int, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14590,8 +14596,8 @@ func (_ fastpathT) EncMapBoolInt8V(v map[bool]int8, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14639,8 +14645,8 @@ func (_ fastpathT) EncMapBoolInt16V(v map[bool]int16, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14688,8 +14694,8 @@ func (_ fastpathT) EncMapBoolInt32V(v map[bool]int32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14737,8 +14743,8 @@ func (_ fastpathT) EncMapBoolInt64V(v map[bool]int64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14786,8 +14792,8 @@ func (_ fastpathT) EncMapBoolFloat32V(v map[bool]float32, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14835,8 +14841,8 @@ func (_ fastpathT) EncMapBoolFloat64V(v map[bool]float64, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -14884,8 +14890,8 @@ func (_ fastpathT) EncMapBoolBoolV(v map[bool]bool, e *Encoder) {
ee.WriteMapStart(len(v))
if e.h.Canonical {
v2 := make([]bool, len(v))
- var i int
- for k, _ := range v {
+ var i uint
+ for k := range v {
v2[i] = bool(k)
i++
}
@@ -17757,15 +17763,16 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, canChange bool, d *Decoder) (_
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]interface{}, xlen)
+ v = make([]interface{}, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -17773,15 +17780,15 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, canChange bool, d *Decoder) (_
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16)
} else {
xlen = 8
}
- v = make([]interface{}, xlen)
+ v = make([]interface{}, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -17799,14 +17806,14 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, canChange bool, d *Decoder) (_
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = nil
+ v[uint(j)] = nil
} else {
- d.decode(&v[j])
+ d.decode(&v[uint(j)])
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]interface{}, 0)
@@ -17814,6 +17821,7 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, canChange bool, d *Decoder) (_
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -17853,15 +17861,16 @@ func (_ fastpathT) DecSliceStringV(v []string, canChange bool, d *Decoder) (_ []
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]string, xlen)
+ v = make([]string, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -17869,15 +17878,15 @@ func (_ fastpathT) DecSliceStringV(v []string, canChange bool, d *Decoder) (_ []
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16)
} else {
xlen = 8
}
- v = make([]string, xlen)
+ v = make([]string, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -17895,14 +17904,14 @@ func (_ fastpathT) DecSliceStringV(v []string, canChange bool, d *Decoder) (_ []
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = ""
+ v[uint(j)] = ""
} else {
- v[j] = dd.DecodeString()
+ v[uint(j)] = dd.DecodeString()
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]string, 0)
@@ -17910,6 +17919,7 @@ func (_ fastpathT) DecSliceStringV(v []string, canChange bool, d *Decoder) (_ []
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -17949,15 +17959,16 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, canChange bool, d *Decoder) (_
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]float32, xlen)
+ v = make([]float32, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -17965,15 +17976,15 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, canChange bool, d *Decoder) (_
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
} else {
xlen = 8
}
- v = make([]float32, xlen)
+ v = make([]float32, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -17991,14 +18002,14 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, canChange bool, d *Decoder) (_
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = float32(chkOvf.Float32V(dd.DecodeFloat64()))
+ v[uint(j)] = float32(chkOvf.Float32V(dd.DecodeFloat64()))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]float32, 0)
@@ -18006,6 +18017,7 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, canChange bool, d *Decoder) (_
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18045,15 +18057,16 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, canChange bool, d *Decoder) (_
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]float64, xlen)
+ v = make([]float64, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18061,15 +18074,15 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, canChange bool, d *Decoder) (_
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]float64, xlen)
+ v = make([]float64, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18087,14 +18100,14 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, canChange bool, d *Decoder) (_
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = dd.DecodeFloat64()
+ v[uint(j)] = dd.DecodeFloat64()
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]float64, 0)
@@ -18102,6 +18115,7 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, canChange bool, d *Decoder) (_
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18141,15 +18155,16 @@ func (_ fastpathT) DecSliceUintV(v []uint, canChange bool, d *Decoder) (_ []uint
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uint, xlen)
+ v = make([]uint, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18157,15 +18172,15 @@ func (_ fastpathT) DecSliceUintV(v []uint, canChange bool, d *Decoder) (_ []uint
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]uint, xlen)
+ v = make([]uint, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18183,14 +18198,14 @@ func (_ fastpathT) DecSliceUintV(v []uint, canChange bool, d *Decoder) (_ []uint
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = uint(chkOvf.UintV(dd.DecodeUint64(), uintBitsize))
+ v[uint(j)] = uint(chkOvf.UintV(dd.DecodeUint64(), uintBitsize))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uint, 0)
@@ -18198,6 +18213,7 @@ func (_ fastpathT) DecSliceUintV(v []uint, canChange bool, d *Decoder) (_ []uint
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18237,15 +18253,16 @@ func (_ fastpathT) DecSliceUint8V(v []uint8, canChange bool, d *Decoder) (_ []ui
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uint8, xlen)
+ v = make([]uint8, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18253,15 +18270,15 @@ func (_ fastpathT) DecSliceUint8V(v []uint8, canChange bool, d *Decoder) (_ []ui
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
} else {
xlen = 8
}
- v = make([]uint8, xlen)
+ v = make([]uint8, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18279,14 +18296,14 @@ func (_ fastpathT) DecSliceUint8V(v []uint8, canChange bool, d *Decoder) (_ []ui
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = uint8(chkOvf.UintV(dd.DecodeUint64(), 8))
+ v[uint(j)] = uint8(chkOvf.UintV(dd.DecodeUint64(), 8))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uint8, 0)
@@ -18294,6 +18311,7 @@ func (_ fastpathT) DecSliceUint8V(v []uint8, canChange bool, d *Decoder) (_ []ui
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18333,15 +18351,16 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, canChange bool, d *Decoder) (_ []
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uint16, xlen)
+ v = make([]uint16, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18349,15 +18368,15 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, canChange bool, d *Decoder) (_ []
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2)
} else {
xlen = 8
}
- v = make([]uint16, xlen)
+ v = make([]uint16, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18375,14 +18394,14 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, canChange bool, d *Decoder) (_ []
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = uint16(chkOvf.UintV(dd.DecodeUint64(), 16))
+ v[uint(j)] = uint16(chkOvf.UintV(dd.DecodeUint64(), 16))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uint16, 0)
@@ -18390,6 +18409,7 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, canChange bool, d *Decoder) (_ []
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18429,15 +18449,16 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, canChange bool, d *Decoder) (_ []
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uint32, xlen)
+ v = make([]uint32, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18445,15 +18466,15 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, canChange bool, d *Decoder) (_ []
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
} else {
xlen = 8
}
- v = make([]uint32, xlen)
+ v = make([]uint32, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18471,14 +18492,14 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, canChange bool, d *Decoder) (_ []
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = uint32(chkOvf.UintV(dd.DecodeUint64(), 32))
+ v[uint(j)] = uint32(chkOvf.UintV(dd.DecodeUint64(), 32))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uint32, 0)
@@ -18486,6 +18507,7 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, canChange bool, d *Decoder) (_ []
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18525,15 +18547,16 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, canChange bool, d *Decoder) (_ []
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uint64, xlen)
+ v = make([]uint64, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18541,15 +18564,15 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, canChange bool, d *Decoder) (_ []
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]uint64, xlen)
+ v = make([]uint64, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18567,14 +18590,14 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, canChange bool, d *Decoder) (_ []
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = dd.DecodeUint64()
+ v[uint(j)] = dd.DecodeUint64()
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uint64, 0)
@@ -18582,6 +18605,7 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, canChange bool, d *Decoder) (_ []
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18621,15 +18645,16 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, canChange bool, d *Decoder) (_
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]uintptr, xlen)
+ v = make([]uintptr, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18637,15 +18662,15 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, canChange bool, d *Decoder) (_
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]uintptr, xlen)
+ v = make([]uintptr, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18663,14 +18688,14 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, canChange bool, d *Decoder) (_
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = uintptr(chkOvf.UintV(dd.DecodeUint64(), uintBitsize))
+ v[uint(j)] = uintptr(chkOvf.UintV(dd.DecodeUint64(), uintBitsize))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]uintptr, 0)
@@ -18678,6 +18703,7 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, canChange bool, d *Decoder) (_
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18717,15 +18743,16 @@ func (_ fastpathT) DecSliceIntV(v []int, canChange bool, d *Decoder) (_ []int, c
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]int, xlen)
+ v = make([]int, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18733,15 +18760,15 @@ func (_ fastpathT) DecSliceIntV(v []int, canChange bool, d *Decoder) (_ []int, c
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]int, xlen)
+ v = make([]int, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18759,14 +18786,14 @@ func (_ fastpathT) DecSliceIntV(v []int, canChange bool, d *Decoder) (_ []int, c
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = int(chkOvf.IntV(dd.DecodeInt64(), intBitsize))
+ v[uint(j)] = int(chkOvf.IntV(dd.DecodeInt64(), intBitsize))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]int, 0)
@@ -18774,6 +18801,7 @@ func (_ fastpathT) DecSliceIntV(v []int, canChange bool, d *Decoder) (_ []int, c
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18813,15 +18841,16 @@ func (_ fastpathT) DecSliceInt8V(v []int8, canChange bool, d *Decoder) (_ []int8
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]int8, xlen)
+ v = make([]int8, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18829,15 +18858,15 @@ func (_ fastpathT) DecSliceInt8V(v []int8, canChange bool, d *Decoder) (_ []int8
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
} else {
xlen = 8
}
- v = make([]int8, xlen)
+ v = make([]int8, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18855,14 +18884,14 @@ func (_ fastpathT) DecSliceInt8V(v []int8, canChange bool, d *Decoder) (_ []int8
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = int8(chkOvf.IntV(dd.DecodeInt64(), 8))
+ v[uint(j)] = int8(chkOvf.IntV(dd.DecodeInt64(), 8))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]int8, 0)
@@ -18870,6 +18899,7 @@ func (_ fastpathT) DecSliceInt8V(v []int8, canChange bool, d *Decoder) (_ []int8
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -18909,15 +18939,16 @@ func (_ fastpathT) DecSliceInt16V(v []int16, canChange bool, d *Decoder) (_ []in
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]int16, xlen)
+ v = make([]int16, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -18925,15 +18956,15 @@ func (_ fastpathT) DecSliceInt16V(v []int16, canChange bool, d *Decoder) (_ []in
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2)
} else {
xlen = 8
}
- v = make([]int16, xlen)
+ v = make([]int16, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -18951,14 +18982,14 @@ func (_ fastpathT) DecSliceInt16V(v []int16, canChange bool, d *Decoder) (_ []in
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = int16(chkOvf.IntV(dd.DecodeInt64(), 16))
+ v[uint(j)] = int16(chkOvf.IntV(dd.DecodeInt64(), 16))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]int16, 0)
@@ -18966,6 +18997,7 @@ func (_ fastpathT) DecSliceInt16V(v []int16, canChange bool, d *Decoder) (_ []in
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -19005,15 +19037,16 @@ func (_ fastpathT) DecSliceInt32V(v []int32, canChange bool, d *Decoder) (_ []in
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]int32, xlen)
+ v = make([]int32, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -19021,15 +19054,15 @@ func (_ fastpathT) DecSliceInt32V(v []int32, canChange bool, d *Decoder) (_ []in
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4)
} else {
xlen = 8
}
- v = make([]int32, xlen)
+ v = make([]int32, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -19047,14 +19080,14 @@ func (_ fastpathT) DecSliceInt32V(v []int32, canChange bool, d *Decoder) (_ []in
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = int32(chkOvf.IntV(dd.DecodeInt64(), 32))
+ v[uint(j)] = int32(chkOvf.IntV(dd.DecodeInt64(), 32))
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]int32, 0)
@@ -19062,6 +19095,7 @@ func (_ fastpathT) DecSliceInt32V(v []int32, canChange bool, d *Decoder) (_ []in
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -19101,15 +19135,16 @@ func (_ fastpathT) DecSliceInt64V(v []int64, canChange bool, d *Decoder) (_ []in
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]int64, xlen)
+ v = make([]int64, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -19117,15 +19152,15 @@ func (_ fastpathT) DecSliceInt64V(v []int64, canChange bool, d *Decoder) (_ []in
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8)
} else {
xlen = 8
}
- v = make([]int64, xlen)
+ v = make([]int64, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -19143,14 +19178,14 @@ func (_ fastpathT) DecSliceInt64V(v []int64, canChange bool, d *Decoder) (_ []in
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = 0
+ v[uint(j)] = 0
} else {
- v[j] = dd.DecodeInt64()
+ v[uint(j)] = dd.DecodeInt64()
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]int64, 0)
@@ -19158,6 +19193,7 @@ func (_ fastpathT) DecSliceInt64V(v []int64, canChange bool, d *Decoder) (_ []in
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -19197,15 +19233,16 @@ func (_ fastpathT) DecSliceBoolV(v []bool, canChange bool, d *Decoder) (_ []bool
slh.End()
return v, changed
}
+ d.depthIncr()
hasLen := containerLenS > 0
var xlen int
if hasLen && canChange {
if containerLenS > cap(v) {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
if xlen <= cap(v) {
- v = v[:xlen]
+ v = v[:uint(xlen)]
} else {
- v = make([]bool, xlen)
+ v = make([]bool, uint(xlen))
}
changed = true
} else if containerLenS != len(v) {
@@ -19213,15 +19250,15 @@ func (_ fastpathT) DecSliceBoolV(v []bool, canChange bool, d *Decoder) (_ []bool
changed = true
}
}
- j := 0
- for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
+ var j int
+ for j = 0; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ {
if j == 0 && len(v) == 0 && canChange {
if hasLen {
xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1)
} else {
xlen = 8
}
- v = make([]bool, xlen)
+ v = make([]bool, uint(xlen))
changed = true
}
// if indefinite, etc, then expand the slice if necessary
@@ -19239,14 +19276,14 @@ func (_ fastpathT) DecSliceBoolV(v []bool, canChange bool, d *Decoder) (_ []bool
if decodeIntoBlank {
d.swallow()
} else if dd.TryDecodeAsNil() {
- v[j] = false
+ v[uint(j)] = false
} else {
- v[j] = dd.DecodeBool()
+ v[uint(j)] = dd.DecodeBool()
}
}
if canChange {
if j < len(v) {
- v = v[:j]
+ v = v[:uint(j)]
changed = true
} else if j == 0 && v == nil {
v = make([]bool, 0)
@@ -19254,6 +19291,7 @@ func (_ fastpathT) DecSliceBoolV(v []bool, canChange bool, d *Decoder) (_ []bool
}
}
slh.End()
+ d.depthDecr()
return v, changed
}
@@ -19287,6 +19325,7 @@ func (_ fastpathT) DecMapIntfIntfV(v map[interface{}]interface{}, canChange bool
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk interface{}
var mv interface{}
@@ -19323,6 +19362,7 @@ func (_ fastpathT) DecMapIntfIntfV(v map[interface{}]interface{}, canChange bool
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19356,6 +19396,7 @@ func (_ fastpathT) DecMapIntfStringV(v map[interface{}]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv string
hasLen := containerLen > 0
@@ -19386,6 +19427,7 @@ func (_ fastpathT) DecMapIntfStringV(v map[interface{}]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19419,6 +19461,7 @@ func (_ fastpathT) DecMapIntfUintV(v map[interface{}]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uint
hasLen := containerLen > 0
@@ -19449,6 +19492,7 @@ func (_ fastpathT) DecMapIntfUintV(v map[interface{}]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19482,6 +19526,7 @@ func (_ fastpathT) DecMapIntfUint8V(v map[interface{}]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uint8
hasLen := containerLen > 0
@@ -19512,6 +19557,7 @@ func (_ fastpathT) DecMapIntfUint8V(v map[interface{}]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19545,6 +19591,7 @@ func (_ fastpathT) DecMapIntfUint16V(v map[interface{}]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uint16
hasLen := containerLen > 0
@@ -19575,6 +19622,7 @@ func (_ fastpathT) DecMapIntfUint16V(v map[interface{}]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19608,6 +19656,7 @@ func (_ fastpathT) DecMapIntfUint32V(v map[interface{}]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uint32
hasLen := containerLen > 0
@@ -19638,6 +19687,7 @@ func (_ fastpathT) DecMapIntfUint32V(v map[interface{}]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19671,6 +19721,7 @@ func (_ fastpathT) DecMapIntfUint64V(v map[interface{}]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uint64
hasLen := containerLen > 0
@@ -19701,6 +19752,7 @@ func (_ fastpathT) DecMapIntfUint64V(v map[interface{}]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19734,6 +19786,7 @@ func (_ fastpathT) DecMapIntfUintptrV(v map[interface{}]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv uintptr
hasLen := containerLen > 0
@@ -19764,6 +19817,7 @@ func (_ fastpathT) DecMapIntfUintptrV(v map[interface{}]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19797,6 +19851,7 @@ func (_ fastpathT) DecMapIntfIntV(v map[interface{}]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv int
hasLen := containerLen > 0
@@ -19827,6 +19882,7 @@ func (_ fastpathT) DecMapIntfIntV(v map[interface{}]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19860,6 +19916,7 @@ func (_ fastpathT) DecMapIntfInt8V(v map[interface{}]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv int8
hasLen := containerLen > 0
@@ -19890,6 +19947,7 @@ func (_ fastpathT) DecMapIntfInt8V(v map[interface{}]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19923,6 +19981,7 @@ func (_ fastpathT) DecMapIntfInt16V(v map[interface{}]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv int16
hasLen := containerLen > 0
@@ -19953,6 +20012,7 @@ func (_ fastpathT) DecMapIntfInt16V(v map[interface{}]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -19986,6 +20046,7 @@ func (_ fastpathT) DecMapIntfInt32V(v map[interface{}]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv int32
hasLen := containerLen > 0
@@ -20016,6 +20077,7 @@ func (_ fastpathT) DecMapIntfInt32V(v map[interface{}]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20049,6 +20111,7 @@ func (_ fastpathT) DecMapIntfInt64V(v map[interface{}]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv int64
hasLen := containerLen > 0
@@ -20079,6 +20142,7 @@ func (_ fastpathT) DecMapIntfInt64V(v map[interface{}]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20112,6 +20176,7 @@ func (_ fastpathT) DecMapIntfFloat32V(v map[interface{}]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv float32
hasLen := containerLen > 0
@@ -20142,6 +20207,7 @@ func (_ fastpathT) DecMapIntfFloat32V(v map[interface{}]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20175,6 +20241,7 @@ func (_ fastpathT) DecMapIntfFloat64V(v map[interface{}]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv float64
hasLen := containerLen > 0
@@ -20205,6 +20272,7 @@ func (_ fastpathT) DecMapIntfFloat64V(v map[interface{}]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20238,6 +20306,7 @@ func (_ fastpathT) DecMapIntfBoolV(v map[interface{}]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk interface{}
var mv bool
hasLen := containerLen > 0
@@ -20268,6 +20337,7 @@ func (_ fastpathT) DecMapIntfBoolV(v map[interface{}]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20301,6 +20371,7 @@ func (_ fastpathT) DecMapStringIntfV(v map[string]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk string
var mv interface{}
@@ -20333,6 +20404,7 @@ func (_ fastpathT) DecMapStringIntfV(v map[string]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20366,6 +20438,7 @@ func (_ fastpathT) DecMapStringStringV(v map[string]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv string
hasLen := containerLen > 0
@@ -20392,6 +20465,7 @@ func (_ fastpathT) DecMapStringStringV(v map[string]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20425,6 +20499,7 @@ func (_ fastpathT) DecMapStringUintV(v map[string]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uint
hasLen := containerLen > 0
@@ -20451,6 +20526,7 @@ func (_ fastpathT) DecMapStringUintV(v map[string]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20484,6 +20560,7 @@ func (_ fastpathT) DecMapStringUint8V(v map[string]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uint8
hasLen := containerLen > 0
@@ -20510,6 +20587,7 @@ func (_ fastpathT) DecMapStringUint8V(v map[string]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20543,6 +20621,7 @@ func (_ fastpathT) DecMapStringUint16V(v map[string]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uint16
hasLen := containerLen > 0
@@ -20569,6 +20648,7 @@ func (_ fastpathT) DecMapStringUint16V(v map[string]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20602,6 +20682,7 @@ func (_ fastpathT) DecMapStringUint32V(v map[string]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uint32
hasLen := containerLen > 0
@@ -20628,6 +20709,7 @@ func (_ fastpathT) DecMapStringUint32V(v map[string]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20661,6 +20743,7 @@ func (_ fastpathT) DecMapStringUint64V(v map[string]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uint64
hasLen := containerLen > 0
@@ -20687,6 +20770,7 @@ func (_ fastpathT) DecMapStringUint64V(v map[string]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20720,6 +20804,7 @@ func (_ fastpathT) DecMapStringUintptrV(v map[string]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv uintptr
hasLen := containerLen > 0
@@ -20746,6 +20831,7 @@ func (_ fastpathT) DecMapStringUintptrV(v map[string]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20779,6 +20865,7 @@ func (_ fastpathT) DecMapStringIntV(v map[string]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv int
hasLen := containerLen > 0
@@ -20805,6 +20892,7 @@ func (_ fastpathT) DecMapStringIntV(v map[string]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20838,6 +20926,7 @@ func (_ fastpathT) DecMapStringInt8V(v map[string]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv int8
hasLen := containerLen > 0
@@ -20864,6 +20953,7 @@ func (_ fastpathT) DecMapStringInt8V(v map[string]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20897,6 +20987,7 @@ func (_ fastpathT) DecMapStringInt16V(v map[string]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv int16
hasLen := containerLen > 0
@@ -20923,6 +21014,7 @@ func (_ fastpathT) DecMapStringInt16V(v map[string]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -20956,6 +21048,7 @@ func (_ fastpathT) DecMapStringInt32V(v map[string]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv int32
hasLen := containerLen > 0
@@ -20982,6 +21075,7 @@ func (_ fastpathT) DecMapStringInt32V(v map[string]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21015,6 +21109,7 @@ func (_ fastpathT) DecMapStringInt64V(v map[string]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv int64
hasLen := containerLen > 0
@@ -21041,6 +21136,7 @@ func (_ fastpathT) DecMapStringInt64V(v map[string]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21074,6 +21170,7 @@ func (_ fastpathT) DecMapStringFloat32V(v map[string]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv float32
hasLen := containerLen > 0
@@ -21100,6 +21197,7 @@ func (_ fastpathT) DecMapStringFloat32V(v map[string]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21133,6 +21231,7 @@ func (_ fastpathT) DecMapStringFloat64V(v map[string]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv float64
hasLen := containerLen > 0
@@ -21159,6 +21258,7 @@ func (_ fastpathT) DecMapStringFloat64V(v map[string]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21192,6 +21292,7 @@ func (_ fastpathT) DecMapStringBoolV(v map[string]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk string
var mv bool
hasLen := containerLen > 0
@@ -21218,6 +21319,7 @@ func (_ fastpathT) DecMapStringBoolV(v map[string]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21251,6 +21353,7 @@ func (_ fastpathT) DecMapFloat32IntfV(v map[float32]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk float32
var mv interface{}
@@ -21283,6 +21386,7 @@ func (_ fastpathT) DecMapFloat32IntfV(v map[float32]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21316,6 +21420,7 @@ func (_ fastpathT) DecMapFloat32StringV(v map[float32]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv string
hasLen := containerLen > 0
@@ -21342,6 +21447,7 @@ func (_ fastpathT) DecMapFloat32StringV(v map[float32]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21375,6 +21481,7 @@ func (_ fastpathT) DecMapFloat32UintV(v map[float32]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uint
hasLen := containerLen > 0
@@ -21401,6 +21508,7 @@ func (_ fastpathT) DecMapFloat32UintV(v map[float32]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21434,6 +21542,7 @@ func (_ fastpathT) DecMapFloat32Uint8V(v map[float32]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uint8
hasLen := containerLen > 0
@@ -21460,6 +21569,7 @@ func (_ fastpathT) DecMapFloat32Uint8V(v map[float32]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21493,6 +21603,7 @@ func (_ fastpathT) DecMapFloat32Uint16V(v map[float32]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uint16
hasLen := containerLen > 0
@@ -21519,6 +21630,7 @@ func (_ fastpathT) DecMapFloat32Uint16V(v map[float32]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21552,6 +21664,7 @@ func (_ fastpathT) DecMapFloat32Uint32V(v map[float32]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uint32
hasLen := containerLen > 0
@@ -21578,6 +21691,7 @@ func (_ fastpathT) DecMapFloat32Uint32V(v map[float32]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21611,6 +21725,7 @@ func (_ fastpathT) DecMapFloat32Uint64V(v map[float32]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uint64
hasLen := containerLen > 0
@@ -21637,6 +21752,7 @@ func (_ fastpathT) DecMapFloat32Uint64V(v map[float32]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21670,6 +21786,7 @@ func (_ fastpathT) DecMapFloat32UintptrV(v map[float32]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv uintptr
hasLen := containerLen > 0
@@ -21696,6 +21813,7 @@ func (_ fastpathT) DecMapFloat32UintptrV(v map[float32]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21729,6 +21847,7 @@ func (_ fastpathT) DecMapFloat32IntV(v map[float32]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv int
hasLen := containerLen > 0
@@ -21755,6 +21874,7 @@ func (_ fastpathT) DecMapFloat32IntV(v map[float32]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21788,6 +21908,7 @@ func (_ fastpathT) DecMapFloat32Int8V(v map[float32]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv int8
hasLen := containerLen > 0
@@ -21814,6 +21935,7 @@ func (_ fastpathT) DecMapFloat32Int8V(v map[float32]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21847,6 +21969,7 @@ func (_ fastpathT) DecMapFloat32Int16V(v map[float32]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv int16
hasLen := containerLen > 0
@@ -21873,6 +21996,7 @@ func (_ fastpathT) DecMapFloat32Int16V(v map[float32]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21906,6 +22030,7 @@ func (_ fastpathT) DecMapFloat32Int32V(v map[float32]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv int32
hasLen := containerLen > 0
@@ -21932,6 +22057,7 @@ func (_ fastpathT) DecMapFloat32Int32V(v map[float32]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -21965,6 +22091,7 @@ func (_ fastpathT) DecMapFloat32Int64V(v map[float32]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv int64
hasLen := containerLen > 0
@@ -21991,6 +22118,7 @@ func (_ fastpathT) DecMapFloat32Int64V(v map[float32]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22024,6 +22152,7 @@ func (_ fastpathT) DecMapFloat32Float32V(v map[float32]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv float32
hasLen := containerLen > 0
@@ -22050,6 +22179,7 @@ func (_ fastpathT) DecMapFloat32Float32V(v map[float32]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22083,6 +22213,7 @@ func (_ fastpathT) DecMapFloat32Float64V(v map[float32]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv float64
hasLen := containerLen > 0
@@ -22109,6 +22240,7 @@ func (_ fastpathT) DecMapFloat32Float64V(v map[float32]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22142,6 +22274,7 @@ func (_ fastpathT) DecMapFloat32BoolV(v map[float32]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float32
var mv bool
hasLen := containerLen > 0
@@ -22168,6 +22301,7 @@ func (_ fastpathT) DecMapFloat32BoolV(v map[float32]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22201,6 +22335,7 @@ func (_ fastpathT) DecMapFloat64IntfV(v map[float64]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk float64
var mv interface{}
@@ -22233,6 +22368,7 @@ func (_ fastpathT) DecMapFloat64IntfV(v map[float64]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22266,6 +22402,7 @@ func (_ fastpathT) DecMapFloat64StringV(v map[float64]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv string
hasLen := containerLen > 0
@@ -22292,6 +22429,7 @@ func (_ fastpathT) DecMapFloat64StringV(v map[float64]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22325,6 +22463,7 @@ func (_ fastpathT) DecMapFloat64UintV(v map[float64]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uint
hasLen := containerLen > 0
@@ -22351,6 +22490,7 @@ func (_ fastpathT) DecMapFloat64UintV(v map[float64]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22384,6 +22524,7 @@ func (_ fastpathT) DecMapFloat64Uint8V(v map[float64]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uint8
hasLen := containerLen > 0
@@ -22410,6 +22551,7 @@ func (_ fastpathT) DecMapFloat64Uint8V(v map[float64]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22443,6 +22585,7 @@ func (_ fastpathT) DecMapFloat64Uint16V(v map[float64]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uint16
hasLen := containerLen > 0
@@ -22469,6 +22612,7 @@ func (_ fastpathT) DecMapFloat64Uint16V(v map[float64]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22502,6 +22646,7 @@ func (_ fastpathT) DecMapFloat64Uint32V(v map[float64]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uint32
hasLen := containerLen > 0
@@ -22528,6 +22673,7 @@ func (_ fastpathT) DecMapFloat64Uint32V(v map[float64]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22561,6 +22707,7 @@ func (_ fastpathT) DecMapFloat64Uint64V(v map[float64]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uint64
hasLen := containerLen > 0
@@ -22587,6 +22734,7 @@ func (_ fastpathT) DecMapFloat64Uint64V(v map[float64]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22620,6 +22768,7 @@ func (_ fastpathT) DecMapFloat64UintptrV(v map[float64]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv uintptr
hasLen := containerLen > 0
@@ -22646,6 +22795,7 @@ func (_ fastpathT) DecMapFloat64UintptrV(v map[float64]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22679,6 +22829,7 @@ func (_ fastpathT) DecMapFloat64IntV(v map[float64]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv int
hasLen := containerLen > 0
@@ -22705,6 +22856,7 @@ func (_ fastpathT) DecMapFloat64IntV(v map[float64]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22738,6 +22890,7 @@ func (_ fastpathT) DecMapFloat64Int8V(v map[float64]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv int8
hasLen := containerLen > 0
@@ -22764,6 +22917,7 @@ func (_ fastpathT) DecMapFloat64Int8V(v map[float64]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22797,6 +22951,7 @@ func (_ fastpathT) DecMapFloat64Int16V(v map[float64]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv int16
hasLen := containerLen > 0
@@ -22823,6 +22978,7 @@ func (_ fastpathT) DecMapFloat64Int16V(v map[float64]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22856,6 +23012,7 @@ func (_ fastpathT) DecMapFloat64Int32V(v map[float64]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv int32
hasLen := containerLen > 0
@@ -22882,6 +23039,7 @@ func (_ fastpathT) DecMapFloat64Int32V(v map[float64]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22915,6 +23073,7 @@ func (_ fastpathT) DecMapFloat64Int64V(v map[float64]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv int64
hasLen := containerLen > 0
@@ -22941,6 +23100,7 @@ func (_ fastpathT) DecMapFloat64Int64V(v map[float64]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -22974,6 +23134,7 @@ func (_ fastpathT) DecMapFloat64Float32V(v map[float64]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv float32
hasLen := containerLen > 0
@@ -23000,6 +23161,7 @@ func (_ fastpathT) DecMapFloat64Float32V(v map[float64]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23033,6 +23195,7 @@ func (_ fastpathT) DecMapFloat64Float64V(v map[float64]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv float64
hasLen := containerLen > 0
@@ -23059,6 +23222,7 @@ func (_ fastpathT) DecMapFloat64Float64V(v map[float64]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23092,6 +23256,7 @@ func (_ fastpathT) DecMapFloat64BoolV(v map[float64]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk float64
var mv bool
hasLen := containerLen > 0
@@ -23118,6 +23283,7 @@ func (_ fastpathT) DecMapFloat64BoolV(v map[float64]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23151,6 +23317,7 @@ func (_ fastpathT) DecMapUintIntfV(v map[uint]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uint
var mv interface{}
@@ -23183,6 +23350,7 @@ func (_ fastpathT) DecMapUintIntfV(v map[uint]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23216,6 +23384,7 @@ func (_ fastpathT) DecMapUintStringV(v map[uint]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv string
hasLen := containerLen > 0
@@ -23242,6 +23411,7 @@ func (_ fastpathT) DecMapUintStringV(v map[uint]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23275,6 +23445,7 @@ func (_ fastpathT) DecMapUintUintV(v map[uint]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uint
hasLen := containerLen > 0
@@ -23301,6 +23472,7 @@ func (_ fastpathT) DecMapUintUintV(v map[uint]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23334,6 +23506,7 @@ func (_ fastpathT) DecMapUintUint8V(v map[uint]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uint8
hasLen := containerLen > 0
@@ -23360,6 +23533,7 @@ func (_ fastpathT) DecMapUintUint8V(v map[uint]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23393,6 +23567,7 @@ func (_ fastpathT) DecMapUintUint16V(v map[uint]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uint16
hasLen := containerLen > 0
@@ -23419,6 +23594,7 @@ func (_ fastpathT) DecMapUintUint16V(v map[uint]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23452,6 +23628,7 @@ func (_ fastpathT) DecMapUintUint32V(v map[uint]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uint32
hasLen := containerLen > 0
@@ -23478,6 +23655,7 @@ func (_ fastpathT) DecMapUintUint32V(v map[uint]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23511,6 +23689,7 @@ func (_ fastpathT) DecMapUintUint64V(v map[uint]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uint64
hasLen := containerLen > 0
@@ -23537,6 +23716,7 @@ func (_ fastpathT) DecMapUintUint64V(v map[uint]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23570,6 +23750,7 @@ func (_ fastpathT) DecMapUintUintptrV(v map[uint]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv uintptr
hasLen := containerLen > 0
@@ -23596,6 +23777,7 @@ func (_ fastpathT) DecMapUintUintptrV(v map[uint]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23629,6 +23811,7 @@ func (_ fastpathT) DecMapUintIntV(v map[uint]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv int
hasLen := containerLen > 0
@@ -23655,6 +23838,7 @@ func (_ fastpathT) DecMapUintIntV(v map[uint]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23688,6 +23872,7 @@ func (_ fastpathT) DecMapUintInt8V(v map[uint]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv int8
hasLen := containerLen > 0
@@ -23714,6 +23899,7 @@ func (_ fastpathT) DecMapUintInt8V(v map[uint]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23747,6 +23933,7 @@ func (_ fastpathT) DecMapUintInt16V(v map[uint]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv int16
hasLen := containerLen > 0
@@ -23773,6 +23960,7 @@ func (_ fastpathT) DecMapUintInt16V(v map[uint]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23806,6 +23994,7 @@ func (_ fastpathT) DecMapUintInt32V(v map[uint]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv int32
hasLen := containerLen > 0
@@ -23832,6 +24021,7 @@ func (_ fastpathT) DecMapUintInt32V(v map[uint]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23865,6 +24055,7 @@ func (_ fastpathT) DecMapUintInt64V(v map[uint]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv int64
hasLen := containerLen > 0
@@ -23891,6 +24082,7 @@ func (_ fastpathT) DecMapUintInt64V(v map[uint]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23924,6 +24116,7 @@ func (_ fastpathT) DecMapUintFloat32V(v map[uint]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv float32
hasLen := containerLen > 0
@@ -23950,6 +24143,7 @@ func (_ fastpathT) DecMapUintFloat32V(v map[uint]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -23983,6 +24177,7 @@ func (_ fastpathT) DecMapUintFloat64V(v map[uint]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv float64
hasLen := containerLen > 0
@@ -24009,6 +24204,7 @@ func (_ fastpathT) DecMapUintFloat64V(v map[uint]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24042,6 +24238,7 @@ func (_ fastpathT) DecMapUintBoolV(v map[uint]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint
var mv bool
hasLen := containerLen > 0
@@ -24068,6 +24265,7 @@ func (_ fastpathT) DecMapUintBoolV(v map[uint]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24101,6 +24299,7 @@ func (_ fastpathT) DecMapUint8IntfV(v map[uint8]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uint8
var mv interface{}
@@ -24133,6 +24332,7 @@ func (_ fastpathT) DecMapUint8IntfV(v map[uint8]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24166,6 +24366,7 @@ func (_ fastpathT) DecMapUint8StringV(v map[uint8]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv string
hasLen := containerLen > 0
@@ -24192,6 +24393,7 @@ func (_ fastpathT) DecMapUint8StringV(v map[uint8]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24225,6 +24427,7 @@ func (_ fastpathT) DecMapUint8UintV(v map[uint8]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uint
hasLen := containerLen > 0
@@ -24251,6 +24454,7 @@ func (_ fastpathT) DecMapUint8UintV(v map[uint8]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24284,6 +24488,7 @@ func (_ fastpathT) DecMapUint8Uint8V(v map[uint8]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uint8
hasLen := containerLen > 0
@@ -24310,6 +24515,7 @@ func (_ fastpathT) DecMapUint8Uint8V(v map[uint8]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24343,6 +24549,7 @@ func (_ fastpathT) DecMapUint8Uint16V(v map[uint8]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uint16
hasLen := containerLen > 0
@@ -24369,6 +24576,7 @@ func (_ fastpathT) DecMapUint8Uint16V(v map[uint8]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24402,6 +24610,7 @@ func (_ fastpathT) DecMapUint8Uint32V(v map[uint8]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uint32
hasLen := containerLen > 0
@@ -24428,6 +24637,7 @@ func (_ fastpathT) DecMapUint8Uint32V(v map[uint8]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24461,6 +24671,7 @@ func (_ fastpathT) DecMapUint8Uint64V(v map[uint8]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uint64
hasLen := containerLen > 0
@@ -24487,6 +24698,7 @@ func (_ fastpathT) DecMapUint8Uint64V(v map[uint8]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24520,6 +24732,7 @@ func (_ fastpathT) DecMapUint8UintptrV(v map[uint8]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv uintptr
hasLen := containerLen > 0
@@ -24546,6 +24759,7 @@ func (_ fastpathT) DecMapUint8UintptrV(v map[uint8]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24579,6 +24793,7 @@ func (_ fastpathT) DecMapUint8IntV(v map[uint8]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv int
hasLen := containerLen > 0
@@ -24605,6 +24820,7 @@ func (_ fastpathT) DecMapUint8IntV(v map[uint8]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24638,6 +24854,7 @@ func (_ fastpathT) DecMapUint8Int8V(v map[uint8]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv int8
hasLen := containerLen > 0
@@ -24664,6 +24881,7 @@ func (_ fastpathT) DecMapUint8Int8V(v map[uint8]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24697,6 +24915,7 @@ func (_ fastpathT) DecMapUint8Int16V(v map[uint8]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv int16
hasLen := containerLen > 0
@@ -24723,6 +24942,7 @@ func (_ fastpathT) DecMapUint8Int16V(v map[uint8]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24756,6 +24976,7 @@ func (_ fastpathT) DecMapUint8Int32V(v map[uint8]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv int32
hasLen := containerLen > 0
@@ -24782,6 +25003,7 @@ func (_ fastpathT) DecMapUint8Int32V(v map[uint8]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24815,6 +25037,7 @@ func (_ fastpathT) DecMapUint8Int64V(v map[uint8]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv int64
hasLen := containerLen > 0
@@ -24841,6 +25064,7 @@ func (_ fastpathT) DecMapUint8Int64V(v map[uint8]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24874,6 +25098,7 @@ func (_ fastpathT) DecMapUint8Float32V(v map[uint8]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv float32
hasLen := containerLen > 0
@@ -24900,6 +25125,7 @@ func (_ fastpathT) DecMapUint8Float32V(v map[uint8]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24933,6 +25159,7 @@ func (_ fastpathT) DecMapUint8Float64V(v map[uint8]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv float64
hasLen := containerLen > 0
@@ -24959,6 +25186,7 @@ func (_ fastpathT) DecMapUint8Float64V(v map[uint8]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -24992,6 +25220,7 @@ func (_ fastpathT) DecMapUint8BoolV(v map[uint8]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint8
var mv bool
hasLen := containerLen > 0
@@ -25018,6 +25247,7 @@ func (_ fastpathT) DecMapUint8BoolV(v map[uint8]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25051,6 +25281,7 @@ func (_ fastpathT) DecMapUint16IntfV(v map[uint16]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uint16
var mv interface{}
@@ -25083,6 +25314,7 @@ func (_ fastpathT) DecMapUint16IntfV(v map[uint16]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25116,6 +25348,7 @@ func (_ fastpathT) DecMapUint16StringV(v map[uint16]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv string
hasLen := containerLen > 0
@@ -25142,6 +25375,7 @@ func (_ fastpathT) DecMapUint16StringV(v map[uint16]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25175,6 +25409,7 @@ func (_ fastpathT) DecMapUint16UintV(v map[uint16]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uint
hasLen := containerLen > 0
@@ -25201,6 +25436,7 @@ func (_ fastpathT) DecMapUint16UintV(v map[uint16]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25234,6 +25470,7 @@ func (_ fastpathT) DecMapUint16Uint8V(v map[uint16]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uint8
hasLen := containerLen > 0
@@ -25260,6 +25497,7 @@ func (_ fastpathT) DecMapUint16Uint8V(v map[uint16]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25293,6 +25531,7 @@ func (_ fastpathT) DecMapUint16Uint16V(v map[uint16]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uint16
hasLen := containerLen > 0
@@ -25319,6 +25558,7 @@ func (_ fastpathT) DecMapUint16Uint16V(v map[uint16]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25352,6 +25592,7 @@ func (_ fastpathT) DecMapUint16Uint32V(v map[uint16]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uint32
hasLen := containerLen > 0
@@ -25378,6 +25619,7 @@ func (_ fastpathT) DecMapUint16Uint32V(v map[uint16]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25411,6 +25653,7 @@ func (_ fastpathT) DecMapUint16Uint64V(v map[uint16]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uint64
hasLen := containerLen > 0
@@ -25437,6 +25680,7 @@ func (_ fastpathT) DecMapUint16Uint64V(v map[uint16]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25470,6 +25714,7 @@ func (_ fastpathT) DecMapUint16UintptrV(v map[uint16]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv uintptr
hasLen := containerLen > 0
@@ -25496,6 +25741,7 @@ func (_ fastpathT) DecMapUint16UintptrV(v map[uint16]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25529,6 +25775,7 @@ func (_ fastpathT) DecMapUint16IntV(v map[uint16]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv int
hasLen := containerLen > 0
@@ -25555,6 +25802,7 @@ func (_ fastpathT) DecMapUint16IntV(v map[uint16]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25588,6 +25836,7 @@ func (_ fastpathT) DecMapUint16Int8V(v map[uint16]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv int8
hasLen := containerLen > 0
@@ -25614,6 +25863,7 @@ func (_ fastpathT) DecMapUint16Int8V(v map[uint16]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25647,6 +25897,7 @@ func (_ fastpathT) DecMapUint16Int16V(v map[uint16]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv int16
hasLen := containerLen > 0
@@ -25673,6 +25924,7 @@ func (_ fastpathT) DecMapUint16Int16V(v map[uint16]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25706,6 +25958,7 @@ func (_ fastpathT) DecMapUint16Int32V(v map[uint16]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv int32
hasLen := containerLen > 0
@@ -25732,6 +25985,7 @@ func (_ fastpathT) DecMapUint16Int32V(v map[uint16]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25765,6 +26019,7 @@ func (_ fastpathT) DecMapUint16Int64V(v map[uint16]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv int64
hasLen := containerLen > 0
@@ -25791,6 +26046,7 @@ func (_ fastpathT) DecMapUint16Int64V(v map[uint16]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25824,6 +26080,7 @@ func (_ fastpathT) DecMapUint16Float32V(v map[uint16]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv float32
hasLen := containerLen > 0
@@ -25850,6 +26107,7 @@ func (_ fastpathT) DecMapUint16Float32V(v map[uint16]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25883,6 +26141,7 @@ func (_ fastpathT) DecMapUint16Float64V(v map[uint16]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv float64
hasLen := containerLen > 0
@@ -25909,6 +26168,7 @@ func (_ fastpathT) DecMapUint16Float64V(v map[uint16]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -25942,6 +26202,7 @@ func (_ fastpathT) DecMapUint16BoolV(v map[uint16]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint16
var mv bool
hasLen := containerLen > 0
@@ -25968,6 +26229,7 @@ func (_ fastpathT) DecMapUint16BoolV(v map[uint16]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26001,6 +26263,7 @@ func (_ fastpathT) DecMapUint32IntfV(v map[uint32]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uint32
var mv interface{}
@@ -26033,6 +26296,7 @@ func (_ fastpathT) DecMapUint32IntfV(v map[uint32]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26066,6 +26330,7 @@ func (_ fastpathT) DecMapUint32StringV(v map[uint32]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv string
hasLen := containerLen > 0
@@ -26092,6 +26357,7 @@ func (_ fastpathT) DecMapUint32StringV(v map[uint32]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26125,6 +26391,7 @@ func (_ fastpathT) DecMapUint32UintV(v map[uint32]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uint
hasLen := containerLen > 0
@@ -26151,6 +26418,7 @@ func (_ fastpathT) DecMapUint32UintV(v map[uint32]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26184,6 +26452,7 @@ func (_ fastpathT) DecMapUint32Uint8V(v map[uint32]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uint8
hasLen := containerLen > 0
@@ -26210,6 +26479,7 @@ func (_ fastpathT) DecMapUint32Uint8V(v map[uint32]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26243,6 +26513,7 @@ func (_ fastpathT) DecMapUint32Uint16V(v map[uint32]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uint16
hasLen := containerLen > 0
@@ -26269,6 +26540,7 @@ func (_ fastpathT) DecMapUint32Uint16V(v map[uint32]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26302,6 +26574,7 @@ func (_ fastpathT) DecMapUint32Uint32V(v map[uint32]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uint32
hasLen := containerLen > 0
@@ -26328,6 +26601,7 @@ func (_ fastpathT) DecMapUint32Uint32V(v map[uint32]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26361,6 +26635,7 @@ func (_ fastpathT) DecMapUint32Uint64V(v map[uint32]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uint64
hasLen := containerLen > 0
@@ -26387,6 +26662,7 @@ func (_ fastpathT) DecMapUint32Uint64V(v map[uint32]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26420,6 +26696,7 @@ func (_ fastpathT) DecMapUint32UintptrV(v map[uint32]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv uintptr
hasLen := containerLen > 0
@@ -26446,6 +26723,7 @@ func (_ fastpathT) DecMapUint32UintptrV(v map[uint32]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26479,6 +26757,7 @@ func (_ fastpathT) DecMapUint32IntV(v map[uint32]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv int
hasLen := containerLen > 0
@@ -26505,6 +26784,7 @@ func (_ fastpathT) DecMapUint32IntV(v map[uint32]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26538,6 +26818,7 @@ func (_ fastpathT) DecMapUint32Int8V(v map[uint32]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv int8
hasLen := containerLen > 0
@@ -26564,6 +26845,7 @@ func (_ fastpathT) DecMapUint32Int8V(v map[uint32]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26597,6 +26879,7 @@ func (_ fastpathT) DecMapUint32Int16V(v map[uint32]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv int16
hasLen := containerLen > 0
@@ -26623,6 +26906,7 @@ func (_ fastpathT) DecMapUint32Int16V(v map[uint32]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26656,6 +26940,7 @@ func (_ fastpathT) DecMapUint32Int32V(v map[uint32]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv int32
hasLen := containerLen > 0
@@ -26682,6 +26967,7 @@ func (_ fastpathT) DecMapUint32Int32V(v map[uint32]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26715,6 +27001,7 @@ func (_ fastpathT) DecMapUint32Int64V(v map[uint32]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv int64
hasLen := containerLen > 0
@@ -26741,6 +27028,7 @@ func (_ fastpathT) DecMapUint32Int64V(v map[uint32]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26774,6 +27062,7 @@ func (_ fastpathT) DecMapUint32Float32V(v map[uint32]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv float32
hasLen := containerLen > 0
@@ -26800,6 +27089,7 @@ func (_ fastpathT) DecMapUint32Float32V(v map[uint32]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26833,6 +27123,7 @@ func (_ fastpathT) DecMapUint32Float64V(v map[uint32]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv float64
hasLen := containerLen > 0
@@ -26859,6 +27150,7 @@ func (_ fastpathT) DecMapUint32Float64V(v map[uint32]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26892,6 +27184,7 @@ func (_ fastpathT) DecMapUint32BoolV(v map[uint32]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint32
var mv bool
hasLen := containerLen > 0
@@ -26918,6 +27211,7 @@ func (_ fastpathT) DecMapUint32BoolV(v map[uint32]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -26951,6 +27245,7 @@ func (_ fastpathT) DecMapUint64IntfV(v map[uint64]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uint64
var mv interface{}
@@ -26983,6 +27278,7 @@ func (_ fastpathT) DecMapUint64IntfV(v map[uint64]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27016,6 +27312,7 @@ func (_ fastpathT) DecMapUint64StringV(v map[uint64]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv string
hasLen := containerLen > 0
@@ -27042,6 +27339,7 @@ func (_ fastpathT) DecMapUint64StringV(v map[uint64]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27075,6 +27373,7 @@ func (_ fastpathT) DecMapUint64UintV(v map[uint64]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uint
hasLen := containerLen > 0
@@ -27101,6 +27400,7 @@ func (_ fastpathT) DecMapUint64UintV(v map[uint64]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27134,6 +27434,7 @@ func (_ fastpathT) DecMapUint64Uint8V(v map[uint64]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uint8
hasLen := containerLen > 0
@@ -27160,6 +27461,7 @@ func (_ fastpathT) DecMapUint64Uint8V(v map[uint64]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27193,6 +27495,7 @@ func (_ fastpathT) DecMapUint64Uint16V(v map[uint64]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uint16
hasLen := containerLen > 0
@@ -27219,6 +27522,7 @@ func (_ fastpathT) DecMapUint64Uint16V(v map[uint64]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27252,6 +27556,7 @@ func (_ fastpathT) DecMapUint64Uint32V(v map[uint64]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uint32
hasLen := containerLen > 0
@@ -27278,6 +27583,7 @@ func (_ fastpathT) DecMapUint64Uint32V(v map[uint64]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27311,6 +27617,7 @@ func (_ fastpathT) DecMapUint64Uint64V(v map[uint64]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uint64
hasLen := containerLen > 0
@@ -27337,6 +27644,7 @@ func (_ fastpathT) DecMapUint64Uint64V(v map[uint64]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27370,6 +27678,7 @@ func (_ fastpathT) DecMapUint64UintptrV(v map[uint64]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv uintptr
hasLen := containerLen > 0
@@ -27396,6 +27705,7 @@ func (_ fastpathT) DecMapUint64UintptrV(v map[uint64]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27429,6 +27739,7 @@ func (_ fastpathT) DecMapUint64IntV(v map[uint64]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv int
hasLen := containerLen > 0
@@ -27455,6 +27766,7 @@ func (_ fastpathT) DecMapUint64IntV(v map[uint64]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27488,6 +27800,7 @@ func (_ fastpathT) DecMapUint64Int8V(v map[uint64]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv int8
hasLen := containerLen > 0
@@ -27514,6 +27827,7 @@ func (_ fastpathT) DecMapUint64Int8V(v map[uint64]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27547,6 +27861,7 @@ func (_ fastpathT) DecMapUint64Int16V(v map[uint64]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv int16
hasLen := containerLen > 0
@@ -27573,6 +27888,7 @@ func (_ fastpathT) DecMapUint64Int16V(v map[uint64]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27606,6 +27922,7 @@ func (_ fastpathT) DecMapUint64Int32V(v map[uint64]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv int32
hasLen := containerLen > 0
@@ -27632,6 +27949,7 @@ func (_ fastpathT) DecMapUint64Int32V(v map[uint64]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27665,6 +27983,7 @@ func (_ fastpathT) DecMapUint64Int64V(v map[uint64]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv int64
hasLen := containerLen > 0
@@ -27691,6 +28010,7 @@ func (_ fastpathT) DecMapUint64Int64V(v map[uint64]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27724,6 +28044,7 @@ func (_ fastpathT) DecMapUint64Float32V(v map[uint64]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv float32
hasLen := containerLen > 0
@@ -27750,6 +28071,7 @@ func (_ fastpathT) DecMapUint64Float32V(v map[uint64]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27783,6 +28105,7 @@ func (_ fastpathT) DecMapUint64Float64V(v map[uint64]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv float64
hasLen := containerLen > 0
@@ -27809,6 +28132,7 @@ func (_ fastpathT) DecMapUint64Float64V(v map[uint64]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27842,6 +28166,7 @@ func (_ fastpathT) DecMapUint64BoolV(v map[uint64]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uint64
var mv bool
hasLen := containerLen > 0
@@ -27868,6 +28193,7 @@ func (_ fastpathT) DecMapUint64BoolV(v map[uint64]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27901,6 +28227,7 @@ func (_ fastpathT) DecMapUintptrIntfV(v map[uintptr]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk uintptr
var mv interface{}
@@ -27933,6 +28260,7 @@ func (_ fastpathT) DecMapUintptrIntfV(v map[uintptr]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -27966,6 +28294,7 @@ func (_ fastpathT) DecMapUintptrStringV(v map[uintptr]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv string
hasLen := containerLen > 0
@@ -27992,6 +28321,7 @@ func (_ fastpathT) DecMapUintptrStringV(v map[uintptr]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28025,6 +28355,7 @@ func (_ fastpathT) DecMapUintptrUintV(v map[uintptr]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uint
hasLen := containerLen > 0
@@ -28051,6 +28382,7 @@ func (_ fastpathT) DecMapUintptrUintV(v map[uintptr]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28084,6 +28416,7 @@ func (_ fastpathT) DecMapUintptrUint8V(v map[uintptr]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uint8
hasLen := containerLen > 0
@@ -28110,6 +28443,7 @@ func (_ fastpathT) DecMapUintptrUint8V(v map[uintptr]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28143,6 +28477,7 @@ func (_ fastpathT) DecMapUintptrUint16V(v map[uintptr]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uint16
hasLen := containerLen > 0
@@ -28169,6 +28504,7 @@ func (_ fastpathT) DecMapUintptrUint16V(v map[uintptr]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28202,6 +28538,7 @@ func (_ fastpathT) DecMapUintptrUint32V(v map[uintptr]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uint32
hasLen := containerLen > 0
@@ -28228,6 +28565,7 @@ func (_ fastpathT) DecMapUintptrUint32V(v map[uintptr]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28261,6 +28599,7 @@ func (_ fastpathT) DecMapUintptrUint64V(v map[uintptr]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uint64
hasLen := containerLen > 0
@@ -28287,6 +28626,7 @@ func (_ fastpathT) DecMapUintptrUint64V(v map[uintptr]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28320,6 +28660,7 @@ func (_ fastpathT) DecMapUintptrUintptrV(v map[uintptr]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv uintptr
hasLen := containerLen > 0
@@ -28346,6 +28687,7 @@ func (_ fastpathT) DecMapUintptrUintptrV(v map[uintptr]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28379,6 +28721,7 @@ func (_ fastpathT) DecMapUintptrIntV(v map[uintptr]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv int
hasLen := containerLen > 0
@@ -28405,6 +28748,7 @@ func (_ fastpathT) DecMapUintptrIntV(v map[uintptr]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28438,6 +28782,7 @@ func (_ fastpathT) DecMapUintptrInt8V(v map[uintptr]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv int8
hasLen := containerLen > 0
@@ -28464,6 +28809,7 @@ func (_ fastpathT) DecMapUintptrInt8V(v map[uintptr]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28497,6 +28843,7 @@ func (_ fastpathT) DecMapUintptrInt16V(v map[uintptr]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv int16
hasLen := containerLen > 0
@@ -28523,6 +28870,7 @@ func (_ fastpathT) DecMapUintptrInt16V(v map[uintptr]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28556,6 +28904,7 @@ func (_ fastpathT) DecMapUintptrInt32V(v map[uintptr]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv int32
hasLen := containerLen > 0
@@ -28582,6 +28931,7 @@ func (_ fastpathT) DecMapUintptrInt32V(v map[uintptr]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28615,6 +28965,7 @@ func (_ fastpathT) DecMapUintptrInt64V(v map[uintptr]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv int64
hasLen := containerLen > 0
@@ -28641,6 +28992,7 @@ func (_ fastpathT) DecMapUintptrInt64V(v map[uintptr]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28674,6 +29026,7 @@ func (_ fastpathT) DecMapUintptrFloat32V(v map[uintptr]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv float32
hasLen := containerLen > 0
@@ -28700,6 +29053,7 @@ func (_ fastpathT) DecMapUintptrFloat32V(v map[uintptr]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28733,6 +29087,7 @@ func (_ fastpathT) DecMapUintptrFloat64V(v map[uintptr]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv float64
hasLen := containerLen > 0
@@ -28759,6 +29114,7 @@ func (_ fastpathT) DecMapUintptrFloat64V(v map[uintptr]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28792,6 +29148,7 @@ func (_ fastpathT) DecMapUintptrBoolV(v map[uintptr]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk uintptr
var mv bool
hasLen := containerLen > 0
@@ -28818,6 +29175,7 @@ func (_ fastpathT) DecMapUintptrBoolV(v map[uintptr]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28851,6 +29209,7 @@ func (_ fastpathT) DecMapIntIntfV(v map[int]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk int
var mv interface{}
@@ -28883,6 +29242,7 @@ func (_ fastpathT) DecMapIntIntfV(v map[int]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28916,6 +29276,7 @@ func (_ fastpathT) DecMapIntStringV(v map[int]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv string
hasLen := containerLen > 0
@@ -28942,6 +29303,7 @@ func (_ fastpathT) DecMapIntStringV(v map[int]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -28975,6 +29337,7 @@ func (_ fastpathT) DecMapIntUintV(v map[int]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uint
hasLen := containerLen > 0
@@ -29001,6 +29364,7 @@ func (_ fastpathT) DecMapIntUintV(v map[int]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29034,6 +29398,7 @@ func (_ fastpathT) DecMapIntUint8V(v map[int]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uint8
hasLen := containerLen > 0
@@ -29060,6 +29425,7 @@ func (_ fastpathT) DecMapIntUint8V(v map[int]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29093,6 +29459,7 @@ func (_ fastpathT) DecMapIntUint16V(v map[int]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uint16
hasLen := containerLen > 0
@@ -29119,6 +29486,7 @@ func (_ fastpathT) DecMapIntUint16V(v map[int]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29152,6 +29520,7 @@ func (_ fastpathT) DecMapIntUint32V(v map[int]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uint32
hasLen := containerLen > 0
@@ -29178,6 +29547,7 @@ func (_ fastpathT) DecMapIntUint32V(v map[int]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29211,6 +29581,7 @@ func (_ fastpathT) DecMapIntUint64V(v map[int]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uint64
hasLen := containerLen > 0
@@ -29237,6 +29608,7 @@ func (_ fastpathT) DecMapIntUint64V(v map[int]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29270,6 +29642,7 @@ func (_ fastpathT) DecMapIntUintptrV(v map[int]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv uintptr
hasLen := containerLen > 0
@@ -29296,6 +29669,7 @@ func (_ fastpathT) DecMapIntUintptrV(v map[int]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29329,6 +29703,7 @@ func (_ fastpathT) DecMapIntIntV(v map[int]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv int
hasLen := containerLen > 0
@@ -29355,6 +29730,7 @@ func (_ fastpathT) DecMapIntIntV(v map[int]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29388,6 +29764,7 @@ func (_ fastpathT) DecMapIntInt8V(v map[int]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv int8
hasLen := containerLen > 0
@@ -29414,6 +29791,7 @@ func (_ fastpathT) DecMapIntInt8V(v map[int]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29447,6 +29825,7 @@ func (_ fastpathT) DecMapIntInt16V(v map[int]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv int16
hasLen := containerLen > 0
@@ -29473,6 +29852,7 @@ func (_ fastpathT) DecMapIntInt16V(v map[int]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29506,6 +29886,7 @@ func (_ fastpathT) DecMapIntInt32V(v map[int]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv int32
hasLen := containerLen > 0
@@ -29532,6 +29913,7 @@ func (_ fastpathT) DecMapIntInt32V(v map[int]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29565,6 +29947,7 @@ func (_ fastpathT) DecMapIntInt64V(v map[int]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv int64
hasLen := containerLen > 0
@@ -29591,6 +29974,7 @@ func (_ fastpathT) DecMapIntInt64V(v map[int]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29624,6 +30008,7 @@ func (_ fastpathT) DecMapIntFloat32V(v map[int]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv float32
hasLen := containerLen > 0
@@ -29650,6 +30035,7 @@ func (_ fastpathT) DecMapIntFloat32V(v map[int]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29683,6 +30069,7 @@ func (_ fastpathT) DecMapIntFloat64V(v map[int]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv float64
hasLen := containerLen > 0
@@ -29709,6 +30096,7 @@ func (_ fastpathT) DecMapIntFloat64V(v map[int]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29742,6 +30130,7 @@ func (_ fastpathT) DecMapIntBoolV(v map[int]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int
var mv bool
hasLen := containerLen > 0
@@ -29768,6 +30157,7 @@ func (_ fastpathT) DecMapIntBoolV(v map[int]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29801,6 +30191,7 @@ func (_ fastpathT) DecMapInt8IntfV(v map[int8]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk int8
var mv interface{}
@@ -29833,6 +30224,7 @@ func (_ fastpathT) DecMapInt8IntfV(v map[int8]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29866,6 +30258,7 @@ func (_ fastpathT) DecMapInt8StringV(v map[int8]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv string
hasLen := containerLen > 0
@@ -29892,6 +30285,7 @@ func (_ fastpathT) DecMapInt8StringV(v map[int8]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29925,6 +30319,7 @@ func (_ fastpathT) DecMapInt8UintV(v map[int8]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uint
hasLen := containerLen > 0
@@ -29951,6 +30346,7 @@ func (_ fastpathT) DecMapInt8UintV(v map[int8]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -29984,6 +30380,7 @@ func (_ fastpathT) DecMapInt8Uint8V(v map[int8]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uint8
hasLen := containerLen > 0
@@ -30010,6 +30407,7 @@ func (_ fastpathT) DecMapInt8Uint8V(v map[int8]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30043,6 +30441,7 @@ func (_ fastpathT) DecMapInt8Uint16V(v map[int8]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uint16
hasLen := containerLen > 0
@@ -30069,6 +30468,7 @@ func (_ fastpathT) DecMapInt8Uint16V(v map[int8]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30102,6 +30502,7 @@ func (_ fastpathT) DecMapInt8Uint32V(v map[int8]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uint32
hasLen := containerLen > 0
@@ -30128,6 +30529,7 @@ func (_ fastpathT) DecMapInt8Uint32V(v map[int8]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30161,6 +30563,7 @@ func (_ fastpathT) DecMapInt8Uint64V(v map[int8]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uint64
hasLen := containerLen > 0
@@ -30187,6 +30590,7 @@ func (_ fastpathT) DecMapInt8Uint64V(v map[int8]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30220,6 +30624,7 @@ func (_ fastpathT) DecMapInt8UintptrV(v map[int8]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv uintptr
hasLen := containerLen > 0
@@ -30246,6 +30651,7 @@ func (_ fastpathT) DecMapInt8UintptrV(v map[int8]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30279,6 +30685,7 @@ func (_ fastpathT) DecMapInt8IntV(v map[int8]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv int
hasLen := containerLen > 0
@@ -30305,6 +30712,7 @@ func (_ fastpathT) DecMapInt8IntV(v map[int8]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30338,6 +30746,7 @@ func (_ fastpathT) DecMapInt8Int8V(v map[int8]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv int8
hasLen := containerLen > 0
@@ -30364,6 +30773,7 @@ func (_ fastpathT) DecMapInt8Int8V(v map[int8]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30397,6 +30807,7 @@ func (_ fastpathT) DecMapInt8Int16V(v map[int8]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv int16
hasLen := containerLen > 0
@@ -30423,6 +30834,7 @@ func (_ fastpathT) DecMapInt8Int16V(v map[int8]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30456,6 +30868,7 @@ func (_ fastpathT) DecMapInt8Int32V(v map[int8]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv int32
hasLen := containerLen > 0
@@ -30482,6 +30895,7 @@ func (_ fastpathT) DecMapInt8Int32V(v map[int8]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30515,6 +30929,7 @@ func (_ fastpathT) DecMapInt8Int64V(v map[int8]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv int64
hasLen := containerLen > 0
@@ -30541,6 +30956,7 @@ func (_ fastpathT) DecMapInt8Int64V(v map[int8]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30574,6 +30990,7 @@ func (_ fastpathT) DecMapInt8Float32V(v map[int8]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv float32
hasLen := containerLen > 0
@@ -30600,6 +31017,7 @@ func (_ fastpathT) DecMapInt8Float32V(v map[int8]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30633,6 +31051,7 @@ func (_ fastpathT) DecMapInt8Float64V(v map[int8]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv float64
hasLen := containerLen > 0
@@ -30659,6 +31078,7 @@ func (_ fastpathT) DecMapInt8Float64V(v map[int8]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30692,6 +31112,7 @@ func (_ fastpathT) DecMapInt8BoolV(v map[int8]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int8
var mv bool
hasLen := containerLen > 0
@@ -30718,6 +31139,7 @@ func (_ fastpathT) DecMapInt8BoolV(v map[int8]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30751,6 +31173,7 @@ func (_ fastpathT) DecMapInt16IntfV(v map[int16]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk int16
var mv interface{}
@@ -30783,6 +31206,7 @@ func (_ fastpathT) DecMapInt16IntfV(v map[int16]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30816,6 +31240,7 @@ func (_ fastpathT) DecMapInt16StringV(v map[int16]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv string
hasLen := containerLen > 0
@@ -30842,6 +31267,7 @@ func (_ fastpathT) DecMapInt16StringV(v map[int16]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30875,6 +31301,7 @@ func (_ fastpathT) DecMapInt16UintV(v map[int16]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uint
hasLen := containerLen > 0
@@ -30901,6 +31328,7 @@ func (_ fastpathT) DecMapInt16UintV(v map[int16]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30934,6 +31362,7 @@ func (_ fastpathT) DecMapInt16Uint8V(v map[int16]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uint8
hasLen := containerLen > 0
@@ -30960,6 +31389,7 @@ func (_ fastpathT) DecMapInt16Uint8V(v map[int16]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -30993,6 +31423,7 @@ func (_ fastpathT) DecMapInt16Uint16V(v map[int16]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uint16
hasLen := containerLen > 0
@@ -31019,6 +31450,7 @@ func (_ fastpathT) DecMapInt16Uint16V(v map[int16]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31052,6 +31484,7 @@ func (_ fastpathT) DecMapInt16Uint32V(v map[int16]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uint32
hasLen := containerLen > 0
@@ -31078,6 +31511,7 @@ func (_ fastpathT) DecMapInt16Uint32V(v map[int16]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31111,6 +31545,7 @@ func (_ fastpathT) DecMapInt16Uint64V(v map[int16]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uint64
hasLen := containerLen > 0
@@ -31137,6 +31572,7 @@ func (_ fastpathT) DecMapInt16Uint64V(v map[int16]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31170,6 +31606,7 @@ func (_ fastpathT) DecMapInt16UintptrV(v map[int16]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv uintptr
hasLen := containerLen > 0
@@ -31196,6 +31633,7 @@ func (_ fastpathT) DecMapInt16UintptrV(v map[int16]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31229,6 +31667,7 @@ func (_ fastpathT) DecMapInt16IntV(v map[int16]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv int
hasLen := containerLen > 0
@@ -31255,6 +31694,7 @@ func (_ fastpathT) DecMapInt16IntV(v map[int16]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31288,6 +31728,7 @@ func (_ fastpathT) DecMapInt16Int8V(v map[int16]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv int8
hasLen := containerLen > 0
@@ -31314,6 +31755,7 @@ func (_ fastpathT) DecMapInt16Int8V(v map[int16]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31347,6 +31789,7 @@ func (_ fastpathT) DecMapInt16Int16V(v map[int16]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv int16
hasLen := containerLen > 0
@@ -31373,6 +31816,7 @@ func (_ fastpathT) DecMapInt16Int16V(v map[int16]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31406,6 +31850,7 @@ func (_ fastpathT) DecMapInt16Int32V(v map[int16]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv int32
hasLen := containerLen > 0
@@ -31432,6 +31877,7 @@ func (_ fastpathT) DecMapInt16Int32V(v map[int16]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31465,6 +31911,7 @@ func (_ fastpathT) DecMapInt16Int64V(v map[int16]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv int64
hasLen := containerLen > 0
@@ -31491,6 +31938,7 @@ func (_ fastpathT) DecMapInt16Int64V(v map[int16]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31524,6 +31972,7 @@ func (_ fastpathT) DecMapInt16Float32V(v map[int16]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv float32
hasLen := containerLen > 0
@@ -31550,6 +31999,7 @@ func (_ fastpathT) DecMapInt16Float32V(v map[int16]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31583,6 +32033,7 @@ func (_ fastpathT) DecMapInt16Float64V(v map[int16]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv float64
hasLen := containerLen > 0
@@ -31609,6 +32060,7 @@ func (_ fastpathT) DecMapInt16Float64V(v map[int16]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31642,6 +32094,7 @@ func (_ fastpathT) DecMapInt16BoolV(v map[int16]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int16
var mv bool
hasLen := containerLen > 0
@@ -31668,6 +32121,7 @@ func (_ fastpathT) DecMapInt16BoolV(v map[int16]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31701,6 +32155,7 @@ func (_ fastpathT) DecMapInt32IntfV(v map[int32]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk int32
var mv interface{}
@@ -31733,6 +32188,7 @@ func (_ fastpathT) DecMapInt32IntfV(v map[int32]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31766,6 +32222,7 @@ func (_ fastpathT) DecMapInt32StringV(v map[int32]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv string
hasLen := containerLen > 0
@@ -31792,6 +32249,7 @@ func (_ fastpathT) DecMapInt32StringV(v map[int32]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31825,6 +32283,7 @@ func (_ fastpathT) DecMapInt32UintV(v map[int32]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uint
hasLen := containerLen > 0
@@ -31851,6 +32310,7 @@ func (_ fastpathT) DecMapInt32UintV(v map[int32]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31884,6 +32344,7 @@ func (_ fastpathT) DecMapInt32Uint8V(v map[int32]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uint8
hasLen := containerLen > 0
@@ -31910,6 +32371,7 @@ func (_ fastpathT) DecMapInt32Uint8V(v map[int32]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -31943,6 +32405,7 @@ func (_ fastpathT) DecMapInt32Uint16V(v map[int32]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uint16
hasLen := containerLen > 0
@@ -31969,6 +32432,7 @@ func (_ fastpathT) DecMapInt32Uint16V(v map[int32]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32002,6 +32466,7 @@ func (_ fastpathT) DecMapInt32Uint32V(v map[int32]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uint32
hasLen := containerLen > 0
@@ -32028,6 +32493,7 @@ func (_ fastpathT) DecMapInt32Uint32V(v map[int32]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32061,6 +32527,7 @@ func (_ fastpathT) DecMapInt32Uint64V(v map[int32]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uint64
hasLen := containerLen > 0
@@ -32087,6 +32554,7 @@ func (_ fastpathT) DecMapInt32Uint64V(v map[int32]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32120,6 +32588,7 @@ func (_ fastpathT) DecMapInt32UintptrV(v map[int32]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv uintptr
hasLen := containerLen > 0
@@ -32146,6 +32615,7 @@ func (_ fastpathT) DecMapInt32UintptrV(v map[int32]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32179,6 +32649,7 @@ func (_ fastpathT) DecMapInt32IntV(v map[int32]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv int
hasLen := containerLen > 0
@@ -32205,6 +32676,7 @@ func (_ fastpathT) DecMapInt32IntV(v map[int32]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32238,6 +32710,7 @@ func (_ fastpathT) DecMapInt32Int8V(v map[int32]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv int8
hasLen := containerLen > 0
@@ -32264,6 +32737,7 @@ func (_ fastpathT) DecMapInt32Int8V(v map[int32]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32297,6 +32771,7 @@ func (_ fastpathT) DecMapInt32Int16V(v map[int32]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv int16
hasLen := containerLen > 0
@@ -32323,6 +32798,7 @@ func (_ fastpathT) DecMapInt32Int16V(v map[int32]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32356,6 +32832,7 @@ func (_ fastpathT) DecMapInt32Int32V(v map[int32]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv int32
hasLen := containerLen > 0
@@ -32382,6 +32859,7 @@ func (_ fastpathT) DecMapInt32Int32V(v map[int32]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32415,6 +32893,7 @@ func (_ fastpathT) DecMapInt32Int64V(v map[int32]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv int64
hasLen := containerLen > 0
@@ -32441,6 +32920,7 @@ func (_ fastpathT) DecMapInt32Int64V(v map[int32]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32474,6 +32954,7 @@ func (_ fastpathT) DecMapInt32Float32V(v map[int32]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv float32
hasLen := containerLen > 0
@@ -32500,6 +32981,7 @@ func (_ fastpathT) DecMapInt32Float32V(v map[int32]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32533,6 +33015,7 @@ func (_ fastpathT) DecMapInt32Float64V(v map[int32]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv float64
hasLen := containerLen > 0
@@ -32559,6 +33042,7 @@ func (_ fastpathT) DecMapInt32Float64V(v map[int32]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32592,6 +33076,7 @@ func (_ fastpathT) DecMapInt32BoolV(v map[int32]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int32
var mv bool
hasLen := containerLen > 0
@@ -32618,6 +33103,7 @@ func (_ fastpathT) DecMapInt32BoolV(v map[int32]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32651,6 +33137,7 @@ func (_ fastpathT) DecMapInt64IntfV(v map[int64]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk int64
var mv interface{}
@@ -32683,6 +33170,7 @@ func (_ fastpathT) DecMapInt64IntfV(v map[int64]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32716,6 +33204,7 @@ func (_ fastpathT) DecMapInt64StringV(v map[int64]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv string
hasLen := containerLen > 0
@@ -32742,6 +33231,7 @@ func (_ fastpathT) DecMapInt64StringV(v map[int64]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32775,6 +33265,7 @@ func (_ fastpathT) DecMapInt64UintV(v map[int64]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uint
hasLen := containerLen > 0
@@ -32801,6 +33292,7 @@ func (_ fastpathT) DecMapInt64UintV(v map[int64]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32834,6 +33326,7 @@ func (_ fastpathT) DecMapInt64Uint8V(v map[int64]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uint8
hasLen := containerLen > 0
@@ -32860,6 +33353,7 @@ func (_ fastpathT) DecMapInt64Uint8V(v map[int64]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32893,6 +33387,7 @@ func (_ fastpathT) DecMapInt64Uint16V(v map[int64]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uint16
hasLen := containerLen > 0
@@ -32919,6 +33414,7 @@ func (_ fastpathT) DecMapInt64Uint16V(v map[int64]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -32952,6 +33448,7 @@ func (_ fastpathT) DecMapInt64Uint32V(v map[int64]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uint32
hasLen := containerLen > 0
@@ -32978,6 +33475,7 @@ func (_ fastpathT) DecMapInt64Uint32V(v map[int64]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33011,6 +33509,7 @@ func (_ fastpathT) DecMapInt64Uint64V(v map[int64]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uint64
hasLen := containerLen > 0
@@ -33037,6 +33536,7 @@ func (_ fastpathT) DecMapInt64Uint64V(v map[int64]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33070,6 +33570,7 @@ func (_ fastpathT) DecMapInt64UintptrV(v map[int64]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv uintptr
hasLen := containerLen > 0
@@ -33096,6 +33597,7 @@ func (_ fastpathT) DecMapInt64UintptrV(v map[int64]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33129,6 +33631,7 @@ func (_ fastpathT) DecMapInt64IntV(v map[int64]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv int
hasLen := containerLen > 0
@@ -33155,6 +33658,7 @@ func (_ fastpathT) DecMapInt64IntV(v map[int64]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33188,6 +33692,7 @@ func (_ fastpathT) DecMapInt64Int8V(v map[int64]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv int8
hasLen := containerLen > 0
@@ -33214,6 +33719,7 @@ func (_ fastpathT) DecMapInt64Int8V(v map[int64]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33247,6 +33753,7 @@ func (_ fastpathT) DecMapInt64Int16V(v map[int64]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv int16
hasLen := containerLen > 0
@@ -33273,6 +33780,7 @@ func (_ fastpathT) DecMapInt64Int16V(v map[int64]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33306,6 +33814,7 @@ func (_ fastpathT) DecMapInt64Int32V(v map[int64]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv int32
hasLen := containerLen > 0
@@ -33332,6 +33841,7 @@ func (_ fastpathT) DecMapInt64Int32V(v map[int64]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33365,6 +33875,7 @@ func (_ fastpathT) DecMapInt64Int64V(v map[int64]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv int64
hasLen := containerLen > 0
@@ -33391,6 +33902,7 @@ func (_ fastpathT) DecMapInt64Int64V(v map[int64]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33424,6 +33936,7 @@ func (_ fastpathT) DecMapInt64Float32V(v map[int64]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv float32
hasLen := containerLen > 0
@@ -33450,6 +33963,7 @@ func (_ fastpathT) DecMapInt64Float32V(v map[int64]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33483,6 +33997,7 @@ func (_ fastpathT) DecMapInt64Float64V(v map[int64]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv float64
hasLen := containerLen > 0
@@ -33509,6 +34024,7 @@ func (_ fastpathT) DecMapInt64Float64V(v map[int64]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33542,6 +34058,7 @@ func (_ fastpathT) DecMapInt64BoolV(v map[int64]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk int64
var mv bool
hasLen := containerLen > 0
@@ -33568,6 +34085,7 @@ func (_ fastpathT) DecMapInt64BoolV(v map[int64]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33601,6 +34119,7 @@ func (_ fastpathT) DecMapBoolIntfV(v map[bool]interface{}, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
mapGet := v != nil && !d.h.MapValueReset && !d.h.InterfaceReset
var mk bool
var mv interface{}
@@ -33633,6 +34152,7 @@ func (_ fastpathT) DecMapBoolIntfV(v map[bool]interface{}, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33666,6 +34186,7 @@ func (_ fastpathT) DecMapBoolStringV(v map[bool]string, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv string
hasLen := containerLen > 0
@@ -33692,6 +34213,7 @@ func (_ fastpathT) DecMapBoolStringV(v map[bool]string, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33725,6 +34247,7 @@ func (_ fastpathT) DecMapBoolUintV(v map[bool]uint, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uint
hasLen := containerLen > 0
@@ -33751,6 +34274,7 @@ func (_ fastpathT) DecMapBoolUintV(v map[bool]uint, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33784,6 +34308,7 @@ func (_ fastpathT) DecMapBoolUint8V(v map[bool]uint8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uint8
hasLen := containerLen > 0
@@ -33810,6 +34335,7 @@ func (_ fastpathT) DecMapBoolUint8V(v map[bool]uint8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33843,6 +34369,7 @@ func (_ fastpathT) DecMapBoolUint16V(v map[bool]uint16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uint16
hasLen := containerLen > 0
@@ -33869,6 +34396,7 @@ func (_ fastpathT) DecMapBoolUint16V(v map[bool]uint16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33902,6 +34430,7 @@ func (_ fastpathT) DecMapBoolUint32V(v map[bool]uint32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uint32
hasLen := containerLen > 0
@@ -33928,6 +34457,7 @@ func (_ fastpathT) DecMapBoolUint32V(v map[bool]uint32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -33961,6 +34491,7 @@ func (_ fastpathT) DecMapBoolUint64V(v map[bool]uint64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uint64
hasLen := containerLen > 0
@@ -33987,6 +34518,7 @@ func (_ fastpathT) DecMapBoolUint64V(v map[bool]uint64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34020,6 +34552,7 @@ func (_ fastpathT) DecMapBoolUintptrV(v map[bool]uintptr, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv uintptr
hasLen := containerLen > 0
@@ -34046,6 +34579,7 @@ func (_ fastpathT) DecMapBoolUintptrV(v map[bool]uintptr, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34079,6 +34613,7 @@ func (_ fastpathT) DecMapBoolIntV(v map[bool]int, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv int
hasLen := containerLen > 0
@@ -34105,6 +34640,7 @@ func (_ fastpathT) DecMapBoolIntV(v map[bool]int, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34138,6 +34674,7 @@ func (_ fastpathT) DecMapBoolInt8V(v map[bool]int8, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv int8
hasLen := containerLen > 0
@@ -34164,6 +34701,7 @@ func (_ fastpathT) DecMapBoolInt8V(v map[bool]int8, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34197,6 +34735,7 @@ func (_ fastpathT) DecMapBoolInt16V(v map[bool]int16, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv int16
hasLen := containerLen > 0
@@ -34223,6 +34762,7 @@ func (_ fastpathT) DecMapBoolInt16V(v map[bool]int16, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34256,6 +34796,7 @@ func (_ fastpathT) DecMapBoolInt32V(v map[bool]int32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv int32
hasLen := containerLen > 0
@@ -34282,6 +34823,7 @@ func (_ fastpathT) DecMapBoolInt32V(v map[bool]int32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34315,6 +34857,7 @@ func (_ fastpathT) DecMapBoolInt64V(v map[bool]int64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv int64
hasLen := containerLen > 0
@@ -34341,6 +34884,7 @@ func (_ fastpathT) DecMapBoolInt64V(v map[bool]int64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34374,6 +34918,7 @@ func (_ fastpathT) DecMapBoolFloat32V(v map[bool]float32, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv float32
hasLen := containerLen > 0
@@ -34400,6 +34945,7 @@ func (_ fastpathT) DecMapBoolFloat32V(v map[bool]float32, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34433,6 +34979,7 @@ func (_ fastpathT) DecMapBoolFloat64V(v map[bool]float64, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv float64
hasLen := containerLen > 0
@@ -34459,6 +35006,7 @@ func (_ fastpathT) DecMapBoolFloat64V(v map[bool]float64, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
@@ -34492,6 +35040,7 @@ func (_ fastpathT) DecMapBoolBoolV(v map[bool]bool, canChange bool,
dd.ReadMapEnd()
return v, changed
}
+ d.depthIncr()
var mk bool
var mv bool
hasLen := containerLen > 0
@@ -34518,5 +35067,6 @@ func (_ fastpathT) DecMapBoolBoolV(v map[bool]bool, canChange bool,
}
}
dd.ReadMapEnd()
+ d.depthDecr()
return v, changed
}
diff --git a/vendor/github.com/ugorji/go/codec/fast-path.not.go b/vendor/github.com/ugorji/go/codec/fast-path.not.go
index f11b4674..cf97db0f 100644
--- a/vendor/github.com/ugorji/go/codec/fast-path.not.go
+++ b/vendor/github.com/ugorji/go/codec/fast-path.not.go
@@ -35,7 +35,7 @@ type fastpathA [0]fastpathE
func (x fastpathA) index(rtid uintptr) int { return -1 }
func (_ fastpathT) DecSliceUint8V(v []uint8, canChange bool, d *Decoder) (_ []uint8, changed bool) {
- fn := d.cfer().get(uint8SliceTyp, true, true)
+ fn := d.h.fn(uint8SliceTyp, true, true)
d.kSlice(&fn.i, reflect.ValueOf(&v).Elem())
return v, true
}
diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go
index 917d2828..b5155240 100644
--- a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go
+++ b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go
@@ -1,6 +1,6 @@
-/* // +build ignore */
+// comment this out // + build ignore
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
+// Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved.
// Use of this source code is governed by a MIT license found in the LICENSE file.
// Code generated from gen-helper.go.tmpl - DO NOT EDIT.
@@ -10,10 +10,11 @@ package codec
import (
"encoding"
"reflect"
+ "strconv"
)
// GenVersion is the current version of codecgen.
-const GenVersion = 8
+const GenVersion = 10
// This file is used to generate helper code for codecgen.
// The values here i.e. genHelper(En|De)coder are not to be used directly by
@@ -49,10 +50,20 @@ type genHelperEncDriver struct {
func (x genHelperEncDriver) EncodeBuiltin(rt uintptr, v interface{}) {}
func (x genHelperEncDriver) EncStructFieldKey(keyType valueType, s string) {
- encStructFieldKey(x.encDriver, keyType, s)
+ var m must
+ if keyType == valueTypeString {
+ x.encDriver.EncodeStringEnc(cUTF8, s)
+ } else if keyType == valueTypeInt {
+ x.encDriver.EncodeInt(m.Int(strconv.ParseInt(s, 10, 64)))
+ } else if keyType == valueTypeUint {
+ x.encDriver.EncodeUint(m.Uint(strconv.ParseUint(s, 10, 64)))
+ } else if keyType == valueTypeFloat {
+ x.encDriver.EncodeFloat64(m.Float(strconv.ParseFloat(s, 64)))
+ }
+ // encStructFieldKey(x.encDriver, keyType, s)
}
func (x genHelperEncDriver) EncodeSymbol(s string) {
- x.encDriver.EncodeString(cUTF8, s)
+ x.encDriver.EncodeStringEnc(cUTF8, s)
}
type genHelperDecDriver struct {
@@ -124,19 +135,19 @@ func (f genHelperEncoder) EncFallback(iv interface{}) {
// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) {
bs, fnerr := iv.MarshalText()
- f.e.marshal(bs, fnerr, false, cUTF8)
+ f.e.marshalUtf8(bs, fnerr)
}
// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) {
bs, fnerr := iv.MarshalJSON()
- f.e.marshal(bs, fnerr, true, cUTF8)
+ f.e.marshalAsis(bs, fnerr)
}
// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) {
bs, fnerr := iv.MarshalBinary()
- f.e.marshal(bs, fnerr, false, cRAW)
+ f.e.marshalRaw(bs, fnerr)
}
// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
@@ -170,6 +181,11 @@ func (f genHelperEncoder) EncExtension(v interface{}, xfFn *extTypeTagFn) {
}
// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
+func (f genHelperEncoder) WriteStr(s string) {
+ f.e.w.writestr(s)
+}
+
+// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE*
//
// Deprecated: No longer used,
// but leave in-place so that old generated files continue to work without regeneration.
diff --git a/vendor/github.com/ugorji/go/codec/gen.generated.go b/vendor/github.com/ugorji/go/codec/gen.generated.go
index 240ba9f8..8b00090a 100644
--- a/vendor/github.com/ugorji/go/codec/gen.generated.go
+++ b/vendor/github.com/ugorji/go/codec/gen.generated.go
@@ -1,6 +1,6 @@
// +build codecgen.exec
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
+// Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved.
// Use of this source code is governed by a MIT license found in the LICENSE file.
package codec
@@ -88,7 +88,7 @@ if {{var "l"}} == 0 {
} {{end}}
var {{var "j"}} int
// var {{var "dn"}} bool
- for ; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ {
+ for {{var "j"}} = 0; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ { // bounds-check-elimination
{{if not isArray}} if {{var "j"}} == 0 && {{var "v"}} == nil {
if {{var "hl"}} {
{{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }})
diff --git a/vendor/github.com/ugorji/go/codec/gen.go b/vendor/github.com/ugorji/go/codec/gen.go
index b4c4031f..115c9b46 100644
--- a/vendor/github.com/ugorji/go/codec/gen.go
+++ b/vendor/github.com/ugorji/go/codec/gen.go
@@ -41,6 +41,8 @@ import (
// However, codecgen doesn't support the following:
// - Canonical option. (codecgen IGNORES it currently)
// This is just because it has not been implemented.
+// - MissingFielder implementation.
+// If a type implements MissingFielder, it is completely ignored by codecgen.
//
// During encode/decode, Selfer takes precedence.
// A type implementing Selfer will know how to encode/decode itself statically.
@@ -102,7 +104,9 @@ import (
// v6: removed unsafe from gen, and now uses codecgen.exec tag
// v7:
// v8: current - we now maintain compatibility with old generated code.
-const genVersion = 8
+// v9: skipped
+// v10: modified encDriver and decDriver interfaces. Remove deprecated methods after Jan 1, 2019
+const genVersion = 10
const (
genCodecPkg = "codec1978"
@@ -297,7 +301,7 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, noExtensions bool,
// x.out(`panic(fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", `)
// x.linef(`%v, %sGenVersion, file))`, genVersion, x.cpfx)
x.linef("}")
- x.line("if false { // reference the types, but skip this branch at build/run time")
+ x.line("if false { var _ byte = 0; // reference the types, but skip this branch at build/run time")
// x.line("_ = strconv.ParseInt")
var n int
// for k, t := range x.im {
@@ -738,8 +742,8 @@ func (x *genRunner) enc(varname string, t reflect.Type) {
defer func() { x.line("}") }() //end if block
if t == timeTyp {
- x.linef("} else { r.EncodeTime(%s)", varname)
- return
+ x.linef("} else if !z.EncBasicHandle().TimeNotBuiltin { r.EncodeTime(%s)", varname)
+ // return
}
if t == rawTyp {
x.linef("} else { z.EncRaw(%s)", varname)
@@ -794,7 +798,7 @@ func (x *genRunner) enc(varname string, t reflect.Type) {
case reflect.Bool:
x.line("r.EncodeBool(bool(" + varname + "))")
case reflect.String:
- x.line("r.EncodeString(codecSelferCcUTF8" + x.xs + ", string(" + varname + "))")
+ x.line("r.EncodeStringEnc(codecSelferCcUTF8" + x.xs + ", string(" + varname + "))")
case reflect.Chan:
x.xtraSM(varname, t, true, false)
// x.encListFallback(varname, rtid, t)
@@ -808,7 +812,7 @@ func (x *genRunner) enc(varname string, t reflect.Type) {
// - if elements are primitives or Selfers, call dedicated function on each member.
// - else call Encoder.encode(XXX) on it.
if rtid == uint8SliceTypId {
- x.line("r.EncodeStringBytes(codecSelferCcRAW" + x.xs + ", []byte(" + varname + "))")
+ x.line("r.EncodeStringBytesRaw([]byte(" + varname + "))")
} else if fastpathAV.index(rtid) != -1 {
g := x.newGenV(t)
x.line("z.F." + g.MethodNamePfx("Enc", false) + "V(" + varname + ", e)")
@@ -858,7 +862,7 @@ func (x *genRunner) encZero(t reflect.Type) {
case reflect.Bool:
x.line("r.EncodeBool(false)")
case reflect.String:
- x.line("r.EncodeString(codecSelferCcUTF8" + x.xs + `, "")`)
+ x.line("r.EncodeStringEnc(codecSelferCcUTF8" + x.xs + `, "")`)
default:
x.line("r.EncodeNil()")
}
@@ -1047,7 +1051,7 @@ func (x *genRunner) encStruct(varname string, rtid uintptr, t reflect.Type) {
}
x.line("r.WriteMapElemKey()")
- // x.line("r.EncodeString(codecSelferCcUTF8" + x.xs + ", `" + si.encName + "`)")
+ // x.line("r.EncodeStringEnc(codecSelferCcUTF8" + x.xs + ", `" + si.encName + "`)")
// emulate EncStructFieldKey
switch ti.keyType {
case valueTypeInt:
@@ -1057,7 +1061,13 @@ func (x *genRunner) encStruct(varname string, rtid uintptr, t reflect.Type) {
case valueTypeFloat:
x.linef("r.EncodeFloat64(z.M.Float(strconv.ParseFloat(`%s`, 64)))", si.encName)
default: // string
- x.linef("r.EncodeString(codecSelferCcUTF8%s, `%s`)", x.xs, si.encName)
+ if si.encNameAsciiAlphaNum {
+ x.linef(`if z.IsJSONHandle() { z.WriteStr("\"%s\"") } else { `, si.encName)
+ }
+ x.linef("r.EncodeStringEnc(codecSelferCcUTF8%s, `%s`)", x.xs, si.encName)
+ if si.encNameAsciiAlphaNum {
+ x.linef("}")
+ }
}
// x.linef("r.EncStructFieldKey(codecSelferValueType%s%s, `%s`)", ti.keyType.String(), x.xs, si.encName)
x.line("r.WriteMapElemValue()")
@@ -1084,11 +1094,11 @@ func (x *genRunner) encStruct(varname string, rtid uintptr, t reflect.Type) {
func (x *genRunner) encListFallback(varname string, t reflect.Type) {
elemBytes := t.Elem().Kind() == reflect.Uint8
if t.AssignableTo(uint8SliceTyp) {
- x.linef("r.EncodeStringBytes(codecSelferCcRAW%s, []byte(%s))", x.xs, varname)
+ x.linef("r.EncodeStringBytesRaw([]byte(%s))", varname)
return
}
if t.Kind() == reflect.Array && elemBytes {
- x.linef("r.EncodeStringBytes(codecSelferCcRAW%s, ((*[%d]byte)(%s))[:])", x.xs, t.Len(), varname)
+ x.linef("r.EncodeStringBytesRaw(((*[%d]byte)(%s))[:])", t.Len(), varname)
return
}
i := x.varsfx()
@@ -1108,7 +1118,7 @@ func (x *genRunner) encListFallback(varname string, t reflect.Type) {
}
// x.linef("%s = sch%s", varname, i)
if elemBytes {
- x.linef("r.EncodeStringBytes(codecSelferCcRAW%s, []byte(%s))", x.xs, "sch"+i)
+ x.linef("r.EncodeStringBytesRaw([]byte(%s))", "sch"+i)
x.line("}")
return
}
@@ -1324,8 +1334,8 @@ func (x *genRunner) dec(varname string, t reflect.Type, isptr bool) {
addrPfx = "&"
}
if t == timeTyp {
- x.linef("} else { %s%v = r.DecodeTime()", ptrPfx, varname)
- return
+ x.linef("} else if !z.DecBasicHandle().TimeNotBuiltin { %s%v = r.DecodeTime()", ptrPfx, varname)
+ // return
}
if t == rawTyp {
x.linef("} else { %s%v = z.DecRaw()", ptrPfx, varname)
@@ -1927,7 +1937,7 @@ func genInternalEncCommandAsString(s string, vname string) string {
case "int", "int8", "int16", "int32", "int64":
return "ee.EncodeInt(int64(" + vname + "))"
case "string":
- return "ee.EncodeString(cUTF8, " + vname + ")"
+ return "ee.EncodeStringEnc(cUTF8, " + vname + ")"
case "float32":
return "ee.EncodeFloat32(" + vname + ")"
case "float64":
diff --git a/vendor/github.com/ugorji/go/codec/helper.go b/vendor/github.com/ugorji/go/codec/helper.go
index bd29895b..adc3b7b0 100644
--- a/vendor/github.com/ugorji/go/codec/helper.go
+++ b/vendor/github.com/ugorji/go/codec/helper.go
@@ -109,6 +109,7 @@ import (
"strconv"
"strings"
"sync"
+ "sync/atomic"
"time"
)
@@ -135,15 +136,29 @@ const (
wordSizeBits = 32 << (^uint(0) >> 63) // strconv.IntSize
wordSize = wordSizeBits / 8
- maxLevelsEmbedding = 15 // use this, so structFieldInfo fits into 8 bytes
-)
+ // so structFieldInfo fits into 8 bytes
+ maxLevelsEmbedding = 14
-var (
- oneByteArr = [1]byte{0}
- zeroByteSlice = oneByteArr[:0:0]
+ // useFinalizers=true configures finalizers to release pool'ed resources
+ // acquired by Encoder/Decoder during their GC.
+ //
+ // Note that calling SetFinalizer is always expensive,
+ // as code must be run on the systemstack even for SetFinalizer(t, nil).
+ //
+ // We document that folks SHOULD call Release() when done, or they can
+ // explicitly call SetFinalizer themselves e.g.
+ // runtime.SetFinalizer(e, (*Encoder).Release)
+ // runtime.SetFinalizer(d, (*Decoder).Release)
+ useFinalizers = false
+ removeFinalizerOnRelease = false
)
-var refBitset bitset32
+var oneByteArr [1]byte
+var zeroByteSlice = oneByteArr[:0:0]
+
+var codecgen bool
+
+var refBitset bitset256
var pool pooler
var panicv panicHdl
@@ -156,15 +171,31 @@ func init() {
refBitset.set(byte(reflect.Chan))
}
+type clsErr struct {
+ closed bool // is it closed?
+ errClosed error // error on closing
+}
+
+// type entryType uint8
+
+// const (
+// entryTypeBytes entryType = iota // make this 0, so a comparison is cheap
+// entryTypeIo
+// entryTypeBufio
+// entryTypeUnset = 255
+// )
+
type charEncoding uint8
const (
- cRAW charEncoding = iota
+ _ charEncoding = iota // make 0 unset
cUTF8
cUTF16LE
cUTF16BE
cUTF32LE
cUTF32BE
+ // Deprecated: not a true char encoding value
+ cRAW charEncoding = 255
)
// valueType is the stream type
@@ -293,6 +324,30 @@ type isZeroer interface {
IsZero() bool
}
+type codecError struct {
+ name string
+ err interface{}
+}
+
+func (e codecError) Cause() error {
+ switch xerr := e.err.(type) {
+ case nil:
+ return nil
+ case error:
+ return xerr
+ case string:
+ return errors.New(xerr)
+ case fmt.Stringer:
+ return errors.New(xerr.String())
+ default:
+ return fmt.Errorf("%v", e.err)
+ }
+}
+
+func (e codecError) Error() string {
+ return fmt.Sprintf("%s error: %v", e.name, e.err)
+}
+
// type byteAccepter func(byte) bool
var (
@@ -327,8 +382,9 @@ var (
jsonMarshalerTyp = reflect.TypeOf((*jsonMarshaler)(nil)).Elem()
jsonUnmarshalerTyp = reflect.TypeOf((*jsonUnmarshaler)(nil)).Elem()
- selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem()
- iszeroTyp = reflect.TypeOf((*isZeroer)(nil)).Elem()
+ selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem()
+ missingFielderTyp = reflect.TypeOf((*MissingFielder)(nil)).Elem()
+ iszeroTyp = reflect.TypeOf((*isZeroer)(nil)).Elem()
uint8TypId = rt2id(uint8Typ)
uint8SliceTypId = rt2id(uint8SliceTyp)
@@ -346,7 +402,7 @@ var (
intBitsize = uint8(intTyp.Bits())
uintBitsize = uint8(uintTyp.Bits())
- bsAll0x00 = []byte{0, 0, 0, 0, 0, 0, 0, 0}
+ // bsAll0x00 = []byte{0, 0, 0, 0, 0, 0, 0, 0}
bsAll0xff = []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
chkOvf checkOverflow
@@ -392,6 +448,13 @@ var immutableKindsSet = [32]bool{
// Consequently, during (en|de)code, this takes precedence over
// (text|binary)(M|Unm)arshal or extension support.
//
+// By definition, it is not allowed for a Selfer to directly call Encode or Decode on itself.
+// If that is done, Encode/Decode will rightfully fail with a Stack Overflow style error.
+// For example, the snippet below will cause such an error.
+// type testSelferRecur struct{}
+// func (s *testSelferRecur) CodecEncodeSelf(e *Encoder) { e.MustEncode(s) }
+// func (s *testSelferRecur) CodecDecodeSelf(d *Decoder) { d.MustDecode(s) }
+//
// Note: *the first set of bytes of any value MUST NOT represent nil in the format*.
// This is because, during each decode, we first check the the next set of bytes
// represent nil, and if so, we just set the value to nil.
@@ -400,6 +463,25 @@ type Selfer interface {
CodecDecodeSelf(*Decoder)
}
+// MissingFielder defines the interface allowing structs to internally decode or encode
+// values which do not map to struct fields.
+//
+// We expect that this interface is bound to a pointer type (so the mutation function works).
+//
+// A use-case is if a version of a type unexports a field, but you want compatibility between
+// both versions during encoding and decoding.
+//
+// Note that the interface is completely ignored during codecgen.
+type MissingFielder interface {
+ // CodecMissingField is called to set a missing field and value pair.
+ //
+ // It returns true if the missing field was set on the struct.
+ CodecMissingField(field []byte, value interface{}) bool
+
+ // CodecMissingFields returns the set of fields which are not struct fields
+ CodecMissingFields() map[string]interface{}
+}
+
// MapBySlice is a tag interface that denotes wrapped slice should encode as a map in the stream.
// The slice contains a sequence of key-value pairs.
// This affords storing a map in a specific sequence in the stream.
@@ -441,8 +523,48 @@ type BasicHandle struct {
intf2impls
+ inited uint32
+ _ uint32 // padding
+
+ // ---- cache line
+
RPCOptions
+ // TimeNotBuiltin configures whether time.Time should be treated as a builtin type.
+ //
+ // All Handlers should know how to encode/decode time.Time as part of the core
+ // format specification, or as a standard extension defined by the format.
+ //
+ // However, users can elect to handle time.Time as a custom extension, or via the
+ // standard library's encoding.Binary(M|Unm)arshaler or Text(M|Unm)arshaler interface.
+ // To elect this behavior, users can set TimeNotBuiltin=true.
+ // Note: Setting TimeNotBuiltin=true can be used to enable the legacy behavior
+ // (for Cbor and Msgpack), where time.Time was not a builtin supported type.
+ TimeNotBuiltin bool
+
+ // ExplicitRelease configures whether Release() is implicitly called after an encode or
+ // decode call.
+ //
+ // If you will hold onto an Encoder or Decoder for re-use, by calling Reset(...)
+ // on it or calling (Must)Encode repeatedly into a given []byte or io.Writer,
+ // then you do not want it to be implicitly closed after each Encode/Decode call.
+ // Doing so will unnecessarily return resources to the shared pool, only for you to
+ // grab them right after again to do another Encode/Decode call.
+ //
+ // Instead, you configure ExplicitRelease=true, and you explicitly call Release() when
+ // you are truly done.
+ //
+ // As an alternative, you can explicitly set a finalizer - so its resources
+ // are returned to the shared pool before it is garbage-collected. Do it as below:
+ // runtime.SetFinalizer(e, (*Encoder).Release)
+ // runtime.SetFinalizer(d, (*Decoder).Release)
+ ExplicitRelease bool
+
+ be bool // is handle a binary encoding?
+ js bool // is handle javascript handler?
+ n byte // first letter of handle name
+ _ uint16 // padding
+
// ---- cache line
DecodeOptions
@@ -452,6 +574,21 @@ type BasicHandle struct {
EncodeOptions
// noBuiltInTypeChecker
+
+ rtidFns atomicRtidFnSlice
+ mu sync.Mutex
+ // r []uintptr // rtids mapped to s above
+}
+
+// basicHandle returns an initialized BasicHandle from the Handle.
+func basicHandle(hh Handle) (x *BasicHandle) {
+ x = hh.getBasicHandle()
+ if atomic.CompareAndSwapUint32(&x.inited, 0, 1) {
+ x.be = hh.isBinary()
+ _, x.js = hh.(*JsonHandle)
+ x.n = hh.Name()[0]
+ }
+ return
}
func (x *BasicHandle) getBasicHandle() *BasicHandle {
@@ -465,13 +602,260 @@ func (x *BasicHandle) getTypeInfo(rtid uintptr, rt reflect.Type) (pti *typeInfo)
return x.TypeInfos.get(rtid, rt)
}
-// Handle is the interface for a specific encoding format.
+func findFn(s []codecRtidFn, rtid uintptr) (i uint, fn *codecFn) {
+ // binary search. adapted from sort/search.go.
+ // Note: we use goto (instead of for loop) so this can be inlined.
+
+ // h, i, j := 0, 0, len(s)
+ var h uint // var h, i uint
+ var j = uint(len(s))
+LOOP:
+ if i < j {
+ h = i + (j-i)/2
+ if s[h].rtid < rtid {
+ i = h + 1
+ } else {
+ j = h
+ }
+ goto LOOP
+ }
+ if i < uint(len(s)) && s[i].rtid == rtid {
+ fn = s[i].fn
+ }
+ return
+}
+
+func (x *BasicHandle) fn(rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *codecFn) {
+ rtid := rt2id(rt)
+ sp := x.rtidFns.load()
+ if sp != nil {
+ if _, fn = findFn(sp, rtid); fn != nil {
+ // xdebugf("<<<< %c: found fn for %v in rtidfns of size: %v", c.n, rt, len(sp))
+ return
+ }
+ }
+ c := x
+ // xdebugf("#### for %c: load fn for %v in rtidfns of size: %v", c.n, rt, len(sp))
+ fn = new(codecFn)
+ fi := &(fn.i)
+ ti := c.getTypeInfo(rtid, rt)
+ fi.ti = ti
+
+ rk := reflect.Kind(ti.kind)
+
+ if checkCodecSelfer && (ti.cs || ti.csp) {
+ fn.fe = (*Encoder).selferMarshal
+ fn.fd = (*Decoder).selferUnmarshal
+ fi.addrF = true
+ fi.addrD = ti.csp
+ fi.addrE = ti.csp
+ } else if rtid == timeTypId && !c.TimeNotBuiltin {
+ fn.fe = (*Encoder).kTime
+ fn.fd = (*Decoder).kTime
+ } else if rtid == rawTypId {
+ fn.fe = (*Encoder).raw
+ fn.fd = (*Decoder).raw
+ } else if rtid == rawExtTypId {
+ fn.fe = (*Encoder).rawExt
+ fn.fd = (*Decoder).rawExt
+ fi.addrF = true
+ fi.addrD = true
+ fi.addrE = true
+ } else if xfFn := c.getExt(rtid); xfFn != nil {
+ fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext
+ fn.fe = (*Encoder).ext
+ fn.fd = (*Decoder).ext
+ fi.addrF = true
+ fi.addrD = true
+ if rk == reflect.Struct || rk == reflect.Array {
+ fi.addrE = true
+ }
+ } else if supportMarshalInterfaces && c.be && (ti.bm || ti.bmp) && (ti.bu || ti.bup) {
+ fn.fe = (*Encoder).binaryMarshal
+ fn.fd = (*Decoder).binaryUnmarshal
+ fi.addrF = true
+ fi.addrD = ti.bup
+ fi.addrE = ti.bmp
+ } else if supportMarshalInterfaces && !c.be && c.js && (ti.jm || ti.jmp) && (ti.ju || ti.jup) {
+ //If JSON, we should check JSONMarshal before textMarshal
+ fn.fe = (*Encoder).jsonMarshal
+ fn.fd = (*Decoder).jsonUnmarshal
+ fi.addrF = true
+ fi.addrD = ti.jup
+ fi.addrE = ti.jmp
+ } else if supportMarshalInterfaces && !c.be && (ti.tm || ti.tmp) && (ti.tu || ti.tup) {
+ fn.fe = (*Encoder).textMarshal
+ fn.fd = (*Decoder).textUnmarshal
+ fi.addrF = true
+ fi.addrD = ti.tup
+ fi.addrE = ti.tmp
+ } else {
+ if fastpathEnabled && checkFastpath && (rk == reflect.Map || rk == reflect.Slice) {
+ if ti.pkgpath == "" { // un-named slice or map
+ if idx := fastpathAV.index(rtid); idx != -1 {
+ fn.fe = fastpathAV[idx].encfn
+ fn.fd = fastpathAV[idx].decfn
+ fi.addrD = true
+ fi.addrF = false
+ }
+ } else {
+ // use mapping for underlying type if there
+ var rtu reflect.Type
+ if rk == reflect.Map {
+ rtu = reflect.MapOf(ti.key, ti.elem)
+ } else {
+ rtu = reflect.SliceOf(ti.elem)
+ }
+ rtuid := rt2id(rtu)
+ if idx := fastpathAV.index(rtuid); idx != -1 {
+ xfnf := fastpathAV[idx].encfn
+ xrt := fastpathAV[idx].rt
+ fn.fe = func(e *Encoder, xf *codecFnInfo, xrv reflect.Value) {
+ xfnf(e, xf, xrv.Convert(xrt))
+ }
+ fi.addrD = true
+ fi.addrF = false // meaning it can be an address(ptr) or a value
+ xfnf2 := fastpathAV[idx].decfn
+ fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) {
+ if xrv.Kind() == reflect.Ptr {
+ xfnf2(d, xf, xrv.Convert(reflect.PtrTo(xrt)))
+ } else {
+ xfnf2(d, xf, xrv.Convert(xrt))
+ }
+ }
+ }
+ }
+ }
+ if fn.fe == nil && fn.fd == nil {
+ switch rk {
+ case reflect.Bool:
+ fn.fe = (*Encoder).kBool
+ fn.fd = (*Decoder).kBool
+ case reflect.String:
+ fn.fe = (*Encoder).kString
+ fn.fd = (*Decoder).kString
+ case reflect.Int:
+ fn.fd = (*Decoder).kInt
+ fn.fe = (*Encoder).kInt
+ case reflect.Int8:
+ fn.fe = (*Encoder).kInt8
+ fn.fd = (*Decoder).kInt8
+ case reflect.Int16:
+ fn.fe = (*Encoder).kInt16
+ fn.fd = (*Decoder).kInt16
+ case reflect.Int32:
+ fn.fe = (*Encoder).kInt32
+ fn.fd = (*Decoder).kInt32
+ case reflect.Int64:
+ fn.fe = (*Encoder).kInt64
+ fn.fd = (*Decoder).kInt64
+ case reflect.Uint:
+ fn.fd = (*Decoder).kUint
+ fn.fe = (*Encoder).kUint
+ case reflect.Uint8:
+ fn.fe = (*Encoder).kUint8
+ fn.fd = (*Decoder).kUint8
+ case reflect.Uint16:
+ fn.fe = (*Encoder).kUint16
+ fn.fd = (*Decoder).kUint16
+ case reflect.Uint32:
+ fn.fe = (*Encoder).kUint32
+ fn.fd = (*Decoder).kUint32
+ case reflect.Uint64:
+ fn.fe = (*Encoder).kUint64
+ fn.fd = (*Decoder).kUint64
+ case reflect.Uintptr:
+ fn.fe = (*Encoder).kUintptr
+ fn.fd = (*Decoder).kUintptr
+ case reflect.Float32:
+ fn.fe = (*Encoder).kFloat32
+ fn.fd = (*Decoder).kFloat32
+ case reflect.Float64:
+ fn.fe = (*Encoder).kFloat64
+ fn.fd = (*Decoder).kFloat64
+ case reflect.Invalid:
+ fn.fe = (*Encoder).kInvalid
+ fn.fd = (*Decoder).kErr
+ case reflect.Chan:
+ fi.seq = seqTypeChan
+ fn.fe = (*Encoder).kSlice
+ fn.fd = (*Decoder).kSlice
+ case reflect.Slice:
+ fi.seq = seqTypeSlice
+ fn.fe = (*Encoder).kSlice
+ fn.fd = (*Decoder).kSlice
+ case reflect.Array:
+ fi.seq = seqTypeArray
+ fn.fe = (*Encoder).kSlice
+ fi.addrF = false
+ fi.addrD = false
+ rt2 := reflect.SliceOf(ti.elem)
+ fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) {
+ d.h.fn(rt2, true, false).fd(d, xf, xrv.Slice(0, xrv.Len()))
+ }
+ // fn.fd = (*Decoder).kArray
+ case reflect.Struct:
+ if ti.anyOmitEmpty || ti.mf || ti.mfp {
+ fn.fe = (*Encoder).kStruct
+ } else {
+ fn.fe = (*Encoder).kStructNoOmitempty
+ }
+ fn.fd = (*Decoder).kStruct
+ case reflect.Map:
+ fn.fe = (*Encoder).kMap
+ fn.fd = (*Decoder).kMap
+ case reflect.Interface:
+ // encode: reflect.Interface are handled already by preEncodeValue
+ fn.fd = (*Decoder).kInterface
+ fn.fe = (*Encoder).kErr
+ default:
+ // reflect.Ptr and reflect.Interface are handled already by preEncodeValue
+ fn.fe = (*Encoder).kErr
+ fn.fd = (*Decoder).kErr
+ }
+ }
+ }
+
+ c.mu.Lock()
+ var sp2 []codecRtidFn
+ sp = c.rtidFns.load()
+ if sp == nil {
+ sp2 = []codecRtidFn{{rtid, fn}}
+ c.rtidFns.store(sp2)
+ // xdebugf(">>>> adding rt: %v to rtidfns of size: %v", rt, len(sp2))
+ // xdebugf(">>>> loading stored rtidfns of size: %v", len(c.rtidFns.load()))
+ } else {
+ idx, fn2 := findFn(sp, rtid)
+ if fn2 == nil {
+ sp2 = make([]codecRtidFn, len(sp)+1)
+ copy(sp2, sp[:idx])
+ copy(sp2[idx+1:], sp[idx:])
+ sp2[idx] = codecRtidFn{rtid, fn}
+ c.rtidFns.store(sp2)
+ // xdebugf(">>>> adding rt: %v to rtidfns of size: %v", rt, len(sp2))
+
+ }
+ }
+ c.mu.Unlock()
+ return
+}
+
+// Handle defines a specific encoding format. It also stores any runtime state
+// used during an Encoding or Decoding session e.g. stored state about Types, etc.
+//
+// Once a handle is configured, it can be shared across multiple Encoders and Decoders.
//
-// Typically, a Handle is pre-configured before first time use,
-// and not modified while in use. Such a pre-configured Handle
-// is safe for concurrent access.
+// Note that a Handle is NOT safe for concurrent modification.
+// Consequently, do not modify it after it is configured if shared among
+// multiple Encoders and Decoders in different goroutines.
+//
+// Consequently, the typical usage model is that a Handle is pre-configured
+// before first time use, and not modified while in use.
+// Such a pre-configured Handle is safe for concurrent access.
type Handle interface {
Name() string
+ // return the basic handle. It may not have been inited.
+ // Prefer to use basicHandle() helper function that ensures it has been inited.
getBasicHandle() *BasicHandle
recreateEncDriver(encDriver) bool
newEncDriver(w *Encoder) encDriver
@@ -628,7 +1012,7 @@ func (noElemSeparators) recreateEncDriver(e encDriver) (v bool) { return }
// Users must already slice the x completely, because we will not reslice.
type bigenHelper struct {
x []byte // must be correctly sliced to appropriate len. slicing is a cost.
- w encWriter
+ w *encWriterSwitch
}
func (z bigenHelper) writeUint16(v uint16) {
@@ -814,7 +1198,10 @@ type structFieldInfo struct {
is [maxLevelsEmbedding]uint16 // (recursive/embedded) field index in struct
nis uint8 // num levels of embedding. if 1, then it's not embedded.
+
+ encNameAsciiAlphaNum bool // the encName only contains ascii alphabet and numbers
structFieldInfoFlag
+ _ [1]byte // padding
}
func (si *structFieldInfo) setToZeroValue(v reflect.Value) {
@@ -901,17 +1288,9 @@ func (si *structFieldInfo) parseTag(stag string) {
type sfiSortedByEncName []*structFieldInfo
-func (p sfiSortedByEncName) Len() int {
- return len(p)
-}
-
-func (p sfiSortedByEncName) Less(i, j int) bool {
- return p[i].encName < p[j].encName
-}
-
-func (p sfiSortedByEncName) Swap(i, j int) {
- p[i], p[j] = p[j], p[i]
-}
+func (p sfiSortedByEncName) Len() int { return len(p) }
+func (p sfiSortedByEncName) Less(i, j int) bool { return p[uint(i)].encName < p[uint(j)].encName }
+func (p sfiSortedByEncName) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
const structFieldNodeNumToCache = 4
@@ -1063,12 +1442,15 @@ type typeInfo struct {
jup bool // *T is a jsonUnmarshaler
cs bool // T is a Selfer
csp bool // *T is a Selfer
+ mf bool // T is a MissingFielder
+ mfp bool // *T is a MissingFielder
// other flags, with individual bits representing if set.
- flags typeInfoFlag
+ flags typeInfoFlag
+ infoFieldOmitempty bool
- // _ [2]byte // padding
- _ [3]uint64 // padding
+ _ [6]byte // padding
+ _ [2]uint64 // padding
}
func (ti *typeInfo) isFlag(f typeInfoFlag) bool {
@@ -1078,7 +1460,7 @@ func (ti *typeInfo) isFlag(f typeInfoFlag) bool {
func (ti *typeInfo) indexForEncName(name []byte) (index int16) {
var sn []byte
if len(name)+2 <= 32 {
- var buf [32]byte // should not escape
+ var buf [32]byte // should not escape to heap
sn = buf[:len(name)+2]
} else {
sn = make([]byte, len(name)+2)
@@ -1130,32 +1512,38 @@ func (x *TypeInfos) structTag(t reflect.StructTag) (s string) {
return
}
-func (x *TypeInfos) find(s []rtid2ti, rtid uintptr) (idx int, ti *typeInfo) {
+func findTypeInfo(s []rtid2ti, rtid uintptr) (i uint, ti *typeInfo) {
// binary search. adapted from sort/search.go.
+ // Note: we use goto (instead of for loop) so this can be inlined.
+
// if sp == nil {
// return -1, nil
// }
// s := *sp
- h, i, j := 0, 0, len(s)
- for i < j {
+
+ // h, i, j := 0, 0, len(s)
+ var h uint // var h, i uint
+ var j = uint(len(s))
+LOOP:
+ if i < j {
h = i + (j-i)/2
if s[h].rtid < rtid {
i = h + 1
} else {
j = h
}
+ goto LOOP
}
- if i < len(s) && s[i].rtid == rtid {
- return i, s[i].ti
+ if i < uint(len(s)) && s[i].rtid == rtid {
+ ti = s[i].ti
}
- return i, nil
+ return
}
func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) {
sp := x.infos.load()
- var idx int
if sp != nil {
- idx, pti = x.find(sp, rtid)
+ _, pti = findTypeInfo(sp, rtid)
if pti != nil {
return
}
@@ -1169,7 +1557,13 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) {
// do not hold lock while computing this.
// it may lead to duplication, but that's ok.
- ti := typeInfo{rt: rt, rtid: rtid, kind: uint8(rk), pkgpath: rt.PkgPath()}
+ ti := typeInfo{
+ rt: rt,
+ rtid: rtid,
+ kind: uint8(rk),
+ pkgpath: rt.PkgPath(),
+ keyType: valueTypeString, // default it - so it's never 0
+ }
// ti.rv0 = reflect.Zero(rt)
// ti.comparable = rt.Comparable()
@@ -1182,6 +1576,7 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) {
ti.jm, ti.jmp = implIntf(rt, jsonMarshalerTyp)
ti.ju, ti.jup = implIntf(rt, jsonUnmarshalerTyp)
ti.cs, ti.csp = implIntf(rt, selferTyp)
+ ti.mf, ti.mfp = implIntf(rt, missingFielderTyp)
b1, b2 := implIntf(rt, iszeroTyp)
if b1 {
@@ -1199,10 +1594,11 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) {
var omitEmpty bool
if f, ok := rt.FieldByName(structInfoFieldName); ok {
ti.toArray, omitEmpty, ti.keyType = parseStructInfo(x.structTag(f.Tag))
+ ti.infoFieldOmitempty = omitEmpty
} else {
ti.keyType = valueTypeString
}
- pp, pi := pool.tiLoad()
+ pp, pi := &pool.tiload, pool.tiload.Get() // pool.tiLoad()
pv := pi.(*typeInfoLoadArray)
pv.etypes[0] = ti.rtid
// vv := typeInfoLoad{pv.fNames[:0], pv.encNames[:0], pv.etypes[:1], pv.sfis[:0]}
@@ -1227,19 +1623,21 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) {
x.mu.Lock()
sp = x.infos.load()
+ var sp2 []rtid2ti
if sp == nil {
pti = &ti
- vs := []rtid2ti{{rtid, pti}}
- x.infos.store(vs)
+ sp2 = []rtid2ti{{rtid, pti}}
+ x.infos.store(sp2)
} else {
- idx, pti = x.find(sp, rtid)
+ var idx uint
+ idx, pti = findTypeInfo(sp, rtid)
if pti == nil {
pti = &ti
- vs := make([]rtid2ti, len(sp)+1)
- copy(vs, sp[:idx])
- copy(vs[idx+1:], sp[idx:])
- vs[idx] = rtid2ti{rtid, pti}
- x.infos.store(vs)
+ sp2 = make([]rtid2ti, len(sp)+1)
+ copy(sp2, sp[:idx])
+ copy(sp2[idx+1:], sp[idx:])
+ sp2[idx] = rtid2ti{rtid, pti}
+ x.infos.store(sp2)
}
}
x.mu.Unlock()
@@ -1356,6 +1754,15 @@ LOOP:
} else if si.encName == "" {
si.encName = f.Name
}
+ si.encNameAsciiAlphaNum = true
+ for i := len(si.encName) - 1; i >= 0; i-- { // bounds-check elimination
+ b := si.encName[i]
+ if (b >= '0' && b <= '9') || (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') {
+ continue
+ }
+ si.encNameAsciiAlphaNum = false
+ break
+ }
si.fieldName = f.Name
si.flagSet(structFieldInfoFlagReady)
@@ -1546,7 +1953,7 @@ func isEmptyStruct(v reflect.Value, tinfos *TypeInfos, deref, checkStruct bool)
// return t
// }
-func panicToErr(h errstrDecorator, err *error) {
+func panicToErr(h errDecorator, err *error) {
// Note: This method MUST be called directly from defer i.e. defer panicToErr ...
// else it seems the recover is not fully handled
if recoverPanicToErr {
@@ -1558,7 +1965,7 @@ func panicToErr(h errstrDecorator, err *error) {
}
}
-func panicValToErr(h errstrDecorator, v interface{}, err *error) {
+func panicValToErr(h errDecorator, v interface{}, err *error) {
switch xerr := v.(type) {
case nil:
case error:
@@ -1568,23 +1975,25 @@ func panicValToErr(h errstrDecorator, v interface{}, err *error) {
// treat as special (bubble up)
*err = xerr
default:
- h.wrapErrstr(xerr.Error(), err)
+ h.wrapErr(xerr, err)
}
case string:
if xerr != "" {
- h.wrapErrstr(xerr, err)
+ h.wrapErr(xerr, err)
}
case fmt.Stringer:
if xerr != nil {
- h.wrapErrstr(xerr.String(), err)
+ h.wrapErr(xerr, err)
}
default:
- h.wrapErrstr(v, err)
+ h.wrapErr(v, err)
}
}
func isImmutableKind(k reflect.Kind) (v bool) {
- return immutableKindsSet[k]
+ // return immutableKindsSet[k]
+ // since we know reflect.Kind is in range 0..31, then use the k%32 == k constraint
+ return immutableKindsSet[k%reflect.Kind(len(immutableKindsSet))] // bounds-check-elimination
}
// ----
@@ -1597,7 +2006,6 @@ type codecFnInfo struct {
addrD bool
addrF bool // if addrD, this says whether decode function can take a value or a ptr
addrE bool
- ready bool // ready to use
}
// codecFn encapsulates the captured variables and the encode function.
@@ -1616,267 +2024,6 @@ type codecRtidFn struct {
fn *codecFn
}
-type codecFner struct {
- // hh Handle
- h *BasicHandle
- s []codecRtidFn
- be bool
- js bool
- _ [6]byte // padding
- _ [3]uint64 // padding
-}
-
-func (c *codecFner) reset(hh Handle) {
- bh := hh.getBasicHandle()
- // only reset iff extensions changed or *TypeInfos changed
- var hhSame = true &&
- c.h == bh && c.h.TypeInfos == bh.TypeInfos &&
- len(c.h.extHandle) == len(bh.extHandle) &&
- (len(c.h.extHandle) == 0 || &c.h.extHandle[0] == &bh.extHandle[0])
- if !hhSame {
- // c.hh = hh
- c.h, bh = bh, c.h // swap both
- _, c.js = hh.(*JsonHandle)
- c.be = hh.isBinary()
- for i := range c.s {
- c.s[i].fn.i.ready = false
- }
- }
-}
-
-func (c *codecFner) get(rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *codecFn) {
- rtid := rt2id(rt)
-
- for _, x := range c.s {
- if x.rtid == rtid {
- // if rtid exists, then there's a *codenFn attached (non-nil)
- fn = x.fn
- if fn.i.ready {
- return
- }
- break
- }
- }
- var ti *typeInfo
- if fn == nil {
- fn = new(codecFn)
- if c.s == nil {
- c.s = make([]codecRtidFn, 0, 8)
- }
- c.s = append(c.s, codecRtidFn{rtid, fn})
- } else {
- ti = fn.i.ti
- *fn = codecFn{}
- fn.i.ti = ti
- // fn.fe, fn.fd = nil, nil
- }
- fi := &(fn.i)
- fi.ready = true
- if ti == nil {
- ti = c.h.getTypeInfo(rtid, rt)
- fi.ti = ti
- }
-
- rk := reflect.Kind(ti.kind)
-
- if checkCodecSelfer && (ti.cs || ti.csp) {
- fn.fe = (*Encoder).selferMarshal
- fn.fd = (*Decoder).selferUnmarshal
- fi.addrF = true
- fi.addrD = ti.csp
- fi.addrE = ti.csp
- } else if rtid == timeTypId {
- fn.fe = (*Encoder).kTime
- fn.fd = (*Decoder).kTime
- } else if rtid == rawTypId {
- fn.fe = (*Encoder).raw
- fn.fd = (*Decoder).raw
- } else if rtid == rawExtTypId {
- fn.fe = (*Encoder).rawExt
- fn.fd = (*Decoder).rawExt
- fi.addrF = true
- fi.addrD = true
- fi.addrE = true
- } else if xfFn := c.h.getExt(rtid); xfFn != nil {
- fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext
- fn.fe = (*Encoder).ext
- fn.fd = (*Decoder).ext
- fi.addrF = true
- fi.addrD = true
- if rk == reflect.Struct || rk == reflect.Array {
- fi.addrE = true
- }
- } else if supportMarshalInterfaces && c.be && (ti.bm || ti.bmp) && (ti.bu || ti.bup) {
- fn.fe = (*Encoder).binaryMarshal
- fn.fd = (*Decoder).binaryUnmarshal
- fi.addrF = true
- fi.addrD = ti.bup
- fi.addrE = ti.bmp
- } else if supportMarshalInterfaces && !c.be && c.js && (ti.jm || ti.jmp) && (ti.ju || ti.jup) {
- //If JSON, we should check JSONMarshal before textMarshal
- fn.fe = (*Encoder).jsonMarshal
- fn.fd = (*Decoder).jsonUnmarshal
- fi.addrF = true
- fi.addrD = ti.jup
- fi.addrE = ti.jmp
- } else if supportMarshalInterfaces && !c.be && (ti.tm || ti.tmp) && (ti.tu || ti.tup) {
- fn.fe = (*Encoder).textMarshal
- fn.fd = (*Decoder).textUnmarshal
- fi.addrF = true
- fi.addrD = ti.tup
- fi.addrE = ti.tmp
- } else {
- if fastpathEnabled && checkFastpath && (rk == reflect.Map || rk == reflect.Slice) {
- if ti.pkgpath == "" { // un-named slice or map
- if idx := fastpathAV.index(rtid); idx != -1 {
- fn.fe = fastpathAV[idx].encfn
- fn.fd = fastpathAV[idx].decfn
- fi.addrD = true
- fi.addrF = false
- }
- } else {
- // use mapping for underlying type if there
- var rtu reflect.Type
- if rk == reflect.Map {
- rtu = reflect.MapOf(ti.key, ti.elem)
- } else {
- rtu = reflect.SliceOf(ti.elem)
- }
- rtuid := rt2id(rtu)
- if idx := fastpathAV.index(rtuid); idx != -1 {
- xfnf := fastpathAV[idx].encfn
- xrt := fastpathAV[idx].rt
- fn.fe = func(e *Encoder, xf *codecFnInfo, xrv reflect.Value) {
- xfnf(e, xf, xrv.Convert(xrt))
- }
- fi.addrD = true
- fi.addrF = false // meaning it can be an address(ptr) or a value
- xfnf2 := fastpathAV[idx].decfn
- fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) {
- if xrv.Kind() == reflect.Ptr {
- xfnf2(d, xf, xrv.Convert(reflect.PtrTo(xrt)))
- } else {
- xfnf2(d, xf, xrv.Convert(xrt))
- }
- }
- }
- }
- }
- if fn.fe == nil && fn.fd == nil {
- switch rk {
- case reflect.Bool:
- fn.fe = (*Encoder).kBool
- fn.fd = (*Decoder).kBool
- case reflect.String:
- fn.fe = (*Encoder).kString
- fn.fd = (*Decoder).kString
- case reflect.Int:
- fn.fd = (*Decoder).kInt
- fn.fe = (*Encoder).kInt
- case reflect.Int8:
- fn.fe = (*Encoder).kInt8
- fn.fd = (*Decoder).kInt8
- case reflect.Int16:
- fn.fe = (*Encoder).kInt16
- fn.fd = (*Decoder).kInt16
- case reflect.Int32:
- fn.fe = (*Encoder).kInt32
- fn.fd = (*Decoder).kInt32
- case reflect.Int64:
- fn.fe = (*Encoder).kInt64
- fn.fd = (*Decoder).kInt64
- case reflect.Uint:
- fn.fd = (*Decoder).kUint
- fn.fe = (*Encoder).kUint
- case reflect.Uint8:
- fn.fe = (*Encoder).kUint8
- fn.fd = (*Decoder).kUint8
- case reflect.Uint16:
- fn.fe = (*Encoder).kUint16
- fn.fd = (*Decoder).kUint16
- case reflect.Uint32:
- fn.fe = (*Encoder).kUint32
- fn.fd = (*Decoder).kUint32
- case reflect.Uint64:
- fn.fe = (*Encoder).kUint64
- fn.fd = (*Decoder).kUint64
- case reflect.Uintptr:
- fn.fe = (*Encoder).kUintptr
- fn.fd = (*Decoder).kUintptr
- case reflect.Float32:
- fn.fe = (*Encoder).kFloat32
- fn.fd = (*Decoder).kFloat32
- case reflect.Float64:
- fn.fe = (*Encoder).kFloat64
- fn.fd = (*Decoder).kFloat64
- case reflect.Invalid:
- fn.fe = (*Encoder).kInvalid
- fn.fd = (*Decoder).kErr
- case reflect.Chan:
- fi.seq = seqTypeChan
- fn.fe = (*Encoder).kSlice
- fn.fd = (*Decoder).kSlice
- case reflect.Slice:
- fi.seq = seqTypeSlice
- fn.fe = (*Encoder).kSlice
- fn.fd = (*Decoder).kSlice
- case reflect.Array:
- fi.seq = seqTypeArray
- fn.fe = (*Encoder).kSlice
- fi.addrF = false
- fi.addrD = false
- rt2 := reflect.SliceOf(ti.elem)
- fn.fd = func(d *Decoder, xf *codecFnInfo, xrv reflect.Value) {
- d.cfer().get(rt2, true, false).fd(d, xf, xrv.Slice(0, xrv.Len()))
- }
- // fn.fd = (*Decoder).kArray
- case reflect.Struct:
- if ti.anyOmitEmpty {
- fn.fe = (*Encoder).kStruct
- } else {
- fn.fe = (*Encoder).kStructNoOmitempty
- }
- fn.fd = (*Decoder).kStruct
- case reflect.Map:
- fn.fe = (*Encoder).kMap
- fn.fd = (*Decoder).kMap
- case reflect.Interface:
- // encode: reflect.Interface are handled already by preEncodeValue
- fn.fd = (*Decoder).kInterface
- fn.fe = (*Encoder).kErr
- default:
- // reflect.Ptr and reflect.Interface are handled already by preEncodeValue
- fn.fe = (*Encoder).kErr
- fn.fd = (*Decoder).kErr
- }
- }
- }
- return
-}
-
-type codecFnPooler struct {
- cf *codecFner
- cfp *sync.Pool
- hh Handle
-}
-
-func (d *codecFnPooler) cfer() *codecFner {
- if d.cf == nil {
- var v interface{}
- d.cfp, v = pool.codecFner()
- d.cf = v.(*codecFner)
- d.cf.reset(d.hh)
- }
- return d.cf
-}
-
-func (d *codecFnPooler) alwaysAtEnd() {
- if d.cf != nil {
- d.cfp.Put(d.cf)
- d.cf, d.cfp = nil, nil
- }
-}
-
// ----
// these "checkOverflow" functions must be inlinable, and not call anybody.
@@ -1990,37 +2137,42 @@ type stringSlice []string
// type bytesSlice [][]byte
func (p intSlice) Len() int { return len(p) }
-func (p intSlice) Less(i, j int) bool { return p[i] < p[j] }
-func (p intSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p intSlice) Less(i, j int) bool { return p[uint(i)] < p[uint(j)] }
+func (p intSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p uintSlice) Len() int { return len(p) }
-func (p uintSlice) Less(i, j int) bool { return p[i] < p[j] }
-func (p uintSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p uintSlice) Less(i, j int) bool { return p[uint(i)] < p[uint(j)] }
+func (p uintSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
// func (p uintptrSlice) Len() int { return len(p) }
-// func (p uintptrSlice) Less(i, j int) bool { return p[i] < p[j] }
-// func (p uintptrSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+// func (p uintptrSlice) Less(i, j int) bool { return p[uint(i)] < p[uint(j)] }
+// func (p uintptrSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p floatSlice) Len() int { return len(p) }
func (p floatSlice) Less(i, j int) bool {
- return p[i] < p[j] || isNaN(p[i]) && !isNaN(p[j])
+ return p[uint(i)] < p[uint(j)] || isNaN(p[uint(i)]) && !isNaN(p[uint(j)])
}
-func (p floatSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p floatSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p stringSlice) Len() int { return len(p) }
-func (p stringSlice) Less(i, j int) bool { return p[i] < p[j] }
-func (p stringSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p stringSlice) Less(i, j int) bool { return p[uint(i)] < p[uint(j)] }
+func (p stringSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
// func (p bytesSlice) Len() int { return len(p) }
-// func (p bytesSlice) Less(i, j int) bool { return bytes.Compare(p[i], p[j]) == -1 }
-// func (p bytesSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+// func (p bytesSlice) Less(i, j int) bool { return bytes.Compare(p[uint(i)], p[uint(j)]) == -1 }
+// func (p bytesSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p boolSlice) Len() int { return len(p) }
-func (p boolSlice) Less(i, j int) bool { return !p[i] && p[j] }
-func (p boolSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p boolSlice) Less(i, j int) bool { return !p[uint(i)] && p[uint(j)] }
+func (p boolSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
// ---------------------
+type sfiRv struct {
+ v *structFieldInfo
+ r reflect.Value
+}
+
type intRv struct {
v int64
r reflect.Value
@@ -2058,34 +2210,34 @@ type timeRv struct {
type timeRvSlice []timeRv
func (p intRvSlice) Len() int { return len(p) }
-func (p intRvSlice) Less(i, j int) bool { return p[i].v < p[j].v }
-func (p intRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p intRvSlice) Less(i, j int) bool { return p[uint(i)].v < p[uint(j)].v }
+func (p intRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p uintRvSlice) Len() int { return len(p) }
-func (p uintRvSlice) Less(i, j int) bool { return p[i].v < p[j].v }
-func (p uintRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p uintRvSlice) Less(i, j int) bool { return p[uint(i)].v < p[uint(j)].v }
+func (p uintRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p floatRvSlice) Len() int { return len(p) }
func (p floatRvSlice) Less(i, j int) bool {
- return p[i].v < p[j].v || isNaN(p[i].v) && !isNaN(p[j].v)
+ return p[uint(i)].v < p[uint(j)].v || isNaN(p[uint(i)].v) && !isNaN(p[uint(j)].v)
}
-func (p floatRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p floatRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p stringRvSlice) Len() int { return len(p) }
-func (p stringRvSlice) Less(i, j int) bool { return p[i].v < p[j].v }
-func (p stringRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p stringRvSlice) Less(i, j int) bool { return p[uint(i)].v < p[uint(j)].v }
+func (p stringRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p bytesRvSlice) Len() int { return len(p) }
-func (p bytesRvSlice) Less(i, j int) bool { return bytes.Compare(p[i].v, p[j].v) == -1 }
-func (p bytesRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p bytesRvSlice) Less(i, j int) bool { return bytes.Compare(p[uint(i)].v, p[uint(j)].v) == -1 }
+func (p bytesRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p boolRvSlice) Len() int { return len(p) }
-func (p boolRvSlice) Less(i, j int) bool { return !p[i].v && p[j].v }
-func (p boolRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p boolRvSlice) Less(i, j int) bool { return !p[uint(i)].v && p[uint(j)].v }
+func (p boolRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
func (p timeRvSlice) Len() int { return len(p) }
-func (p timeRvSlice) Less(i, j int) bool { return p[i].v.Before(p[j].v) }
-func (p timeRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p timeRvSlice) Less(i, j int) bool { return p[uint(i)].v.Before(p[uint(j)].v) }
+func (p timeRvSlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
// -----------------
@@ -2097,8 +2249,8 @@ type bytesI struct {
type bytesISlice []bytesI
func (p bytesISlice) Len() int { return len(p) }
-func (p bytesISlice) Less(i, j int) bool { return bytes.Compare(p[i].v, p[j].v) == -1 }
-func (p bytesISlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
+func (p bytesISlice) Less(i, j int) bool { return bytes.Compare(p[uint(i)].v, p[uint(j)].v) == -1 }
+func (p bytesISlice) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
// -----------------
@@ -2172,7 +2324,12 @@ func (s *set) remove(v uintptr) (exists bool) {
// bitset types are better than [256]bool, because they permit the whole
// bitset array being on a single cache line and use less memory.
-
+//
+// Also, since pos is a byte (0-255), there's no bounds checks on indexing (cheap).
+//
+// We previously had bitset128 [16]byte, and bitset32 [4]byte, but those introduces
+// bounds checking, so we discarded them, and everyone uses bitset256.
+//
// given x > 0 and n > 0 and x is exactly 2^n, then pos/x === pos>>n AND pos%x === pos&(x-1).
// consequently, pos/32 === pos>>5, pos/16 === pos>>4, pos/8 === pos>>3, pos%8 == pos&7
@@ -2181,40 +2338,16 @@ type bitset256 [32]byte
func (x *bitset256) isset(pos byte) bool {
return x[pos>>3]&(1<<(pos&7)) != 0
}
-func (x *bitset256) issetv(pos byte) byte {
- return x[pos>>3] & (1 << (pos & 7))
-}
-func (x *bitset256) set(pos byte) {
- x[pos>>3] |= (1 << (pos & 7))
-}
-// func (x *bitset256) unset(pos byte) {
-// x[pos>>3] &^= (1 << (pos & 7))
+// func (x *bitset256) issetv(pos byte) byte {
+// return x[pos>>3] & (1 << (pos & 7))
// }
-type bitset128 [16]byte
-
-func (x *bitset128) isset(pos byte) bool {
- return x[pos>>3]&(1<<(pos&7)) != 0
-}
-func (x *bitset128) set(pos byte) {
- x[pos>>3] |= (1 << (pos & 7))
-}
-
-// func (x *bitset128) unset(pos byte) {
-// x[pos>>3] &^= (1 << (pos & 7))
-// }
-
-type bitset32 [4]byte
-
-func (x *bitset32) isset(pos byte) bool {
- return x[pos>>3]&(1<<(pos&7)) != 0
-}
-func (x *bitset32) set(pos byte) {
+func (x *bitset256) set(pos byte) {
x[pos>>3] |= (1 << (pos & 7))
}
-// func (x *bitset32) unset(pos byte) {
+// func (x *bitset256) unset(pos byte) {
// x[pos>>3] &^= (1 << (pos & 7))
// }
@@ -2237,48 +2370,82 @@ func (x *bitset32) set(pos byte) {
// ------------
type pooler struct {
- dn sync.Pool // for decNaked
- cfn sync.Pool // for codecFner
- tiload sync.Pool
- strRv8, strRv16, strRv32, strRv64, strRv128 sync.Pool // for stringRV
+ // function-scoped pooled resources
+ tiload sync.Pool // for type info loading
+ sfiRv8, sfiRv16, sfiRv32, sfiRv64, sfiRv128 sync.Pool // for struct encoding
+
+ // lifetime-scoped pooled resources
+ // dn sync.Pool // for decNaked
+ buf1k, buf2k, buf4k, buf8k, buf16k, buf32k, buf64k sync.Pool // for [N]byte
}
func (p *pooler) init() {
- p.strRv8.New = func() interface{} { return new([8]stringRv) }
- p.strRv16.New = func() interface{} { return new([16]stringRv) }
- p.strRv32.New = func() interface{} { return new([32]stringRv) }
- p.strRv64.New = func() interface{} { return new([64]stringRv) }
- p.strRv128.New = func() interface{} { return new([128]stringRv) }
- p.dn.New = func() interface{} { x := new(decNaked); x.init(); return x }
p.tiload.New = func() interface{} { return new(typeInfoLoadArray) }
- p.cfn.New = func() interface{} { return new(codecFner) }
-}
-func (p *pooler) stringRv8() (sp *sync.Pool, v interface{}) {
- return &p.strRv8, p.strRv8.Get()
-}
-func (p *pooler) stringRv16() (sp *sync.Pool, v interface{}) {
- return &p.strRv16, p.strRv16.Get()
-}
-func (p *pooler) stringRv32() (sp *sync.Pool, v interface{}) {
- return &p.strRv32, p.strRv32.Get()
-}
-func (p *pooler) stringRv64() (sp *sync.Pool, v interface{}) {
- return &p.strRv64, p.strRv64.Get()
-}
-func (p *pooler) stringRv128() (sp *sync.Pool, v interface{}) {
- return &p.strRv128, p.strRv128.Get()
-}
-func (p *pooler) decNaked() (sp *sync.Pool, v interface{}) {
- return &p.dn, p.dn.Get()
-}
-func (p *pooler) codecFner() (sp *sync.Pool, v interface{}) {
- return &p.cfn, p.cfn.Get()
-}
-func (p *pooler) tiLoad() (sp *sync.Pool, v interface{}) {
- return &p.tiload, p.tiload.Get()
+ p.sfiRv8.New = func() interface{} { return new([8]sfiRv) }
+ p.sfiRv16.New = func() interface{} { return new([16]sfiRv) }
+ p.sfiRv32.New = func() interface{} { return new([32]sfiRv) }
+ p.sfiRv64.New = func() interface{} { return new([64]sfiRv) }
+ p.sfiRv128.New = func() interface{} { return new([128]sfiRv) }
+
+ // p.dn.New = func() interface{} { x := new(decNaked); x.init(); return x }
+
+ p.buf1k.New = func() interface{} { return new([1 * 1024]byte) }
+ p.buf2k.New = func() interface{} { return new([2 * 1024]byte) }
+ p.buf4k.New = func() interface{} { return new([4 * 1024]byte) }
+ p.buf8k.New = func() interface{} { return new([8 * 1024]byte) }
+ p.buf16k.New = func() interface{} { return new([16 * 1024]byte) }
+ p.buf32k.New = func() interface{} { return new([32 * 1024]byte) }
+ p.buf64k.New = func() interface{} { return new([64 * 1024]byte) }
+
}
+// func (p *pooler) sfiRv8() (sp *sync.Pool, v interface{}) {
+// return &p.strRv8, p.strRv8.Get()
+// }
+// func (p *pooler) sfiRv16() (sp *sync.Pool, v interface{}) {
+// return &p.strRv16, p.strRv16.Get()
+// }
+// func (p *pooler) sfiRv32() (sp *sync.Pool, v interface{}) {
+// return &p.strRv32, p.strRv32.Get()
+// }
+// func (p *pooler) sfiRv64() (sp *sync.Pool, v interface{}) {
+// return &p.strRv64, p.strRv64.Get()
+// }
+// func (p *pooler) sfiRv128() (sp *sync.Pool, v interface{}) {
+// return &p.strRv128, p.strRv128.Get()
+// }
+
+// func (p *pooler) bytes1k() (sp *sync.Pool, v interface{}) {
+// return &p.buf1k, p.buf1k.Get()
+// }
+// func (p *pooler) bytes2k() (sp *sync.Pool, v interface{}) {
+// return &p.buf2k, p.buf2k.Get()
+// }
+// func (p *pooler) bytes4k() (sp *sync.Pool, v interface{}) {
+// return &p.buf4k, p.buf4k.Get()
+// }
+// func (p *pooler) bytes8k() (sp *sync.Pool, v interface{}) {
+// return &p.buf8k, p.buf8k.Get()
+// }
+// func (p *pooler) bytes16k() (sp *sync.Pool, v interface{}) {
+// return &p.buf16k, p.buf16k.Get()
+// }
+// func (p *pooler) bytes32k() (sp *sync.Pool, v interface{}) {
+// return &p.buf32k, p.buf32k.Get()
+// }
+// func (p *pooler) bytes64k() (sp *sync.Pool, v interface{}) {
+// return &p.buf64k, p.buf64k.Get()
+// }
+
+// func (p *pooler) tiLoad() (sp *sync.Pool, v interface{}) {
+// return &p.tiload, p.tiload.Get()
+// }
+
+// func (p *pooler) decNaked() (sp *sync.Pool, v interface{}) {
+// return &p.dn, p.dn.Get()
+// }
+
// func (p *pooler) decNaked() (v *decNaked, f func(*decNaked) ) {
// sp := &(p.dn)
// vv := sp.Get()
@@ -2287,22 +2454,18 @@ func (p *pooler) tiLoad() (sp *sync.Pool, v interface{}) {
// func (p *pooler) decNakedGet() (v interface{}) {
// return p.dn.Get()
// }
-// func (p *pooler) codecFnerGet() (v interface{}) {
-// return p.cfn.Get()
-// }
// func (p *pooler) tiLoadGet() (v interface{}) {
// return p.tiload.Get()
// }
// func (p *pooler) decNakedPut(v interface{}) {
// p.dn.Put(v)
// }
-// func (p *pooler) codecFnerPut(v interface{}) {
-// p.cfn.Put(v)
-// }
// func (p *pooler) tiLoadPut(v interface{}) {
// p.tiload.Put(v)
// }
+// ----------------------------------------------------
+
type panicHdl struct{}
func (panicHdl) errorv(err error) {
@@ -2318,22 +2481,25 @@ func (panicHdl) errorstr(message string) {
}
func (panicHdl) errorf(format string, params ...interface{}) {
- if format != "" {
- if len(params) == 0 {
- panic(format)
- } else {
- panic(fmt.Sprintf(format, params...))
- }
+ if format == "" {
+ } else if len(params) == 0 {
+ panic(format)
+ } else {
+ panic(fmt.Sprintf(format, params...))
}
}
-type errstrDecorator interface {
- wrapErrstr(interface{}, *error)
+// ----------------------------------------------------
+
+type errDecorator interface {
+ wrapErr(in interface{}, out *error)
}
-type errstrDecoratorDef struct{}
+type errDecoratorDef struct{}
-func (errstrDecoratorDef) wrapErrstr(v interface{}, e *error) { *e = fmt.Errorf("%v", v) }
+func (errDecoratorDef) wrapErr(v interface{}, e *error) { *e = fmt.Errorf("%v", v) }
+
+// ----------------------------------------------------
type must struct{}
@@ -2362,6 +2528,118 @@ func (must) Float(s float64, err error) float64 {
return s
}
+// -------------------
+
+type bytesBufPooler struct {
+ pool *sync.Pool
+ poolbuf interface{}
+}
+
+func (z *bytesBufPooler) end() {
+ if z.pool != nil {
+ z.pool.Put(z.poolbuf)
+ z.pool, z.poolbuf = nil, nil
+ }
+}
+
+func (z *bytesBufPooler) get(bufsize int) (buf []byte) {
+ // // Try to use binary search.
+ // // This is not optimal, as most folks select 1k or 2k buffers
+ // // so a linear search is better (sequence of if/else blocks)
+ // if bufsize < 1 {
+ // bufsize = 0
+ // } else {
+ // bufsize--
+ // bufsize /= 1024
+ // }
+ // switch bufsize {
+ // case 0:
+ // z.pool, z.poolbuf = pool.bytes1k()
+ // buf = z.poolbuf.(*[1 * 1024]byte)[:]
+ // case 1:
+ // z.pool, z.poolbuf = pool.bytes2k()
+ // buf = z.poolbuf.(*[2 * 1024]byte)[:]
+ // case 2, 3:
+ // z.pool, z.poolbuf = pool.bytes4k()
+ // buf = z.poolbuf.(*[4 * 1024]byte)[:]
+ // case 4, 5, 6, 7:
+ // z.pool, z.poolbuf = pool.bytes8k()
+ // buf = z.poolbuf.(*[8 * 1024]byte)[:]
+ // case 8, 9, 10, 11, 12, 13, 14, 15:
+ // z.pool, z.poolbuf = pool.bytes16k()
+ // buf = z.poolbuf.(*[16 * 1024]byte)[:]
+ // case 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31:
+ // z.pool, z.poolbuf = pool.bytes32k()
+ // buf = z.poolbuf.(*[32 * 1024]byte)[:]
+ // default:
+ // z.pool, z.poolbuf = pool.bytes64k()
+ // buf = z.poolbuf.(*[64 * 1024]byte)[:]
+ // }
+ // return
+
+ if bufsize <= 1*1024 {
+ z.pool, z.poolbuf = &pool.buf1k, pool.buf1k.Get() // pool.bytes1k()
+ buf = z.poolbuf.(*[1 * 1024]byte)[:]
+ } else if bufsize <= 2*1024 {
+ z.pool, z.poolbuf = &pool.buf2k, pool.buf2k.Get() // pool.bytes2k()
+ buf = z.poolbuf.(*[2 * 1024]byte)[:]
+ } else if bufsize <= 4*1024 {
+ z.pool, z.poolbuf = &pool.buf4k, pool.buf4k.Get() // pool.bytes4k()
+ buf = z.poolbuf.(*[4 * 1024]byte)[:]
+ } else if bufsize <= 8*1024 {
+ z.pool, z.poolbuf = &pool.buf8k, pool.buf8k.Get() // pool.bytes8k()
+ buf = z.poolbuf.(*[8 * 1024]byte)[:]
+ } else if bufsize <= 16*1024 {
+ z.pool, z.poolbuf = &pool.buf16k, pool.buf16k.Get() // pool.bytes16k()
+ buf = z.poolbuf.(*[16 * 1024]byte)[:]
+ } else if bufsize <= 32*1024 {
+ z.pool, z.poolbuf = &pool.buf32k, pool.buf32k.Get() // pool.bytes32k()
+ buf = z.poolbuf.(*[32 * 1024]byte)[:]
+ } else {
+ z.pool, z.poolbuf = &pool.buf64k, pool.buf64k.Get() // pool.bytes64k()
+ buf = z.poolbuf.(*[64 * 1024]byte)[:]
+ }
+ return
+}
+
+// ----------------
+
+type sfiRvPooler struct {
+ pool *sync.Pool
+ poolv interface{}
+}
+
+func (z *sfiRvPooler) end() {
+ if z.pool != nil {
+ z.pool.Put(z.poolv)
+ z.pool, z.poolv = nil, nil
+ }
+}
+
+func (z *sfiRvPooler) get(newlen int) (fkvs []sfiRv) {
+ if newlen < 0 { // bounds-check-elimination
+ // cannot happen // here for bounds-check-elimination
+ } else if newlen <= 8 {
+ z.pool, z.poolv = &pool.sfiRv8, pool.sfiRv8.Get() // pool.sfiRv8()
+ fkvs = z.poolv.(*[8]sfiRv)[:newlen]
+ } else if newlen <= 16 {
+ z.pool, z.poolv = &pool.sfiRv16, pool.sfiRv16.Get() // pool.sfiRv16()
+ fkvs = z.poolv.(*[16]sfiRv)[:newlen]
+ } else if newlen <= 32 {
+ z.pool, z.poolv = &pool.sfiRv32, pool.sfiRv32.Get() // pool.sfiRv32()
+ fkvs = z.poolv.(*[32]sfiRv)[:newlen]
+ } else if newlen <= 64 {
+ z.pool, z.poolv = &pool.sfiRv64, pool.sfiRv64.Get() // pool.sfiRv64()
+ fkvs = z.poolv.(*[64]sfiRv)[:newlen]
+ } else if newlen <= 128 {
+ z.pool, z.poolv = &pool.sfiRv128, pool.sfiRv128.Get() // pool.sfiRv128()
+ fkvs = z.poolv.(*[128]sfiRv)[:newlen]
+ } else {
+ fkvs = make([]sfiRv, newlen)
+ }
+ return
+}
+
// xdebugf prints the message in red on the terminal.
// Use it in place of fmt.Printf (which it calls internally)
func xdebugf(pattern string, args ...interface{}) {
diff --git a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go
index fd52690c..eef58636 100644
--- a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go
+++ b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go
@@ -47,9 +47,9 @@ func rt2id(rt reflect.Type) uintptr {
return reflect.ValueOf(rt).Pointer()
}
-func rv2rtid(rv reflect.Value) uintptr {
- return reflect.ValueOf(rv.Type()).Pointer()
-}
+// func rv2rtid(rv reflect.Value) uintptr {
+// return reflect.ValueOf(rv.Type()).Pointer()
+// }
func i2rtid(i interface{}) uintptr {
return reflect.ValueOf(reflect.TypeOf(i)).Pointer()
@@ -94,16 +94,31 @@ func isEmptyValue(v reflect.Value, tinfos *TypeInfos, deref, checkStruct bool) b
// }
// --------------------------
+type atomicClsErr struct {
+ v atomic.Value
+}
+
+func (x *atomicClsErr) load() (e clsErr) {
+ if i := x.v.Load(); i != nil {
+ e = i.(clsErr)
+ }
+ return
+}
+
+func (x *atomicClsErr) store(p clsErr) {
+ x.v.Store(p)
+}
+
+// --------------------------
type atomicTypeInfoSlice struct { // expected to be 2 words
v atomic.Value
}
-func (x *atomicTypeInfoSlice) load() []rtid2ti {
- i := x.v.Load()
- if i == nil {
- return nil
+func (x *atomicTypeInfoSlice) load() (e []rtid2ti) {
+ if i := x.v.Load(); i != nil {
+ e = i.([]rtid2ti)
}
- return i.([]rtid2ti)
+ return
}
func (x *atomicTypeInfoSlice) store(p []rtid2ti) {
@@ -111,6 +126,45 @@ func (x *atomicTypeInfoSlice) store(p []rtid2ti) {
}
// --------------------------
+type atomicRtidFnSlice struct { // expected to be 2 words
+ v atomic.Value
+}
+
+func (x *atomicRtidFnSlice) load() (e []codecRtidFn) {
+ if i := x.v.Load(); i != nil {
+ e = i.([]codecRtidFn)
+ }
+ return
+}
+
+func (x *atomicRtidFnSlice) store(p []codecRtidFn) {
+ x.v.Store(p)
+}
+
+// --------------------------
+func (n *decNaked) ru() reflect.Value {
+ return reflect.ValueOf(&n.u).Elem()
+}
+func (n *decNaked) ri() reflect.Value {
+ return reflect.ValueOf(&n.i).Elem()
+}
+func (n *decNaked) rf() reflect.Value {
+ return reflect.ValueOf(&n.f).Elem()
+}
+func (n *decNaked) rl() reflect.Value {
+ return reflect.ValueOf(&n.l).Elem()
+}
+func (n *decNaked) rs() reflect.Value {
+ return reflect.ValueOf(&n.s).Elem()
+}
+func (n *decNaked) rt() reflect.Value {
+ return reflect.ValueOf(&n.t).Elem()
+}
+func (n *decNaked) rb() reflect.Value {
+ return reflect.ValueOf(&n.b).Elem()
+}
+
+// --------------------------
func (d *Decoder) raw(f *codecFnInfo, rv reflect.Value) {
rv.SetBytes(d.rawBytes())
}
@@ -194,7 +248,7 @@ func (e *Encoder) kTime(f *codecFnInfo, rv reflect.Value) {
}
func (e *Encoder) kString(f *codecFnInfo, rv reflect.Value) {
- e.e.EncodeString(cUTF8, rv.String())
+ e.e.EncodeStringEnc(cUTF8, rv.String())
}
func (e *Encoder) kFloat64(f *codecFnInfo, rv reflect.Value) {
diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_unsafe.go
index e3df60ab..51de2d68 100644
--- a/vendor/github.com/ugorji/go/codec/helper_unsafe.go
+++ b/vendor/github.com/ugorji/go/codec/helper_unsafe.go
@@ -97,9 +97,9 @@ func rt2id(rt reflect.Type) uintptr {
return uintptr(((*unsafeIntf)(unsafe.Pointer(&rt))).word)
}
-func rv2rtid(rv reflect.Value) uintptr {
- return uintptr((*unsafeReflectValue)(unsafe.Pointer(&rv)).typ)
-}
+// func rv2rtid(rv reflect.Value) uintptr {
+// return uintptr((*unsafeReflectValue)(unsafe.Pointer(&rv)).typ)
+// }
func i2rtid(i interface{}) uintptr {
return uintptr(((*unsafeIntf)(unsafe.Pointer(&i))).typ)
@@ -176,31 +176,132 @@ func isEmptyValue(v reflect.Value, tinfos *TypeInfos, deref, checkStruct bool) b
// --------------------------
-// atomicTypeInfoSlice contains length and pointer to the array for a slice.
-// It is expected to be 2 words.
+// atomicXXX is expected to be 2 words (for symmetry with atomic.Value)
+//
+// Note that we do not atomically load/store length and data pointer separately,
+// as this could lead to some races. Instead, we atomically load/store cappedSlice.
//
-// Previously, we atomically loaded and stored the length and array pointer separately,
-// which could lead to some races.
-// We now just atomically store and load the pointer to the value directly.
+// Note: with atomic.(Load|Store)Pointer, we MUST work with an unsafe.Pointer directly.
-type atomicTypeInfoSlice struct { // expected to be 2 words
- l int // length of the data array (must be first in struct, for 64-bit alignment necessary for 386)
- v unsafe.Pointer // data array - Pointer (not uintptr) to maintain GC reference
+// ----------------------
+type atomicTypeInfoSlice struct {
+ v unsafe.Pointer // *[]rtid2ti
+ _ uintptr // padding (atomicXXX expected to be 2 words)
}
-func (x *atomicTypeInfoSlice) load() []rtid2ti {
- xp := unsafe.Pointer(x)
- x2 := *(*atomicTypeInfoSlice)(atomic.LoadPointer(&xp))
- if x2.l == 0 {
- return nil
+func (x *atomicTypeInfoSlice) load() (s []rtid2ti) {
+ x2 := atomic.LoadPointer(&x.v)
+ if x2 != nil {
+ s = *(*[]rtid2ti)(x2)
}
- return *(*[]rtid2ti)(unsafe.Pointer(&unsafeSlice{Data: x2.v, Len: x2.l, Cap: x2.l}))
+ return
}
func (x *atomicTypeInfoSlice) store(p []rtid2ti) {
- s := (*unsafeSlice)(unsafe.Pointer(&p))
- xp := unsafe.Pointer(x)
- atomic.StorePointer(&xp, unsafe.Pointer(&atomicTypeInfoSlice{l: s.Len, v: s.Data}))
+ atomic.StorePointer(&x.v, unsafe.Pointer(&p))
+}
+
+// --------------------------
+type atomicRtidFnSlice struct {
+ v unsafe.Pointer // *[]codecRtidFn
+ _ uintptr // padding (atomicXXX expected to be 2 words)
+}
+
+func (x *atomicRtidFnSlice) load() (s []codecRtidFn) {
+ x2 := atomic.LoadPointer(&x.v)
+ if x2 != nil {
+ s = *(*[]codecRtidFn)(x2)
+ }
+ return
+}
+
+func (x *atomicRtidFnSlice) store(p []codecRtidFn) {
+ atomic.StorePointer(&x.v, unsafe.Pointer(&p))
+}
+
+// --------------------------
+type atomicClsErr struct {
+ v unsafe.Pointer // *clsErr
+ _ uintptr // padding (atomicXXX expected to be 2 words)
+}
+
+func (x *atomicClsErr) load() (e clsErr) {
+ x2 := (*clsErr)(atomic.LoadPointer(&x.v))
+ if x2 != nil {
+ e = *x2
+ }
+ return
+}
+
+func (x *atomicClsErr) store(p clsErr) {
+ atomic.StorePointer(&x.v, unsafe.Pointer(&p))
+}
+
+// --------------------------
+
+// to create a reflect.Value for each member field of decNaked,
+// we first create a global decNaked, and create reflect.Value
+// for them all.
+// This way, we have the flags and type in the reflect.Value.
+// Then, when a reflect.Value is called, we just copy it,
+// update the ptr to the decNaked's, and return it.
+
+type unsafeDecNakedWrapper struct {
+ decNaked
+ ru, ri, rf, rl, rs, rb, rt reflect.Value // mapping to the primitives above
+}
+
+func (n *unsafeDecNakedWrapper) init() {
+ n.ru = reflect.ValueOf(&n.u).Elem()
+ n.ri = reflect.ValueOf(&n.i).Elem()
+ n.rf = reflect.ValueOf(&n.f).Elem()
+ n.rl = reflect.ValueOf(&n.l).Elem()
+ n.rs = reflect.ValueOf(&n.s).Elem()
+ n.rt = reflect.ValueOf(&n.t).Elem()
+ n.rb = reflect.ValueOf(&n.b).Elem()
+ // n.rr[] = reflect.ValueOf(&n.)
+}
+
+var defUnsafeDecNakedWrapper unsafeDecNakedWrapper
+
+func init() {
+ defUnsafeDecNakedWrapper.init()
+}
+
+func (n *decNaked) ru() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.ru
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.u)
+ return
+}
+func (n *decNaked) ri() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.ri
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.i)
+ return
+}
+func (n *decNaked) rf() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.rf
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.f)
+ return
+}
+func (n *decNaked) rl() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.rl
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.l)
+ return
+}
+func (n *decNaked) rs() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.rs
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.s)
+ return
+}
+func (n *decNaked) rt() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.rt
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.t)
+ return
+}
+func (n *decNaked) rb() (v reflect.Value) {
+ v = defUnsafeDecNakedWrapper.rb
+ ((*unsafeReflectValue)(unsafe.Pointer(&v))).ptr = unsafe.Pointer(&n.b)
+ return
}
// --------------------------
@@ -307,7 +408,7 @@ func (e *Encoder) kTime(f *codecFnInfo, rv reflect.Value) {
func (e *Encoder) kString(f *codecFnInfo, rv reflect.Value) {
v := (*unsafeReflectValue)(unsafe.Pointer(&rv))
- e.e.EncodeString(cUTF8, *(*string)(v.ptr))
+ e.e.EncodeStringEnc(cUTF8, *(*string)(v.ptr))
}
func (e *Encoder) kFloat64(f *codecFnInfo, rv reflect.Value) {
diff --git a/vendor/github.com/ugorji/go/codec/json.go b/vendor/github.com/ugorji/go/codec/json.go
index bdd19966..619bc5b5 100644
--- a/vendor/github.com/ugorji/go/codec/json.go
+++ b/vendor/github.com/ugorji/go/codec/json.go
@@ -46,8 +46,14 @@ const (
jsonLitTrue = 1
jsonLitFalseQ = 6
jsonLitFalse = 7
- jsonLitNullQ = 13
- jsonLitNull = 14
+ // jsonLitNullQ = 13
+ jsonLitNull = 14
+)
+
+var (
+ jsonLiteral4True = jsonLiterals[jsonLitTrue+1 : jsonLitTrue+4]
+ jsonLiteral4False = jsonLiterals[jsonLitFalse+1 : jsonLitFalse+5]
+ jsonLiteral4Null = jsonLiterals[jsonLitNull+1 : jsonLitNull+4]
)
const (
@@ -76,14 +82,15 @@ var (
// jsonTabs and jsonSpaces are used as caches for indents
jsonTabs, jsonSpaces [jsonSpacesOrTabsLen]byte
- jsonCharHtmlSafeSet bitset128
- jsonCharSafeSet bitset128
+ jsonCharHtmlSafeSet bitset256
+ jsonCharSafeSet bitset256
jsonCharWhitespaceSet bitset256
jsonNumSet bitset256
)
func init() {
- for i := 0; i < jsonSpacesOrTabsLen; i++ {
+ var i byte
+ for i = 0; i < jsonSpacesOrTabsLen; i++ {
jsonSpaces[i] = ' '
jsonTabs[i] = '\t'
}
@@ -91,7 +98,6 @@ func init() {
// populate the safe values as true: note: ASCII control characters are (0-31)
// jsonCharSafeSet: all true except (0-31) " \
// jsonCharHtmlSafeSet: all true except (0-31) " \ < > &
- var i byte
for i = 32; i < utf8.RuneSelf; i++ {
switch i {
case '"', '\\':
@@ -115,8 +121,7 @@ func init() {
// ----------------
type jsonEncDriverTypical struct {
- w encWriter
- // w *encWriterSwitch
+ w *encWriterSwitch
b *[jsonScratchArrayLen]byte
tw bool // term white space
c containerState
@@ -126,7 +131,6 @@ func (e *jsonEncDriverTypical) typical() {}
func (e *jsonEncDriverTypical) reset(ee *jsonEncDriver) {
e.w = ee.ew
- // e.w = &ee.e.encWriterSwitch
e.b = &ee.b
e.tw = ee.h.TermWhitespace
e.c = 0
@@ -205,7 +209,7 @@ func (e *jsonEncDriverTypical) atEndOfEncode() {
// ----------------
type jsonEncDriverGeneric struct {
- w encWriter // encWriter // *encWriterSwitch
+ w *encWriterSwitch
b *[jsonScratchArrayLen]byte
c containerState
// ds string // indent string
@@ -407,12 +411,13 @@ type jsonEncDriver struct {
noBuiltInTypes
e *Encoder
h *JsonHandle
- ew encWriter // encWriter // *encWriterSwitch
+ ew *encWriterSwitch
se extWrapper
// ---- cpu cache line boundary?
bs []byte // scratch
// ---- cpu cache line boundary?
b [jsonScratchArrayLen]byte // scratch (encode time,
+ _ [2]uint64 // padding
}
func (e *jsonEncDriver) EncodeNil() {
@@ -463,6 +468,10 @@ func (e *jsonEncDriver) EncodeString(c charEncoding, v string) {
e.quoteStr(v)
}
+func (e *jsonEncDriver) EncodeStringEnc(c charEncoding, v string) {
+ e.quoteStr(v)
+}
+
func (e *jsonEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
// if encoding raw bytes and RawBytesExt is configured, use it to encode
if v == nil {
@@ -475,21 +484,44 @@ func (e *jsonEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
return
}
- slen := base64.StdEncoding.EncodedLen(len(v))
- if cap(e.bs) >= slen+2 {
- e.bs = e.bs[:slen+2]
+ slen := base64.StdEncoding.EncodedLen(len(v)) + 2
+ if cap(e.bs) >= slen {
+ e.bs = e.bs[:slen]
} else {
- e.bs = make([]byte, slen+2)
+ e.bs = make([]byte, slen)
}
e.bs[0] = '"'
base64.StdEncoding.Encode(e.bs[1:], v)
- e.bs[slen+1] = '"'
+ e.bs[slen-1] = '"'
e.ew.writeb(e.bs)
} else {
e.quoteStr(stringView(v))
}
}
+func (e *jsonEncDriver) EncodeStringBytesRaw(v []byte) {
+ // if encoding raw bytes and RawBytesExt is configured, use it to encode
+ if v == nil {
+ e.EncodeNil()
+ return
+ }
+ if e.se.InterfaceExt != nil {
+ e.EncodeExt(v, 0, &e.se, e.e)
+ return
+ }
+
+ slen := base64.StdEncoding.EncodedLen(len(v)) + 2
+ if cap(e.bs) >= slen {
+ e.bs = e.bs[:slen]
+ } else {
+ e.bs = make([]byte, slen)
+ }
+ e.bs[0] = '"'
+ base64.StdEncoding.Encode(e.bs[1:], v)
+ e.bs[slen-1] = '"'
+ e.ew.writeb(e.bs)
+}
+
func (e *jsonEncDriver) EncodeAsis(v []byte) {
e.ew.writeb(v)
}
@@ -569,7 +601,7 @@ type jsonDecDriver struct {
noBuiltInTypes
d *Decoder
h *JsonHandle
- r decReader // *decReaderSwitch // decReader
+ r *decReaderSwitch
se extWrapper
// ---- writable fields during execution --- *try* to keep in sep cache line
@@ -584,7 +616,7 @@ type jsonDecDriver struct {
b [jsonScratchArrayLen]byte // scratch 1, used for parsing strings or numbers or time.Time
b2 [jsonScratchArrayLen]byte // scratch 2, used only for readUntil, decNumBytes
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
// n jsonNum
}
@@ -707,12 +739,36 @@ func (d *jsonDecDriver) ReadMapEnd() {
d.c = containerMapEnd
}
-func (d *jsonDecDriver) readLit(length, fromIdx uint8) {
- bs := d.r.readx(int(length))
+// func (d *jsonDecDriver) readLit(length, fromIdx uint8) {
+// // length here is always less than 8 (literals are: null, true, false)
+// bs := d.r.readx(int(length))
+// d.tok = 0
+// if jsonValidateSymbols && !bytes.Equal(bs, jsonLiterals[fromIdx:fromIdx+length]) {
+// d.d.errorf("expecting %s: got %s", jsonLiterals[fromIdx:fromIdx+length], bs)
+// }
+// }
+
+func (d *jsonDecDriver) readLit4True() {
+ bs := d.r.readx(3)
d.tok = 0
- if jsonValidateSymbols && !bytes.Equal(bs, jsonLiterals[fromIdx:fromIdx+length]) {
- d.d.errorf("expecting %s: got %s", jsonLiterals[fromIdx:fromIdx+length], bs)
- return
+ if jsonValidateSymbols && !bytes.Equal(bs, jsonLiteral4True) {
+ d.d.errorf("expecting %s: got %s", jsonLiteral4True, bs)
+ }
+}
+
+func (d *jsonDecDriver) readLit4False() {
+ bs := d.r.readx(4)
+ d.tok = 0
+ if jsonValidateSymbols && !bytes.Equal(bs, jsonLiteral4False) {
+ d.d.errorf("expecting %s: got %s", jsonLiteral4False, bs)
+ }
+}
+
+func (d *jsonDecDriver) readLit4Null() {
+ bs := d.r.readx(3)
+ d.tok = 0
+ if jsonValidateSymbols && !bytes.Equal(bs, jsonLiteral4Null) {
+ d.d.errorf("expecting %s: got %s", jsonLiteral4Null, bs)
}
}
@@ -723,7 +779,7 @@ func (d *jsonDecDriver) TryDecodeAsNil() bool {
// we shouldn't try to see if "null" was here, right?
// only the plain string: `null` denotes a nil (ie not quotes)
if d.tok == 'n' {
- d.readLit(3, jsonLitNull+1) // (n)ull
+ d.readLit4Null()
return true
}
return false
@@ -739,10 +795,10 @@ func (d *jsonDecDriver) DecodeBool() (v bool) {
}
switch d.tok {
case 'f':
- d.readLit(4, jsonLitFalse+1) // (f)alse
+ d.readLit4False()
// v = false
case 't':
- d.readLit(3, jsonLitTrue+1) // (t)rue
+ d.readLit4True()
v = true
default:
d.d.errorf("decode bool: got first char %c", d.tok)
@@ -808,6 +864,9 @@ func (d *jsonDecDriver) decNumBytes() (bs []byte) {
func (d *jsonDecDriver) DecodeUint64() (u uint64) {
bs := d.decNumBytes()
+ if len(bs) == 0 {
+ return
+ }
n, neg, badsyntax, overflow := jsonParseInteger(bs)
if overflow {
d.d.errorf("overflow parsing unsigned integer: %s", bs)
@@ -823,6 +882,9 @@ func (d *jsonDecDriver) DecodeUint64() (u uint64) {
func (d *jsonDecDriver) DecodeInt64() (i int64) {
const cutoff = uint64(1 << uint(64-1))
bs := d.decNumBytes()
+ if len(bs) == 0 {
+ return
+ }
n, neg, badsyntax, overflow := jsonParseInteger(bs)
if overflow {
d.d.errorf("overflow parsing integer: %s", bs)
@@ -850,6 +912,9 @@ func (d *jsonDecDriver) DecodeInt64() (i int64) {
}
func (d *jsonDecDriver) decUint64ViaFloat(s string) (u uint64) {
+ if len(s) == 0 {
+ return
+ }
f, err := strconv.ParseFloat(s, 64)
if err != nil {
d.d.errorf("invalid syntax for integer: %s", s)
@@ -866,6 +931,9 @@ func (d *jsonDecDriver) decUint64ViaFloat(s string) (u uint64) {
func (d *jsonDecDriver) DecodeFloat64() (f float64) {
bs := d.decNumBytes()
+ if len(bs) == 0 {
+ return
+ }
f, err := strconv.ParseFloat(stringView(bs), 64)
if err != nil {
d.d.errorv(err)
@@ -953,15 +1021,15 @@ func (d *jsonDecDriver) appendStringAsBytes() {
// handle non-string scalar: null, true, false or a number
switch d.tok {
case 'n':
- d.readLit(3, jsonLitNull+1) // (n)ull
+ d.readLit4Null()
d.bs = d.bs[:0]
d.fnull = true
case 'f':
- d.readLit(4, jsonLitFalse+1) // (f)alse
+ d.readLit4False()
d.bs = d.bs[:5]
copy(d.bs, "false")
case 't':
- d.readLit(3, jsonLitTrue+1) // (t)rue
+ d.readLit4True()
d.bs = d.bs[:4]
copy(d.bs, "true")
default:
@@ -980,7 +1048,7 @@ func (d *jsonDecDriver) appendStringAsBytes() {
d.tok = 0
r := d.r
var cs = r.readUntil(d.b2[:0], '"')
- var cslen = len(cs)
+ var cslen = uint(len(cs))
var c uint8
v := d.bs[:0]
// append on each byte seen can be expensive, so we just
@@ -989,11 +1057,12 @@ func (d *jsonDecDriver) appendStringAsBytes() {
// and when we see a special byte
// e.g. end-of-slice, " or \,
// we will append the full range into the v slice before proceeding
- for i, cursor := 0, 0; ; {
+ var i, cursor uint
+ for {
if i == cslen {
v = append(v, cs[cursor:]...)
cs = r.readUntil(d.b2[:0], '"')
- cslen = len(cs)
+ cslen = uint(len(cs))
i, cursor = 0, 0
}
c = cs[i]
@@ -1024,14 +1093,13 @@ func (d *jsonDecDriver) appendStringAsBytes() {
case 'u':
var r rune
var rr uint32
- if len(cs) < i+4 { // may help reduce bounds-checking
+ if cslen < i+4 {
d.d.errorf("need at least 4 more bytes for unicode sequence")
}
- // c = cs[i+4] // may help reduce bounds-checking
- for j := 1; j < 5; j++ {
+ var j uint
+ for _, c = range cs[i+1 : i+5] { // bounds-check-elimination
// best to use explicit if-else
// - not a table, etc which involve memory loads, array lookup with bounds checks, etc
- c = cs[i+j]
if c >= '0' && c <= '9' {
rr = rr*16 + uint32(c-jsonU4Chk2)
} else if c >= 'a' && c <= 'f' {
@@ -1047,30 +1115,31 @@ func (d *jsonDecDriver) appendStringAsBytes() {
r = rune(rr)
i += 4
if utf16.IsSurrogate(r) {
- if len(cs) >= i+6 && cs[i+2] == 'u' && cs[i+1] == '\\' {
- i += 2
- // c = cs[i+4] // may help reduce bounds-checking
- var rr1 uint32
- for j := 1; j < 5; j++ {
- c = cs[i+j]
- if c >= '0' && c <= '9' {
- rr = rr*16 + uint32(c-jsonU4Chk2)
- } else if c >= 'a' && c <= 'f' {
- rr = rr*16 + uint32(c-jsonU4Chk1)
- } else if c >= 'A' && c <= 'F' {
- rr = rr*16 + uint32(c-jsonU4Chk0)
- } else {
- r = unicode.ReplacementChar
- i += 4
- goto encode_rune
+ if len(cs) >= int(i+6) {
+ var cx = cs[i+1:][:6:6] // [:6] affords bounds-check-elimination
+ if cx[0] == '\\' && cx[1] == 'u' {
+ i += 2
+ var rr1 uint32
+ for j = 2; j < 6; j++ {
+ c = cx[j]
+ if c >= '0' && c <= '9' {
+ rr = rr*16 + uint32(c-jsonU4Chk2)
+ } else if c >= 'a' && c <= 'f' {
+ rr = rr*16 + uint32(c-jsonU4Chk1)
+ } else if c >= 'A' && c <= 'F' {
+ rr = rr*16 + uint32(c-jsonU4Chk0)
+ } else {
+ r = unicode.ReplacementChar
+ i += 4
+ goto encode_rune
+ }
}
+ r = utf16.DecodeRune(r, rune(rr1))
+ i += 4
+ goto encode_rune
}
- r = utf16.DecodeRune(r, rune(rr1))
- i += 4
- } else {
- r = unicode.ReplacementChar
- goto encode_rune
}
+ r = unicode.ReplacementChar
}
encode_rune:
w2 := utf8.EncodeRune(d.bstr[:], r)
@@ -1086,9 +1155,23 @@ func (d *jsonDecDriver) appendStringAsBytes() {
func (d *jsonDecDriver) nakedNum(z *decNaked, bs []byte) (err error) {
const cutoff = uint64(1 << uint(64-1))
+
var n uint64
var neg, badsyntax, overflow bool
+ if len(bs) == 0 {
+ if d.h.PreferFloat {
+ z.v = valueTypeFloat
+ z.f = 0
+ } else if d.h.SignedInteger {
+ z.v = valueTypeInt
+ z.i = 0
+ } else {
+ z.v = valueTypeUint
+ z.u = 0
+ }
+ return
+ }
if d.h.PreferFloat {
goto F
}
@@ -1128,7 +1211,7 @@ func (d *jsonDecDriver) bsToString() string {
}
func (d *jsonDecDriver) DecodeNaked() {
- z := d.d.n
+ z := d.d.naked()
// var decodeFurther bool
if d.tok == 0 {
@@ -1136,14 +1219,14 @@ func (d *jsonDecDriver) DecodeNaked() {
}
switch d.tok {
case 'n':
- d.readLit(3, jsonLitNull+1) // (n)ull
+ d.readLit4Null()
z.v = valueTypeNil
case 'f':
- d.readLit(4, jsonLitFalse+1) // (f)alse
+ d.readLit4False()
z.v = valueTypeBool
z.b = false
case 't':
- d.readLit(3, jsonLitTrue+1) // (t)rue
+ d.readLit4True()
z.v = valueTypeBool
z.b = true
case '{':
@@ -1188,7 +1271,6 @@ func (d *jsonDecDriver) DecodeNaked() {
// if decodeFurther {
// d.s.sc.retryRead()
// }
- return
}
//----------------------
@@ -1306,6 +1388,7 @@ func (x *jsonEncDriverTypicalImpl) reset() {
type jsonEncDriverGenericImpl struct {
jsonEncDriver
jsonEncDriverGeneric
+ // _ [2]uint64 // padding
}
func (x *jsonEncDriverGenericImpl) reset() {
@@ -1340,7 +1423,7 @@ func (h *JsonHandle) newDecDriver(d *Decoder) decDriver {
}
func (e *jsonEncDriver) reset() {
- e.ew = e.e.w // e.e.w // &e.e.encWriterSwitch
+ e.ew = e.e.w
e.se.InterfaceExt = e.h.RawBytesExt
if e.bs != nil {
e.bs = e.bs[:0]
@@ -1348,7 +1431,7 @@ func (e *jsonEncDriver) reset() {
}
func (d *jsonDecDriver) reset() {
- d.r = d.d.r // &d.d.decReaderSwitch // d.d.r
+ d.r = d.d.r
d.se.InterfaceExt = d.h.RawBytesExt
if d.bs != nil {
d.bs = d.bs[:0]
@@ -1380,12 +1463,14 @@ func jsonFloatStrconvFmtPrec(f float64) (fmt byte, prec int) {
// custom-fitted version of strconv.Parse(Ui|I)nt.
// Also ensures we don't have to search for .eE to determine if a float or not.
+// Note: s CANNOT be a zero-length slice.
func jsonParseInteger(s []byte) (n uint64, neg, badSyntax, overflow bool) {
const maxUint64 = (1<<64 - 1)
const cutoff = maxUint64/10 + 1
- if len(s) == 0 {
- badSyntax = true
+ if len(s) == 0 { // bounds-check-elimination
+ // treat empty string as zero value
+ // badSyntax = true
return
}
switch s[0] {
diff --git a/vendor/github.com/ugorji/go/codec/msgpack.go b/vendor/github.com/ugorji/go/codec/msgpack.go
index 3271579a..bc3f259a 100644
--- a/vendor/github.com/ugorji/go/codec/msgpack.go
+++ b/vendor/github.com/ugorji/go/codec/msgpack.go
@@ -30,53 +30,53 @@ import (
const (
mpPosFixNumMin byte = 0x00
- mpPosFixNumMax = 0x7f
- mpFixMapMin = 0x80
- mpFixMapMax = 0x8f
- mpFixArrayMin = 0x90
- mpFixArrayMax = 0x9f
- mpFixStrMin = 0xa0
- mpFixStrMax = 0xbf
- mpNil = 0xc0
- _ = 0xc1
- mpFalse = 0xc2
- mpTrue = 0xc3
- mpFloat = 0xca
- mpDouble = 0xcb
- mpUint8 = 0xcc
- mpUint16 = 0xcd
- mpUint32 = 0xce
- mpUint64 = 0xcf
- mpInt8 = 0xd0
- mpInt16 = 0xd1
- mpInt32 = 0xd2
- mpInt64 = 0xd3
+ mpPosFixNumMax byte = 0x7f
+ mpFixMapMin byte = 0x80
+ mpFixMapMax byte = 0x8f
+ mpFixArrayMin byte = 0x90
+ mpFixArrayMax byte = 0x9f
+ mpFixStrMin byte = 0xa0
+ mpFixStrMax byte = 0xbf
+ mpNil byte = 0xc0
+ _ byte = 0xc1
+ mpFalse byte = 0xc2
+ mpTrue byte = 0xc3
+ mpFloat byte = 0xca
+ mpDouble byte = 0xcb
+ mpUint8 byte = 0xcc
+ mpUint16 byte = 0xcd
+ mpUint32 byte = 0xce
+ mpUint64 byte = 0xcf
+ mpInt8 byte = 0xd0
+ mpInt16 byte = 0xd1
+ mpInt32 byte = 0xd2
+ mpInt64 byte = 0xd3
// extensions below
- mpBin8 = 0xc4
- mpBin16 = 0xc5
- mpBin32 = 0xc6
- mpExt8 = 0xc7
- mpExt16 = 0xc8
- mpExt32 = 0xc9
- mpFixExt1 = 0xd4
- mpFixExt2 = 0xd5
- mpFixExt4 = 0xd6
- mpFixExt8 = 0xd7
- mpFixExt16 = 0xd8
-
- mpStr8 = 0xd9 // new
- mpStr16 = 0xda
- mpStr32 = 0xdb
-
- mpArray16 = 0xdc
- mpArray32 = 0xdd
-
- mpMap16 = 0xde
- mpMap32 = 0xdf
-
- mpNegFixNumMin = 0xe0
- mpNegFixNumMax = 0xff
+ mpBin8 byte = 0xc4
+ mpBin16 byte = 0xc5
+ mpBin32 byte = 0xc6
+ mpExt8 byte = 0xc7
+ mpExt16 byte = 0xc8
+ mpExt32 byte = 0xc9
+ mpFixExt1 byte = 0xd4
+ mpFixExt2 byte = 0xd5
+ mpFixExt4 byte = 0xd6
+ mpFixExt8 byte = 0xd7
+ mpFixExt16 byte = 0xd8
+
+ mpStr8 byte = 0xd9 // new
+ mpStr16 byte = 0xda
+ mpStr32 byte = 0xdb
+
+ mpArray16 byte = 0xdc
+ mpArray32 byte = 0xdd
+
+ mpMap16 byte = 0xde
+ mpMap32 byte = 0xdf
+
+ mpNegFixNumMin byte = 0xe0
+ mpNegFixNumMax byte = 0xff
)
var mpTimeExtTag int8 = -1
@@ -199,10 +199,10 @@ type msgpackEncDriver struct {
encDriverNoopContainerWriter
// encNoSeparator
e *Encoder
- w encWriter
+ w *encWriterSwitch
h *MsgpackHandle
x [8]byte
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
}
func (e *msgpackEncDriver) EncodeNil() {
@@ -210,10 +210,9 @@ func (e *msgpackEncDriver) EncodeNil() {
}
func (e *msgpackEncDriver) EncodeInt(i int64) {
- // if i >= 0 {
- // e.EncodeUint(uint64(i))
- // } else if false &&
- if i > math.MaxInt8 {
+ if e.h.PositiveIntUnsigned && i >= 0 {
+ e.EncodeUint(uint64(i))
+ } else if i > math.MaxInt8 {
if i <= math.MaxInt16 {
e.w.writen1(mpInt16)
bigenHelper{e.x[:2], e.w}.writeUint16(uint16(i))
@@ -326,7 +325,7 @@ func (e *msgpackEncDriver) EncodeExt(v interface{}, xtag uint64, ext Ext, _ *Enc
e.encodeExtPreamble(uint8(xtag), len(bs))
e.w.writeb(bs)
} else {
- e.EncodeStringBytes(cRAW, bs)
+ e.EncodeStringBytesRaw(bs)
}
}
@@ -380,6 +379,14 @@ func (e *msgpackEncDriver) EncodeString(c charEncoding, s string) {
}
}
+func (e *msgpackEncDriver) EncodeStringEnc(c charEncoding, s string) {
+ slen := len(s)
+ e.writeContainerLen(msgpackContainerStr, slen)
+ if slen > 0 {
+ e.w.writestr(s)
+ }
+}
+
func (e *msgpackEncDriver) EncodeStringBytes(c charEncoding, bs []byte) {
if bs == nil {
e.EncodeNil()
@@ -396,6 +403,22 @@ func (e *msgpackEncDriver) EncodeStringBytes(c charEncoding, bs []byte) {
}
}
+func (e *msgpackEncDriver) EncodeStringBytesRaw(bs []byte) {
+ if bs == nil {
+ e.EncodeNil()
+ return
+ }
+ slen := len(bs)
+ if e.h.WriteExt {
+ e.writeContainerLen(msgpackContainerBin, slen)
+ } else {
+ e.writeContainerLen(msgpackContainerStr, slen)
+ }
+ if slen > 0 {
+ e.w.writeb(bs)
+ }
+}
+
func (e *msgpackEncDriver) writeContainerLen(ct msgpackContainerType, l int) {
if ct.hasFixMin && l < ct.fixCutoff {
e.w.writen1(ct.bFixMin | byte(l))
@@ -414,7 +437,7 @@ func (e *msgpackEncDriver) writeContainerLen(ct msgpackContainerType, l int) {
type msgpackDecDriver struct {
d *Decoder
- r decReader // *Decoder decReader decReaderT
+ r *decReaderSwitch
h *MsgpackHandle
// b [scratchByteArrayLen]byte
bd byte
@@ -424,7 +447,7 @@ type msgpackDecDriver struct {
// noStreamingCodec
// decNoSeparator
decDriverNoopContainerReader
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
}
// Note: This returns either a primitive (int, bool, etc) for non-containers,
@@ -437,7 +460,7 @@ func (d *msgpackDecDriver) DecodeNaked() {
d.readNextBd()
}
bd := d.bd
- n := d.d.n
+ n := d.d.naked()
var decodeFurther bool
switch bd {
@@ -518,8 +541,10 @@ func (d *msgpackDecDriver) DecodeNaked() {
if n.u == uint64(mpTimeExtTagU) {
n.v = valueTypeTime
n.t = d.decodeTime(clen)
+ } else if d.br {
+ n.l = d.r.readx(uint(clen))
} else {
- n.l = d.r.readx(clen)
+ n.l = decByteSlice(d.r, clen, d.d.h.MaxInitLen, d.d.b[:])
}
default:
d.d.errorf("cannot infer value: %s: Ox%x/%d/%s", msgBadDesc, bd, bd, mpdesc(bd))
@@ -532,7 +557,6 @@ func (d *msgpackDecDriver) DecodeNaked() {
n.v = valueTypeInt
n.i = int64(n.u)
}
- return
}
// int can be decoded from msgpack type: intXXX or uintXXX
@@ -702,7 +726,7 @@ func (d *msgpackDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte)
}
if zerocopy {
if d.br {
- return d.r.readx(clen)
+ return d.r.readx(uint(clen))
} else if len(bs) == 0 {
bs = d.d.b[:]
}
@@ -912,7 +936,11 @@ func (d *msgpackDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs
d.d.errorf("wrong extension tag - got %b, expecting %v", xtag, tag)
return
}
- xbs = d.r.readx(clen)
+ if d.br {
+ xbs = d.r.readx(uint(clen))
+ } else {
+ xbs = decByteSlice(d.r, clen, d.d.h.MaxInitLen, d.d.b[:])
+ }
}
d.bdRead = false
return
@@ -942,6 +970,9 @@ type MsgpackHandle struct {
// a []byte or string based on the setting of RawToString.
WriteExt bool
+ // PositiveIntUnsigned says to encode positive integers as unsigned.
+ PositiveIntUnsigned bool
+
binaryEncodingType
noElemSeparators
@@ -1023,7 +1054,7 @@ func (c *msgpackSpecRpcCodec) ReadRequestBody(body interface{}) error {
}
func (c *msgpackSpecRpcCodec) parseCustomHeader(expectTypeByte byte, msgid *uint64, methodOrError *string) (err error) {
- if c.isClosed() {
+ if cls := c.cls.load(); cls.closed {
return io.EOF
}
diff --git a/vendor/github.com/ugorji/go/codec/rpc.go b/vendor/github.com/ugorji/go/codec/rpc.go
index 9fb3c014..39250881 100644
--- a/vendor/github.com/ugorji/go/codec/rpc.go
+++ b/vendor/github.com/ugorji/go/codec/rpc.go
@@ -8,9 +8,10 @@ import (
"errors"
"io"
"net/rpc"
- "sync"
)
+var errRpcJsonNeedsTermWhitespace = errors.New("rpc requires JsonHandle with TermWhitespace=true")
+
// Rpc provides a rpc Server or Client Codec for rpc communication.
type Rpc interface {
ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec
@@ -38,12 +39,9 @@ type rpcCodec struct {
enc *Encoder
// bw *bufio.Writer
// br *bufio.Reader
- mu sync.Mutex
- h Handle
+ h Handle
- cls bool
- clsmu sync.RWMutex
- clsErr error
+ cls atomicClsErr
}
func newRPCCodec(conn io.ReadWriteCloser, h Handle) rpcCodec {
@@ -54,12 +52,12 @@ func newRPCCodec(conn io.ReadWriteCloser, h Handle) rpcCodec {
func newRPCCodec2(r io.Reader, w io.Writer, c io.Closer, h Handle) rpcCodec {
// defensive: ensure that jsonH has TermWhitespace turned on.
if jsonH, ok := h.(*JsonHandle); ok && !jsonH.TermWhitespace {
- panic(errors.New("rpc requires a JsonHandle with TermWhitespace set to true"))
+ panic(errRpcJsonNeedsTermWhitespace)
}
// always ensure that we use a flusher, and always flush what was written to the connection.
// we lose nothing by using a buffered writer internally.
f, ok := w.(ioFlusher)
- bh := h.getBasicHandle()
+ bh := basicHandle(h)
if !bh.RPCNoBuffer {
if bh.WriterBufferSize <= 0 {
if !ok {
@@ -88,8 +86,11 @@ func newRPCCodec2(r io.Reader, w io.Writer, c io.Closer, h Handle) rpcCodec {
}
func (c *rpcCodec) write(obj1, obj2 interface{}, writeObj2 bool) (err error) {
- if c.isClosed() {
- return c.clsErr
+ if c.c != nil {
+ cls := c.cls.load()
+ if cls.closed {
+ return cls.errClosed
+ }
}
err = c.enc.Encode(obj1)
if err == nil {
@@ -116,8 +117,11 @@ func (c *rpcCodec) swallow(err *error) {
}
func (c *rpcCodec) read(obj interface{}) (err error) {
- if c.isClosed() {
- return c.clsErr
+ if c.c != nil {
+ cls := c.cls.load()
+ if cls.closed {
+ return cls.errClosed
+ }
}
//If nil is passed in, we should read and discard
if obj == nil {
@@ -129,24 +133,18 @@ func (c *rpcCodec) read(obj interface{}) (err error) {
return c.dec.Decode(obj)
}
-func (c *rpcCodec) isClosed() (b bool) {
- if c.c != nil {
- c.clsmu.RLock()
- b = c.cls
- c.clsmu.RUnlock()
- }
- return
-}
-
func (c *rpcCodec) Close() error {
- if c.c == nil || c.isClosed() {
- return c.clsErr
+ if c.c == nil {
+ return nil
+ }
+ cls := c.cls.load()
+ if cls.closed {
+ return cls.errClosed
}
- c.clsmu.Lock()
- c.cls = true
- c.clsErr = c.c.Close()
- c.clsmu.Unlock()
- return c.clsErr
+ cls.errClosed = c.c.Close()
+ cls.closed = true
+ c.cls.store(cls)
+ return cls.errClosed
}
func (c *rpcCodec) ReadResponseBody(body interface{}) error {
@@ -160,15 +158,10 @@ type goRpcCodec struct {
}
func (c *goRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error {
- // Must protect for concurrent access as per API
- c.mu.Lock()
- defer c.mu.Unlock()
return c.write(r, body, true)
}
func (c *goRpcCodec) WriteResponse(r *rpc.Response, body interface{}) error {
- c.mu.Lock()
- defer c.mu.Unlock()
return c.write(r, body, true)
}
diff --git a/vendor/github.com/ugorji/go/codec/simple.go b/vendor/github.com/ugorji/go/codec/simple.go
index f1e181ef..464c2f99 100644
--- a/vendor/github.com/ugorji/go/codec/simple.go
+++ b/vendor/github.com/ugorji/go/codec/simple.go
@@ -36,12 +36,12 @@ type simpleEncDriver struct {
// encNoSeparator
e *Encoder
h *SimpleHandle
- w encWriter
+ w *encWriterSwitch
b [8]byte
// c containerState
encDriverTrackContainerWriter
// encDriverNoopContainerWriter
- _ [2]uint64 // padding
+ _ [3]uint64 // padding
}
func (e *simpleEncDriver) EncodeNil() {
@@ -157,7 +157,11 @@ func (e *simpleEncDriver) WriteMapStart(length int) {
e.encLen(simpleVdMap, length)
}
-func (e *simpleEncDriver) EncodeString(c charEncoding, v string) {
+// func (e *simpleEncDriver) EncodeSymbol(v string) {
+// e.EncodeString(cUTF8, v)
+// }
+
+func (e *simpleEncDriver) EncodeStringEnc(c charEncoding, v string) {
if false && e.h.EncZeroValuesAsNil && e.c != containerMapKey && v == "" {
e.EncodeNil()
return
@@ -166,11 +170,15 @@ func (e *simpleEncDriver) EncodeString(c charEncoding, v string) {
e.w.writestr(v)
}
-// func (e *simpleEncDriver) EncodeSymbol(v string) {
-// e.EncodeString(cUTF8, v)
-// }
+func (e *simpleEncDriver) EncodeString(c charEncoding, v string) {
+ e.EncodeStringEnc(c, v)
+}
func (e *simpleEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
+ e.EncodeStringBytesRaw(v)
+}
+
+func (e *simpleEncDriver) EncodeStringBytesRaw(v []byte) {
// if e.h.EncZeroValuesAsNil && e.c != containerMapKey && v == nil {
if v == nil {
e.EncodeNil()
@@ -201,7 +209,7 @@ func (e *simpleEncDriver) EncodeTime(t time.Time) {
type simpleDecDriver struct {
d *Decoder
h *SimpleHandle
- r decReader
+ r *decReaderSwitch
bdRead bool
bd byte
br bool // a bytes reader?
@@ -210,7 +218,7 @@ type simpleDecDriver struct {
noBuiltInTypes
// noStreamingCodec
decDriverNoopContainerReader
- _ [3]uint64 // padding
+ // _ [3]uint64 // padding
}
func (d *simpleDecDriver) readNextBd() {
@@ -451,7 +459,7 @@ func (d *simpleDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
d.bdRead = false
if zerocopy {
if d.br {
- return d.r.readx(clen)
+ return d.r.readx(uint(clen))
} else if len(bs) == 0 {
bs = d.d.b[:]
}
@@ -473,7 +481,7 @@ func (d *simpleDecDriver) DecodeTime() (t time.Time) {
}
d.bdRead = false
clen := int(d.r.readn1())
- b := d.r.readx(clen)
+ b := d.r.readx(uint(clen))
if err := (&t).UnmarshalBinary(b); err != nil {
d.d.errorv(err)
}
@@ -509,7 +517,11 @@ func (d *simpleDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs [
d.d.errorf("wrong extension tag. Got %b. Expecting: %v", xtag, tag)
return
}
- xbs = d.r.readx(l)
+ if d.br {
+ xbs = d.r.readx(uint(l))
+ } else {
+ xbs = decByteSlice(d.r, l, d.d.h.MaxInitLen, d.d.b[:])
+ }
case simpleVdByteArray, simpleVdByteArray + 1,
simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4:
xbs = d.DecodeBytes(nil, true)
@@ -526,7 +538,7 @@ func (d *simpleDecDriver) DecodeNaked() {
d.readNextBd()
}
- n := d.d.n
+ n := d.d.naked()
var decodeFurther bool
switch d.bd {
@@ -570,7 +582,11 @@ func (d *simpleDecDriver) DecodeNaked() {
n.v = valueTypeExt
l := d.decLen()
n.u = uint64(d.r.readn1())
- n.l = d.r.readx(l)
+ if d.br {
+ n.l = d.r.readx(uint(l))
+ } else {
+ n.l = decByteSlice(d.r, l, d.d.h.MaxInitLen, d.d.b[:])
+ }
case simpleVdArray, simpleVdArray + 1, simpleVdArray + 2,
simpleVdArray + 3, simpleVdArray + 4:
n.v = valueTypeArray
@@ -585,7 +601,6 @@ func (d *simpleDecDriver) DecodeNaked() {
if !decodeFurther {
d.bdRead = false
}
- return
}
//------------------------------------