Copy disabled (too large)
Download .txt
Showing preview only (21,761K chars total). Download the full file to get everything.
Repository: squat/terraform-provider-vultr
Branch: master
Commit: 1616f3c28af1
Files: 2001
Total size: 20.3 MB
Directory structure:
gitextract_k5dcosea/
├── .gitignore
├── .travis.yml
├── LICENSE
├── Makefile
├── README.md
├── examples/
│ ├── application/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── bare_metal/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── basic/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── block_storage/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── dns/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── kubernetes/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── network/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── reserved_ip/
│ │ ├── example.tf
│ │ └── versions.tf
│ └── snapshot/
│ ├── example.tf
│ └── versions.tf
├── glide.yaml
├── main.go
├── structs/
│ ├── field.go
│ ├── structs.go
│ └── tags.go
├── vendor/
│ ├── cloud.google.com/
│ │ └── go/
│ │ ├── LICENSE
│ │ ├── compute/
│ │ │ └── metadata/
│ │ │ └── metadata.go
│ │ ├── iam/
│ │ │ └── iam.go
│ │ ├── internal/
│ │ │ ├── annotate.go
│ │ │ ├── optional/
│ │ │ │ └── optional.go
│ │ │ ├── retry.go
│ │ │ ├── trace/
│ │ │ │ └── trace.go
│ │ │ └── version/
│ │ │ └── version.go
│ │ └── storage/
│ │ ├── acl.go
│ │ ├── bucket.go
│ │ ├── copy.go
│ │ ├── doc.go
│ │ ├── go110.go
│ │ ├── iam.go
│ │ ├── invoke.go
│ │ ├── not_go110.go
│ │ ├── notifications.go
│ │ ├── reader.go
│ │ ├── storage.go
│ │ └── writer.go
│ ├── github.com/
│ │ ├── JamesClonk/
│ │ │ └── vultr/
│ │ │ ├── LICENSE
│ │ │ └── lib/
│ │ │ ├── account_info.go
│ │ │ ├── applications.go
│ │ │ ├── backup.go
│ │ │ ├── bare_metal.go
│ │ │ ├── bare_metal_plans.go
│ │ │ ├── block_storage.go
│ │ │ ├── client.go
│ │ │ ├── dns.go
│ │ │ ├── firewall.go
│ │ │ ├── ip.go
│ │ │ ├── iso.go
│ │ │ ├── network.go
│ │ │ ├── os.go
│ │ │ ├── plans.go
│ │ │ ├── regions.go
│ │ │ ├── reservedip.go
│ │ │ ├── scripts.go
│ │ │ ├── servers.go
│ │ │ ├── snapshots.go
│ │ │ └── sshkeys.go
│ │ ├── agext/
│ │ │ └── levenshtein/
│ │ │ ├── LICENSE
│ │ │ ├── NOTICE
│ │ │ ├── levenshtein.go
│ │ │ └── params.go
│ │ ├── apparentlymart/
│ │ │ ├── go-cidr/
│ │ │ │ ├── LICENSE
│ │ │ │ └── cidr/
│ │ │ │ ├── cidr.go
│ │ │ │ └── wrangling.go
│ │ │ └── go-textseg/
│ │ │ ├── LICENSE
│ │ │ └── textseg/
│ │ │ ├── all_tokens.go
│ │ │ ├── generate.go
│ │ │ ├── grapheme_clusters.go
│ │ │ ├── make_tables.go
│ │ │ ├── make_test_tables.go
│ │ │ ├── tables.go
│ │ │ └── utf8_seqs.go
│ │ ├── armon/
│ │ │ └── go-radix/
│ │ │ ├── LICENSE
│ │ │ └── radix.go
│ │ ├── aws/
│ │ │ └── aws-sdk-go/
│ │ │ ├── LICENSE.txt
│ │ │ ├── NOTICE.txt
│ │ │ ├── aws/
│ │ │ │ ├── awserr/
│ │ │ │ │ ├── error.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── awsutil/
│ │ │ │ │ ├── copy.go
│ │ │ │ │ ├── equal.go
│ │ │ │ │ ├── path_value.go
│ │ │ │ │ ├── prettify.go
│ │ │ │ │ └── string_value.go
│ │ │ │ ├── client/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── default_retryer.go
│ │ │ │ │ ├── logger.go
│ │ │ │ │ └── metadata/
│ │ │ │ │ └── client_info.go
│ │ │ │ ├── config.go
│ │ │ │ ├── context_1_5.go
│ │ │ │ ├── context_1_9.go
│ │ │ │ ├── context_background_1_5.go
│ │ │ │ ├── context_background_1_7.go
│ │ │ │ ├── context_sleep.go
│ │ │ │ ├── convert_types.go
│ │ │ │ ├── corehandlers/
│ │ │ │ │ ├── handlers.go
│ │ │ │ │ ├── param_validator.go
│ │ │ │ │ └── user_agent.go
│ │ │ │ ├── credentials/
│ │ │ │ │ ├── chain_provider.go
│ │ │ │ │ ├── credentials.go
│ │ │ │ │ ├── ec2rolecreds/
│ │ │ │ │ │ └── ec2_role_provider.go
│ │ │ │ │ ├── endpointcreds/
│ │ │ │ │ │ └── provider.go
│ │ │ │ │ ├── env_provider.go
│ │ │ │ │ ├── processcreds/
│ │ │ │ │ │ └── provider.go
│ │ │ │ │ ├── shared_credentials_provider.go
│ │ │ │ │ ├── static_provider.go
│ │ │ │ │ └── stscreds/
│ │ │ │ │ └── assume_role_provider.go
│ │ │ │ ├── csm/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── enable.go
│ │ │ │ │ ├── metric.go
│ │ │ │ │ ├── metric_chan.go
│ │ │ │ │ ├── metric_exception.go
│ │ │ │ │ └── reporter.go
│ │ │ │ ├── defaults/
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ └── shared_config.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── ec2metadata/
│ │ │ │ │ ├── api.go
│ │ │ │ │ └── service.go
│ │ │ │ ├── endpoints/
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ ├── dep_service_ids.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── endpoints.go
│ │ │ │ │ ├── v3model.go
│ │ │ │ │ └── v3model_codegen.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── jsonvalue.go
│ │ │ │ ├── logger.go
│ │ │ │ ├── request/
│ │ │ │ │ ├── connection_reset_error.go
│ │ │ │ │ ├── handlers.go
│ │ │ │ │ ├── http_request.go
│ │ │ │ │ ├── offset_reader.go
│ │ │ │ │ ├── request.go
│ │ │ │ │ ├── request_1_7.go
│ │ │ │ │ ├── request_1_8.go
│ │ │ │ │ ├── request_context.go
│ │ │ │ │ ├── request_context_1_6.go
│ │ │ │ │ ├── request_pagination.go
│ │ │ │ │ ├── retryer.go
│ │ │ │ │ ├── timeout_read_closer.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ └── waiter.go
│ │ │ │ ├── session/
│ │ │ │ │ ├── cabundle_transport.go
│ │ │ │ │ ├── cabundle_transport_1_5.go
│ │ │ │ │ ├── cabundle_transport_1_6.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── env_config.go
│ │ │ │ │ ├── session.go
│ │ │ │ │ └── shared_config.go
│ │ │ │ ├── signer/
│ │ │ │ │ └── v4/
│ │ │ │ │ ├── header_rules.go
│ │ │ │ │ ├── options.go
│ │ │ │ │ ├── uri_path.go
│ │ │ │ │ └── v4.go
│ │ │ │ ├── types.go
│ │ │ │ ├── url.go
│ │ │ │ ├── url_1_7.go
│ │ │ │ └── version.go
│ │ │ ├── internal/
│ │ │ │ ├── ini/
│ │ │ │ │ ├── ast.go
│ │ │ │ │ ├── comma_token.go
│ │ │ │ │ ├── comment_token.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── empty_token.go
│ │ │ │ │ ├── expression.go
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ ├── ini.go
│ │ │ │ │ ├── ini_lexer.go
│ │ │ │ │ ├── ini_parser.go
│ │ │ │ │ ├── literal_tokens.go
│ │ │ │ │ ├── newline_token.go
│ │ │ │ │ ├── number_helper.go
│ │ │ │ │ ├── op_tokens.go
│ │ │ │ │ ├── parse_error.go
│ │ │ │ │ ├── parse_stack.go
│ │ │ │ │ ├── sep_tokens.go
│ │ │ │ │ ├── skipper.go
│ │ │ │ │ ├── statement.go
│ │ │ │ │ ├── value_util.go
│ │ │ │ │ ├── visitor.go
│ │ │ │ │ ├── walker.go
│ │ │ │ │ └── ws_token.go
│ │ │ │ ├── s3err/
│ │ │ │ │ └── error.go
│ │ │ │ ├── sdkio/
│ │ │ │ │ ├── io_go1.6.go
│ │ │ │ │ └── io_go1.7.go
│ │ │ │ ├── sdkrand/
│ │ │ │ │ └── locked_source.go
│ │ │ │ ├── sdkuri/
│ │ │ │ │ └── path.go
│ │ │ │ └── shareddefaults/
│ │ │ │ ├── ecs_container.go
│ │ │ │ └── shared_config.go
│ │ │ ├── private/
│ │ │ │ └── protocol/
│ │ │ │ ├── eventstream/
│ │ │ │ │ ├── debug.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── eventstreamapi/
│ │ │ │ │ │ ├── api.go
│ │ │ │ │ │ └── error.go
│ │ │ │ │ ├── header.go
│ │ │ │ │ ├── header_value.go
│ │ │ │ │ └── message.go
│ │ │ │ ├── host.go
│ │ │ │ ├── host_prefix.go
│ │ │ │ ├── idempotency.go
│ │ │ │ ├── json/
│ │ │ │ │ └── jsonutil/
│ │ │ │ │ ├── build.go
│ │ │ │ │ └── unmarshal.go
│ │ │ │ ├── jsonvalue.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── query/
│ │ │ │ │ ├── build.go
│ │ │ │ │ ├── queryutil/
│ │ │ │ │ │ └── queryutil.go
│ │ │ │ │ ├── unmarshal.go
│ │ │ │ │ └── unmarshal_error.go
│ │ │ │ ├── rest/
│ │ │ │ │ ├── build.go
│ │ │ │ │ ├── payload.go
│ │ │ │ │ └── unmarshal.go
│ │ │ │ ├── restxml/
│ │ │ │ │ └── restxml.go
│ │ │ │ ├── timestamp.go
│ │ │ │ ├── unmarshal.go
│ │ │ │ └── xml/
│ │ │ │ └── xmlutil/
│ │ │ │ ├── build.go
│ │ │ │ ├── unmarshal.go
│ │ │ │ └── xml_to_struct.go
│ │ │ └── service/
│ │ │ ├── s3/
│ │ │ │ ├── api.go
│ │ │ │ ├── body_hash.go
│ │ │ │ ├── bucket_location.go
│ │ │ │ ├── customizations.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── doc_custom.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── host_style_bucket.go
│ │ │ │ ├── platform_handlers.go
│ │ │ │ ├── platform_handlers_go1.6.go
│ │ │ │ ├── service.go
│ │ │ │ ├── sse.go
│ │ │ │ ├── statusok_error.go
│ │ │ │ ├── unmarshal_error.go
│ │ │ │ └── waiters.go
│ │ │ └── sts/
│ │ │ ├── api.go
│ │ │ ├── doc.go
│ │ │ ├── errors.go
│ │ │ └── service.go
│ │ ├── bgentry/
│ │ │ ├── go-netrc/
│ │ │ │ ├── LICENSE
│ │ │ │ └── netrc/
│ │ │ │ └── netrc.go
│ │ │ └── speakeasy/
│ │ │ ├── LICENSE
│ │ │ ├── LICENSE_WINDOWS
│ │ │ ├── speakeasy.go
│ │ │ ├── speakeasy_unix.go
│ │ │ └── speakeasy_windows.go
│ │ ├── blang/
│ │ │ └── semver/
│ │ │ ├── LICENSE
│ │ │ ├── json.go
│ │ │ ├── range.go
│ │ │ ├── semver.go
│ │ │ ├── sort.go
│ │ │ └── sql.go
│ │ ├── davecgh/
│ │ │ └── go-spew/
│ │ │ ├── LICENSE
│ │ │ └── spew/
│ │ │ ├── bypass.go
│ │ │ ├── bypasssafe.go
│ │ │ ├── common.go
│ │ │ ├── config.go
│ │ │ ├── doc.go
│ │ │ ├── dump.go
│ │ │ ├── format.go
│ │ │ └── spew.go
│ │ ├── fatih/
│ │ │ ├── color/
│ │ │ │ ├── LICENSE.md
│ │ │ │ ├── color.go
│ │ │ │ └── doc.go
│ │ │ └── structs/
│ │ │ ├── LICENSE
│ │ │ ├── field.go
│ │ │ ├── structs.go
│ │ │ └── tags.go
│ │ ├── golang/
│ │ │ └── protobuf/
│ │ │ ├── LICENSE
│ │ │ ├── proto/
│ │ │ │ ├── clone.go
│ │ │ │ ├── decode.go
│ │ │ │ ├── deprecated.go
│ │ │ │ ├── discard.go
│ │ │ │ ├── encode.go
│ │ │ │ ├── equal.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── lib.go
│ │ │ │ ├── message_set.go
│ │ │ │ ├── pointer_reflect.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── table_marshal.go
│ │ │ │ ├── table_merge.go
│ │ │ │ ├── table_unmarshal.go
│ │ │ │ ├── text.go
│ │ │ │ └── text_parser.go
│ │ │ ├── protoc-gen-go/
│ │ │ │ └── descriptor/
│ │ │ │ └── descriptor.pb.go
│ │ │ └── ptypes/
│ │ │ ├── any/
│ │ │ │ └── any.pb.go
│ │ │ ├── any.go
│ │ │ ├── doc.go
│ │ │ ├── duration/
│ │ │ │ └── duration.pb.go
│ │ │ ├── duration.go
│ │ │ ├── timestamp/
│ │ │ │ └── timestamp.pb.go
│ │ │ └── timestamp.go
│ │ ├── google/
│ │ │ └── go-cmp/
│ │ │ ├── LICENSE
│ │ │ └── cmp/
│ │ │ ├── compare.go
│ │ │ ├── export_panic.go
│ │ │ ├── export_unsafe.go
│ │ │ ├── internal/
│ │ │ │ ├── diff/
│ │ │ │ │ ├── debug_disable.go
│ │ │ │ │ ├── debug_enable.go
│ │ │ │ │ └── diff.go
│ │ │ │ ├── flags/
│ │ │ │ │ ├── flags.go
│ │ │ │ │ ├── toolchain_legacy.go
│ │ │ │ │ └── toolchain_recent.go
│ │ │ │ ├── function/
│ │ │ │ │ └── func.go
│ │ │ │ └── value/
│ │ │ │ ├── pointer_purego.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── sort.go
│ │ │ │ └── zero.go
│ │ │ ├── options.go
│ │ │ ├── path.go
│ │ │ ├── report.go
│ │ │ ├── report_compare.go
│ │ │ ├── report_reflect.go
│ │ │ ├── report_slices.go
│ │ │ ├── report_text.go
│ │ │ └── report_value.go
│ │ ├── googleapis/
│ │ │ └── gax-go/
│ │ │ ├── LICENSE
│ │ │ └── v2/
│ │ │ ├── call_option.go
│ │ │ ├── gax.go
│ │ │ ├── header.go
│ │ │ └── invoke.go
│ │ ├── hashicorp/
│ │ │ ├── errwrap/
│ │ │ │ ├── LICENSE
│ │ │ │ └── errwrap.go
│ │ │ ├── go-cleanhttp/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── cleanhttp.go
│ │ │ │ ├── doc.go
│ │ │ │ └── handlers.go
│ │ │ ├── go-getter/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── checksum.go
│ │ │ │ ├── client.go
│ │ │ │ ├── client_mode.go
│ │ │ │ ├── client_option.go
│ │ │ │ ├── client_option_progress.go
│ │ │ │ ├── common.go
│ │ │ │ ├── copy_dir.go
│ │ │ │ ├── decompress.go
│ │ │ │ ├── decompress_bzip2.go
│ │ │ │ ├── decompress_gzip.go
│ │ │ │ ├── decompress_tar.go
│ │ │ │ ├── decompress_tbz2.go
│ │ │ │ ├── decompress_testing.go
│ │ │ │ ├── decompress_tgz.go
│ │ │ │ ├── decompress_txz.go
│ │ │ │ ├── decompress_xz.go
│ │ │ │ ├── decompress_zip.go
│ │ │ │ ├── detect.go
│ │ │ │ ├── detect_bitbucket.go
│ │ │ │ ├── detect_file.go
│ │ │ │ ├── detect_gcs.go
│ │ │ │ ├── detect_git.go
│ │ │ │ ├── detect_github.go
│ │ │ │ ├── detect_s3.go
│ │ │ │ ├── detect_ssh.go
│ │ │ │ ├── folder_storage.go
│ │ │ │ ├── get.go
│ │ │ │ ├── get_base.go
│ │ │ │ ├── get_file.go
│ │ │ │ ├── get_file_copy.go
│ │ │ │ ├── get_file_unix.go
│ │ │ │ ├── get_file_windows.go
│ │ │ │ ├── get_gcs.go
│ │ │ │ ├── get_git.go
│ │ │ │ ├── get_hg.go
│ │ │ │ ├── get_http.go
│ │ │ │ ├── get_mock.go
│ │ │ │ ├── get_s3.go
│ │ │ │ ├── helper/
│ │ │ │ │ └── url/
│ │ │ │ │ ├── url.go
│ │ │ │ │ ├── url_unix.go
│ │ │ │ │ └── url_windows.go
│ │ │ │ ├── netrc.go
│ │ │ │ ├── source.go
│ │ │ │ └── storage.go
│ │ │ ├── go-hclog/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── context.go
│ │ │ │ ├── global.go
│ │ │ │ ├── intlogger.go
│ │ │ │ ├── logger.go
│ │ │ │ ├── nulllogger.go
│ │ │ │ ├── stacktrace.go
│ │ │ │ ├── stdlog.go
│ │ │ │ └── writer.go
│ │ │ ├── go-multierror/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── append.go
│ │ │ │ ├── flatten.go
│ │ │ │ ├── format.go
│ │ │ │ ├── multierror.go
│ │ │ │ ├── prefix.go
│ │ │ │ └── sort.go
│ │ │ ├── go-plugin/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── client.go
│ │ │ │ ├── discover.go
│ │ │ │ ├── error.go
│ │ │ │ ├── grpc_broker.go
│ │ │ │ ├── grpc_client.go
│ │ │ │ ├── grpc_controller.go
│ │ │ │ ├── grpc_server.go
│ │ │ │ ├── internal/
│ │ │ │ │ └── plugin/
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── grpc_broker.pb.go
│ │ │ │ │ └── grpc_controller.pb.go
│ │ │ │ ├── log_entry.go
│ │ │ │ ├── mtls.go
│ │ │ │ ├── mux_broker.go
│ │ │ │ ├── plugin.go
│ │ │ │ ├── process.go
│ │ │ │ ├── process_posix.go
│ │ │ │ ├── process_windows.go
│ │ │ │ ├── protocol.go
│ │ │ │ ├── rpc_client.go
│ │ │ │ ├── rpc_server.go
│ │ │ │ ├── server.go
│ │ │ │ ├── server_mux.go
│ │ │ │ ├── stream.go
│ │ │ │ └── testing.go
│ │ │ ├── go-safetemp/
│ │ │ │ ├── LICENSE
│ │ │ │ └── safetemp.go
│ │ │ ├── go-uuid/
│ │ │ │ ├── LICENSE
│ │ │ │ └── uuid.go
│ │ │ ├── go-version/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── constraint.go
│ │ │ │ ├── version.go
│ │ │ │ └── version_collection.go
│ │ │ ├── golang-lru/
│ │ │ │ ├── LICENSE
│ │ │ │ └── simplelru/
│ │ │ │ ├── lru.go
│ │ │ │ └── lru_interface.go
│ │ │ ├── hcl/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── decoder.go
│ │ │ │ ├── hcl/
│ │ │ │ │ ├── ast/
│ │ │ │ │ │ ├── ast.go
│ │ │ │ │ │ └── walk.go
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ └── parser.go
│ │ │ │ │ ├── scanner/
│ │ │ │ │ │ └── scanner.go
│ │ │ │ │ ├── strconv/
│ │ │ │ │ │ └── quote.go
│ │ │ │ │ └── token/
│ │ │ │ │ ├── position.go
│ │ │ │ │ └── token.go
│ │ │ │ ├── hcl.go
│ │ │ │ ├── json/
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── flatten.go
│ │ │ │ │ │ └── parser.go
│ │ │ │ │ ├── scanner/
│ │ │ │ │ │ └── scanner.go
│ │ │ │ │ └── token/
│ │ │ │ │ ├── position.go
│ │ │ │ │ └── token.go
│ │ │ │ ├── lex.go
│ │ │ │ └── parse.go
│ │ │ ├── hcl2/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── ext/
│ │ │ │ │ ├── dynblock/
│ │ │ │ │ │ ├── expand_body.go
│ │ │ │ │ │ ├── expand_spec.go
│ │ │ │ │ │ ├── expr_wrap.go
│ │ │ │ │ │ ├── iteration.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ ├── unknown_body.go
│ │ │ │ │ │ ├── variables.go
│ │ │ │ │ │ └── variables_hcldec.go
│ │ │ │ │ └── typeexpr/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── get_type.go
│ │ │ │ │ └── public.go
│ │ │ │ ├── gohcl/
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── hcl/
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diagnostic_text.go
│ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eval_context.go
│ │ │ │ │ ├── expr_call.go
│ │ │ │ │ ├── expr_list.go
│ │ │ │ │ ├── expr_map.go
│ │ │ │ │ ├── expr_unwrap.go
│ │ │ │ │ ├── hclsyntax/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── expression.go
│ │ │ │ │ │ ├── expression_ops.go
│ │ │ │ │ │ ├── expression_template.go
│ │ │ │ │ │ ├── expression_vars.go
│ │ │ │ │ │ ├── expression_vars_gen.go
│ │ │ │ │ │ ├── file.go
│ │ │ │ │ │ ├── generate.go
│ │ │ │ │ │ ├── keywords.go
│ │ │ │ │ │ ├── navigation.go
│ │ │ │ │ │ ├── node.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── parser_template.go
│ │ │ │ │ │ ├── parser_traversal.go
│ │ │ │ │ │ ├── peeker.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── scan_string_lit.go
│ │ │ │ │ │ ├── scan_tokens.go
│ │ │ │ │ │ ├── structure.go
│ │ │ │ │ │ ├── structure_at_pos.go
│ │ │ │ │ │ ├── token.go
│ │ │ │ │ │ ├── token_type_string.go
│ │ │ │ │ │ ├── variables.go
│ │ │ │ │ │ └── walk.go
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── ast.go
│ │ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── navigation.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── peeker.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── scanner.go
│ │ │ │ │ │ ├── structure.go
│ │ │ │ │ │ └── tokentype_string.go
│ │ │ │ │ ├── merged.go
│ │ │ │ │ ├── ops.go
│ │ │ │ │ ├── pos.go
│ │ │ │ │ ├── pos_scanner.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── static_expr.go
│ │ │ │ │ ├── structure.go
│ │ │ │ │ ├── structure_at_pos.go
│ │ │ │ │ ├── traversal.go
│ │ │ │ │ └── traversal_for_expr.go
│ │ │ │ ├── hcldec/
│ │ │ │ │ ├── block_labels.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── gob.go
│ │ │ │ │ ├── public.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── spec.go
│ │ │ │ │ └── variables.go
│ │ │ │ ├── hcled/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── navigation.go
│ │ │ │ ├── hclparse/
│ │ │ │ │ └── parser.go
│ │ │ │ └── hclwrite/
│ │ │ │ ├── ast.go
│ │ │ │ ├── ast_attribute.go
│ │ │ │ ├── ast_block.go
│ │ │ │ ├── ast_body.go
│ │ │ │ ├── ast_expression.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── format.go
│ │ │ │ ├── generate.go
│ │ │ │ ├── native_node_sorter.go
│ │ │ │ ├── node.go
│ │ │ │ ├── parser.go
│ │ │ │ ├── public.go
│ │ │ │ └── tokens.go
│ │ │ ├── hil/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── ast/
│ │ │ │ │ ├── arithmetic.go
│ │ │ │ │ ├── arithmetic_op.go
│ │ │ │ │ ├── ast.go
│ │ │ │ │ ├── call.go
│ │ │ │ │ ├── conditional.go
│ │ │ │ │ ├── index.go
│ │ │ │ │ ├── literal.go
│ │ │ │ │ ├── output.go
│ │ │ │ │ ├── scope.go
│ │ │ │ │ ├── stack.go
│ │ │ │ │ ├── type_string.go
│ │ │ │ │ ├── unknown.go
│ │ │ │ │ ├── variable_access.go
│ │ │ │ │ └── variables_helper.go
│ │ │ │ ├── builtins.go
│ │ │ │ ├── check_identifier.go
│ │ │ │ ├── check_types.go
│ │ │ │ ├── convert.go
│ │ │ │ ├── eval.go
│ │ │ │ ├── eval_type.go
│ │ │ │ ├── evaltype_string.go
│ │ │ │ ├── parse.go
│ │ │ │ ├── parser/
│ │ │ │ │ ├── binary_op.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ └── parser.go
│ │ │ │ ├── scanner/
│ │ │ │ │ ├── peeker.go
│ │ │ │ │ ├── scanner.go
│ │ │ │ │ ├── token.go
│ │ │ │ │ └── tokentype_string.go
│ │ │ │ ├── transform_fixed.go
│ │ │ │ └── walk.go
│ │ │ ├── logutils/
│ │ │ │ ├── LICENSE
│ │ │ │ └── level.go
│ │ │ ├── terraform/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── addrs/
│ │ │ │ │ ├── count_attr.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── input_variable.go
│ │ │ │ │ ├── instance_key.go
│ │ │ │ │ ├── local_value.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_call.go
│ │ │ │ │ ├── module_instance.go
│ │ │ │ │ ├── output_value.go
│ │ │ │ │ ├── parse_ref.go
│ │ │ │ │ ├── parse_target.go
│ │ │ │ │ ├── path_attr.go
│ │ │ │ │ ├── provider_config.go
│ │ │ │ │ ├── referenceable.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_phase.go
│ │ │ │ │ ├── resourcemode_string.go
│ │ │ │ │ ├── self.go
│ │ │ │ │ ├── targetable.go
│ │ │ │ │ └── terraform_attr.go
│ │ │ │ ├── command/
│ │ │ │ │ └── format/
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diff.go
│ │ │ │ │ ├── format.go
│ │ │ │ │ ├── object_id.go
│ │ │ │ │ ├── plan.go
│ │ │ │ │ └── state.go
│ │ │ │ ├── config/
│ │ │ │ │ ├── append.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_string.go
│ │ │ │ │ ├── config_terraform.go
│ │ │ │ │ ├── config_tree.go
│ │ │ │ │ ├── hcl2_shim_util.go
│ │ │ │ │ ├── hcl2shim/
│ │ │ │ │ │ ├── flatmap.go
│ │ │ │ │ │ ├── paths.go
│ │ │ │ │ │ ├── single_attr_body.go
│ │ │ │ │ │ ├── values.go
│ │ │ │ │ │ └── values_equiv.go
│ │ │ │ │ ├── import_tree.go
│ │ │ │ │ ├── interpolate.go
│ │ │ │ │ ├── interpolate_funcs.go
│ │ │ │ │ ├── interpolate_walk.go
│ │ │ │ │ ├── lang.go
│ │ │ │ │ ├── loader.go
│ │ │ │ │ ├── loader_hcl.go
│ │ │ │ │ ├── loader_hcl2.go
│ │ │ │ │ ├── merge.go
│ │ │ │ │ ├── module/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── get.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── module.go
│ │ │ │ │ │ ├── storage.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ ├── tree.go
│ │ │ │ │ │ ├── tree_gob.go
│ │ │ │ │ │ ├── validate_provider_alias.go
│ │ │ │ │ │ └── versions.go
│ │ │ │ │ ├── providers.go
│ │ │ │ │ ├── provisioner_enums.go
│ │ │ │ │ ├── raw_config.go
│ │ │ │ │ ├── resource_mode.go
│ │ │ │ │ ├── resource_mode_string.go
│ │ │ │ │ └── testing.go
│ │ │ │ ├── configs/
│ │ │ │ │ ├── backend.go
│ │ │ │ │ ├── compat_shim.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_build.go
│ │ │ │ │ ├── configload/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── getter.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── loader.go
│ │ │ │ │ │ ├── loader_load.go
│ │ │ │ │ │ ├── loader_snapshot.go
│ │ │ │ │ │ ├── module_mgr.go
│ │ │ │ │ │ ├── source_addr.go
│ │ │ │ │ │ └── testing.go
│ │ │ │ │ ├── configschema/
│ │ │ │ │ │ ├── coerce_value.go
│ │ │ │ │ │ ├── decoder_spec.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── empty_value.go
│ │ │ │ │ │ ├── implied_type.go
│ │ │ │ │ │ ├── internal_validate.go
│ │ │ │ │ │ ├── nestingmode_string.go
│ │ │ │ │ │ ├── none_required.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ └── validate_traversal.go
│ │ │ │ │ ├── depends_on.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_call.go
│ │ │ │ │ ├── module_merge.go
│ │ │ │ │ ├── module_merge_body.go
│ │ │ │ │ ├── named_values.go
│ │ │ │ │ ├── parser.go
│ │ │ │ │ ├── parser_config.go
│ │ │ │ │ ├── parser_config_dir.go
│ │ │ │ │ ├── parser_values.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provisioner.go
│ │ │ │ │ ├── provisioneronfailure_string.go
│ │ │ │ │ ├── provisionerwhen_string.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── synth_body.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── variable_type_hint.go
│ │ │ │ │ ├── variabletypehint_string.go
│ │ │ │ │ └── version_constraint.go
│ │ │ │ ├── dag/
│ │ │ │ │ ├── dag.go
│ │ │ │ │ ├── dot.go
│ │ │ │ │ ├── edge.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── marshal.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ ├── tarjan.go
│ │ │ │ │ └── walk.go
│ │ │ │ ├── flatmap/
│ │ │ │ │ ├── expand.go
│ │ │ │ │ ├── flatten.go
│ │ │ │ │ └── map.go
│ │ │ │ ├── helper/
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── decode.go
│ │ │ │ │ │ └── validator.go
│ │ │ │ │ ├── didyoumean/
│ │ │ │ │ │ └── name_suggestion.go
│ │ │ │ │ ├── hashcode/
│ │ │ │ │ │ └── hashcode.go
│ │ │ │ │ ├── hilmapstructure/
│ │ │ │ │ │ └── hilmapstructure.go
│ │ │ │ │ ├── logging/
│ │ │ │ │ │ ├── logging.go
│ │ │ │ │ │ └── transport.go
│ │ │ │ │ ├── mutexkv/
│ │ │ │ │ │ └── mutexkv.go
│ │ │ │ │ ├── plugin/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── grpc_provider.go
│ │ │ │ │ │ ├── grpc_provisioner.go
│ │ │ │ │ │ └── unknown.go
│ │ │ │ │ ├── resource/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ ├── grpc_test_provider.go
│ │ │ │ │ │ ├── id.go
│ │ │ │ │ │ ├── map.go
│ │ │ │ │ │ ├── resource.go
│ │ │ │ │ │ ├── state.go
│ │ │ │ │ │ ├── state_shim.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ ├── testing_config.go
│ │ │ │ │ │ ├── testing_import_state.go
│ │ │ │ │ │ └── wait.go
│ │ │ │ │ └── schema/
│ │ │ │ │ ├── backend.go
│ │ │ │ │ ├── core_schema.go
│ │ │ │ │ ├── data_source_resource_shim.go
│ │ │ │ │ ├── equal.go
│ │ │ │ │ ├── field_reader.go
│ │ │ │ │ ├── field_reader_config.go
│ │ │ │ │ ├── field_reader_diff.go
│ │ │ │ │ ├── field_reader_map.go
│ │ │ │ │ ├── field_reader_multi.go
│ │ │ │ │ ├── field_writer.go
│ │ │ │ │ ├── field_writer_map.go
│ │ │ │ │ ├── getsource_string.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provisioner.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_data.go
│ │ │ │ │ ├── resource_data_get_source.go
│ │ │ │ │ ├── resource_diff.go
│ │ │ │ │ ├── resource_importer.go
│ │ │ │ │ ├── resource_timeout.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── serialize.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ ├── shims.go
│ │ │ │ │ ├── testing.go
│ │ │ │ │ ├── valuetype.go
│ │ │ │ │ └── valuetype_string.go
│ │ │ │ ├── httpclient/
│ │ │ │ │ ├── client.go
│ │ │ │ │ └── useragent.go
│ │ │ │ ├── internal/
│ │ │ │ │ ├── earlyconfig/
│ │ │ │ │ │ ├── config.go
│ │ │ │ │ │ ├── config_build.go
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ └── module.go
│ │ │ │ │ ├── initwd/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── from_module.go
│ │ │ │ │ │ ├── getter.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── load_config.go
│ │ │ │ │ │ ├── module_install.go
│ │ │ │ │ │ ├── module_install_hooks.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ └── version_required.go
│ │ │ │ │ ├── modsdir/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── manifest.go
│ │ │ │ │ │ └── paths.go
│ │ │ │ │ └── tfplugin5/
│ │ │ │ │ └── tfplugin5.pb.go
│ │ │ │ ├── lang/
│ │ │ │ │ ├── blocktoattr/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fixup.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ └── variables.go
│ │ │ │ │ ├── data.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eval.go
│ │ │ │ │ ├── funcs/
│ │ │ │ │ │ ├── cidr.go
│ │ │ │ │ │ ├── collection.go
│ │ │ │ │ │ ├── conversion.go
│ │ │ │ │ │ ├── crypto.go
│ │ │ │ │ │ ├── datetime.go
│ │ │ │ │ │ ├── encoding.go
│ │ │ │ │ │ ├── filesystem.go
│ │ │ │ │ │ ├── number.go
│ │ │ │ │ │ └── string.go
│ │ │ │ │ ├── functions.go
│ │ │ │ │ ├── references.go
│ │ │ │ │ └── scope.go
│ │ │ │ ├── moduledeps/
│ │ │ │ │ ├── dependencies.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ └── provider.go
│ │ │ │ ├── plans/
│ │ │ │ │ ├── action.go
│ │ │ │ │ ├── action_string.go
│ │ │ │ │ ├── changes.go
│ │ │ │ │ ├── changes_src.go
│ │ │ │ │ ├── changes_state.go
│ │ │ │ │ ├── changes_sync.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── dynamic_value.go
│ │ │ │ │ ├── objchange/
│ │ │ │ │ │ ├── all_null.go
│ │ │ │ │ │ ├── compatible.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── lcs.go
│ │ │ │ │ │ ├── normalize_obj.go
│ │ │ │ │ │ ├── objchange.go
│ │ │ │ │ │ └── plan_valid.go
│ │ │ │ │ └── plan.go
│ │ │ │ ├── plugin/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── convert/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ └── schema.go
│ │ │ │ │ ├── discovery/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ ├── find.go
│ │ │ │ │ │ ├── get.go
│ │ │ │ │ │ ├── get_cache.go
│ │ │ │ │ │ ├── hashicorp.go
│ │ │ │ │ │ ├── meta.go
│ │ │ │ │ │ ├── meta_set.go
│ │ │ │ │ │ ├── requirements.go
│ │ │ │ │ │ ├── signature.go
│ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ └── version_set.go
│ │ │ │ │ ├── grpc_provider.go
│ │ │ │ │ ├── grpc_provisioner.go
│ │ │ │ │ ├── plugin.go
│ │ │ │ │ ├── resource_provider.go
│ │ │ │ │ ├── resource_provisioner.go
│ │ │ │ │ ├── serve.go
│ │ │ │ │ ├── ui_input.go
│ │ │ │ │ └── ui_output.go
│ │ │ │ ├── providers/
│ │ │ │ │ ├── addressed_types.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ └── resolver.go
│ │ │ │ ├── provisioners/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── factory.go
│ │ │ │ │ └── provisioner.go
│ │ │ │ ├── registry/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── regsrc/
│ │ │ │ │ │ ├── friendly_host.go
│ │ │ │ │ │ ├── module.go
│ │ │ │ │ │ ├── regsrc.go
│ │ │ │ │ │ └── terraform_provider.go
│ │ │ │ │ └── response/
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_list.go
│ │ │ │ │ ├── module_provider.go
│ │ │ │ │ ├── module_versions.go
│ │ │ │ │ ├── pagination.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provider_list.go
│ │ │ │ │ ├── redirect.go
│ │ │ │ │ └── terraform_provider.go
│ │ │ │ ├── states/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eachmode_string.go
│ │ │ │ │ ├── instance_generation.go
│ │ │ │ │ ├── instance_object.go
│ │ │ │ │ ├── instance_object_src.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── objectstatus_string.go
│ │ │ │ │ ├── output_value.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_deepcopy.go
│ │ │ │ │ ├── state_equal.go
│ │ │ │ │ ├── state_string.go
│ │ │ │ │ ├── statefile/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── file.go
│ │ │ │ │ │ ├── marshal_equal.go
│ │ │ │ │ │ ├── read.go
│ │ │ │ │ │ ├── version0.go
│ │ │ │ │ │ ├── version1.go
│ │ │ │ │ │ ├── version1_upgrade.go
│ │ │ │ │ │ ├── version2.go
│ │ │ │ │ │ ├── version2_upgrade.go
│ │ │ │ │ │ ├── version3.go
│ │ │ │ │ │ ├── version3_upgrade.go
│ │ │ │ │ │ ├── version4.go
│ │ │ │ │ │ └── write.go
│ │ │ │ │ └── sync.go
│ │ │ │ ├── svchost/
│ │ │ │ │ ├── auth/
│ │ │ │ │ │ ├── cache.go
│ │ │ │ │ │ ├── credentials.go
│ │ │ │ │ │ ├── from_map.go
│ │ │ │ │ │ ├── helper_program.go
│ │ │ │ │ │ ├── static.go
│ │ │ │ │ │ └── token_credentials.go
│ │ │ │ │ ├── disco/
│ │ │ │ │ │ ├── disco.go
│ │ │ │ │ │ └── host.go
│ │ │ │ │ ├── label_iter.go
│ │ │ │ │ └── svchost.go
│ │ │ │ ├── terraform/
│ │ │ │ │ ├── context.go
│ │ │ │ │ ├── context_components.go
│ │ │ │ │ ├── context_graph_type.go
│ │ │ │ │ ├── context_import.go
│ │ │ │ │ ├── context_input.go
│ │ │ │ │ ├── diff.go
│ │ │ │ │ ├── edge_destroy.go
│ │ │ │ │ ├── eval.go
│ │ │ │ │ ├── eval_apply.go
│ │ │ │ │ ├── eval_check_prevent_destroy.go
│ │ │ │ │ ├── eval_context.go
│ │ │ │ │ ├── eval_context_builtin.go
│ │ │ │ │ ├── eval_context_mock.go
│ │ │ │ │ ├── eval_count.go
│ │ │ │ │ ├── eval_count_boundary.go
│ │ │ │ │ ├── eval_count_computed.go
│ │ │ │ │ ├── eval_diff.go
│ │ │ │ │ ├── eval_error.go
│ │ │ │ │ ├── eval_filter.go
│ │ │ │ │ ├── eval_filter_operation.go
│ │ │ │ │ ├── eval_if.go
│ │ │ │ │ ├── eval_import_state.go
│ │ │ │ │ ├── eval_lang.go
│ │ │ │ │ ├── eval_local.go
│ │ │ │ │ ├── eval_noop.go
│ │ │ │ │ ├── eval_output.go
│ │ │ │ │ ├── eval_provider.go
│ │ │ │ │ ├── eval_provisioner.go
│ │ │ │ │ ├── eval_read_data.go
│ │ │ │ │ ├── eval_refresh.go
│ │ │ │ │ ├── eval_sequence.go
│ │ │ │ │ ├── eval_state.go
│ │ │ │ │ ├── eval_state_upgrade.go
│ │ │ │ │ ├── eval_validate.go
│ │ │ │ │ ├── eval_validate_selfref.go
│ │ │ │ │ ├── eval_variable.go
│ │ │ │ │ ├── evaltree_provider.go
│ │ │ │ │ ├── evaluate.go
│ │ │ │ │ ├── evaluate_valid.go
│ │ │ │ │ ├── features.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── graph_builder.go
│ │ │ │ │ ├── graph_builder_apply.go
│ │ │ │ │ ├── graph_builder_destroy_plan.go
│ │ │ │ │ ├── graph_builder_eval.go
│ │ │ │ │ ├── graph_builder_import.go
│ │ │ │ │ ├── graph_builder_plan.go
│ │ │ │ │ ├── graph_builder_refresh.go
│ │ │ │ │ ├── graph_builder_validate.go
│ │ │ │ │ ├── graph_dot.go
│ │ │ │ │ ├── graph_interface_subgraph.go
│ │ │ │ │ ├── graph_walk.go
│ │ │ │ │ ├── graph_walk_context.go
│ │ │ │ │ ├── graph_walk_operation.go
│ │ │ │ │ ├── graphtype_string.go
│ │ │ │ │ ├── hook.go
│ │ │ │ │ ├── hook_mock.go
│ │ │ │ │ ├── hook_stop.go
│ │ │ │ │ ├── instancetype.go
│ │ │ │ │ ├── instancetype_string.go
│ │ │ │ │ ├── interpolate.go
│ │ │ │ │ ├── module_dependencies.go
│ │ │ │ │ ├── node_count_boundary.go
│ │ │ │ │ ├── node_data_destroy.go
│ │ │ │ │ ├── node_data_refresh.go
│ │ │ │ │ ├── node_local.go
│ │ │ │ │ ├── node_module_removed.go
│ │ │ │ │ ├── node_module_variable.go
│ │ │ │ │ ├── node_output.go
│ │ │ │ │ ├── node_output_orphan.go
│ │ │ │ │ ├── node_provider.go
│ │ │ │ │ ├── node_provider_abstract.go
│ │ │ │ │ ├── node_provider_disabled.go
│ │ │ │ │ ├── node_provider_eval.go
│ │ │ │ │ ├── node_provisioner.go
│ │ │ │ │ ├── node_resource_abstract.go
│ │ │ │ │ ├── node_resource_apply.go
│ │ │ │ │ ├── node_resource_apply_instance.go
│ │ │ │ │ ├── node_resource_destroy.go
│ │ │ │ │ ├── node_resource_destroy_deposed.go
│ │ │ │ │ ├── node_resource_plan.go
│ │ │ │ │ ├── node_resource_plan_destroy.go
│ │ │ │ │ ├── node_resource_plan_instance.go
│ │ │ │ │ ├── node_resource_plan_orphan.go
│ │ │ │ │ ├── node_resource_refresh.go
│ │ │ │ │ ├── node_resource_validate.go
│ │ │ │ │ ├── node_root_variable.go
│ │ │ │ │ ├── path.go
│ │ │ │ │ ├── plan.go
│ │ │ │ │ ├── provider_mock.go
│ │ │ │ │ ├── provisioner_mock.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_address.go
│ │ │ │ │ ├── resource_provider.go
│ │ │ │ │ ├── resource_provider_mock.go
│ │ │ │ │ ├── resource_provisioner.go
│ │ │ │ │ ├── resource_provisioner_mock.go
│ │ │ │ │ ├── schemas.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_filter.go
│ │ │ │ │ ├── state_upgrade_v1_to_v2.go
│ │ │ │ │ ├── state_upgrade_v2_to_v3.go
│ │ │ │ │ ├── state_v1.go
│ │ │ │ │ ├── testing.go
│ │ │ │ │ ├── transform.go
│ │ │ │ │ ├── transform_attach_config_provider.go
│ │ │ │ │ ├── transform_attach_config_resource.go
│ │ │ │ │ ├── transform_attach_schema.go
│ │ │ │ │ ├── transform_attach_state.go
│ │ │ │ │ ├── transform_config.go
│ │ │ │ │ ├── transform_config_flat.go
│ │ │ │ │ ├── transform_config_old.go
│ │ │ │ │ ├── transform_count_boundary.go
│ │ │ │ │ ├── transform_destroy_cbd.go
│ │ │ │ │ ├── transform_destroy_edge.go
│ │ │ │ │ ├── transform_diff.go
│ │ │ │ │ ├── transform_expand.go
│ │ │ │ │ ├── transform_import_provider.go
│ │ │ │ │ ├── transform_import_state.go
│ │ │ │ │ ├── transform_local.go
│ │ │ │ │ ├── transform_module_variable.go
│ │ │ │ │ ├── transform_orphan_count.go
│ │ │ │ │ ├── transform_orphan_output.go
│ │ │ │ │ ├── transform_orphan_resource.go
│ │ │ │ │ ├── transform_output.go
│ │ │ │ │ ├── transform_provider.go
│ │ │ │ │ ├── transform_provisioner.go
│ │ │ │ │ ├── transform_reference.go
│ │ │ │ │ ├── transform_removed_modules.go
│ │ │ │ │ ├── transform_resource_count.go
│ │ │ │ │ ├── transform_root.go
│ │ │ │ │ ├── transform_state.go
│ │ │ │ │ ├── transform_targets.go
│ │ │ │ │ ├── transform_transitive_reduction.go
│ │ │ │ │ ├── transform_variable.go
│ │ │ │ │ ├── transform_vertex.go
│ │ │ │ │ ├── ui_input.go
│ │ │ │ │ ├── ui_input_mock.go
│ │ │ │ │ ├── ui_input_prefix.go
│ │ │ │ │ ├── ui_output.go
│ │ │ │ │ ├── ui_output_callback.go
│ │ │ │ │ ├── ui_output_mock.go
│ │ │ │ │ ├── ui_output_provisioner.go
│ │ │ │ │ ├── user_agent.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── valuesourcetype_string.go
│ │ │ │ │ ├── variables.go
│ │ │ │ │ ├── version.go
│ │ │ │ │ ├── version_required.go
│ │ │ │ │ └── walkoperation_string.go
│ │ │ │ ├── tfdiags/
│ │ │ │ │ ├── config_traversals.go
│ │ │ │ │ ├── contextual.go
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diagnostic_base.go
│ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── hcl.go
│ │ │ │ │ ├── rpc_friendly.go
│ │ │ │ │ ├── severity_string.go
│ │ │ │ │ ├── simple_warning.go
│ │ │ │ │ ├── source_range.go
│ │ │ │ │ └── sourceless.go
│ │ │ │ └── version/
│ │ │ │ └── version.go
│ │ │ ├── terraform-config-inspect/
│ │ │ │ ├── LICENSE
│ │ │ │ └── tfconfig/
│ │ │ │ ├── diagnostic.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── load.go
│ │ │ │ ├── load_hcl.go
│ │ │ │ ├── load_legacy.go
│ │ │ │ ├── module.go
│ │ │ │ ├── module_call.go
│ │ │ │ ├── output.go
│ │ │ │ ├── provider_ref.go
│ │ │ │ ├── resource.go
│ │ │ │ ├── schema.go
│ │ │ │ ├── source_pos.go
│ │ │ │ └── variable.go
│ │ │ └── yamux/
│ │ │ ├── LICENSE
│ │ │ ├── addr.go
│ │ │ ├── const.go
│ │ │ ├── mux.go
│ │ │ ├── session.go
│ │ │ ├── stream.go
│ │ │ └── util.go
│ │ ├── jmespath/
│ │ │ └── go-jmespath/
│ │ │ ├── LICENSE
│ │ │ ├── api.go
│ │ │ ├── astnodetype_string.go
│ │ │ ├── functions.go
│ │ │ ├── interpreter.go
│ │ │ ├── lexer.go
│ │ │ ├── parser.go
│ │ │ ├── toktype_string.go
│ │ │ └── util.go
│ │ ├── mattn/
│ │ │ ├── go-colorable/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── colorable_appengine.go
│ │ │ │ ├── colorable_others.go
│ │ │ │ ├── colorable_windows.go
│ │ │ │ └── noncolorable.go
│ │ │ └── go-isatty/
│ │ │ ├── LICENSE
│ │ │ ├── doc.go
│ │ │ ├── isatty_android.go
│ │ │ ├── isatty_bsd.go
│ │ │ ├── isatty_others.go
│ │ │ ├── isatty_solaris.go
│ │ │ ├── isatty_tcgets.go
│ │ │ └── isatty_windows.go
│ │ ├── mitchellh/
│ │ │ ├── cli/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── autocomplete.go
│ │ │ │ ├── cli.go
│ │ │ │ ├── command.go
│ │ │ │ ├── command_mock.go
│ │ │ │ ├── help.go
│ │ │ │ ├── ui.go
│ │ │ │ ├── ui_colored.go
│ │ │ │ ├── ui_concurrent.go
│ │ │ │ ├── ui_mock.go
│ │ │ │ └── ui_writer.go
│ │ │ ├── colorstring/
│ │ │ │ ├── LICENSE
│ │ │ │ └── colorstring.go
│ │ │ ├── copystructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── copier_time.go
│ │ │ │ └── copystructure.go
│ │ │ ├── go-homedir/
│ │ │ │ ├── LICENSE
│ │ │ │ └── homedir.go
│ │ │ ├── go-testing-interface/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── testing.go
│ │ │ │ └── testing_go19.go
│ │ │ ├── go-wordwrap/
│ │ │ │ ├── LICENSE.md
│ │ │ │ └── wordwrap.go
│ │ │ ├── hashstructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── hashstructure.go
│ │ │ │ └── include.go
│ │ │ ├── mapstructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── decode_hooks.go
│ │ │ │ ├── error.go
│ │ │ │ └── mapstructure.go
│ │ │ └── reflectwalk/
│ │ │ ├── LICENSE
│ │ │ ├── location.go
│ │ │ ├── location_string.go
│ │ │ └── reflectwalk.go
│ │ ├── oklog/
│ │ │ └── run/
│ │ │ ├── LICENSE
│ │ │ └── group.go
│ │ ├── posener/
│ │ │ └── complete/
│ │ │ ├── LICENSE.txt
│ │ │ ├── args.go
│ │ │ ├── cmd/
│ │ │ │ ├── cmd.go
│ │ │ │ └── install/
│ │ │ │ ├── bash.go
│ │ │ │ ├── fish.go
│ │ │ │ ├── install.go
│ │ │ │ ├── utils.go
│ │ │ │ └── zsh.go
│ │ │ ├── command.go
│ │ │ ├── complete.go
│ │ │ ├── doc.go
│ │ │ ├── log.go
│ │ │ ├── match/
│ │ │ │ ├── file.go
│ │ │ │ ├── match.go
│ │ │ │ └── prefix.go
│ │ │ ├── predict.go
│ │ │ ├── predict_files.go
│ │ │ ├── predict_set.go
│ │ │ └── utils.go
│ │ ├── spf13/
│ │ │ └── afero/
│ │ │ ├── LICENSE.txt
│ │ │ ├── afero.go
│ │ │ ├── basepath.go
│ │ │ ├── cacheOnReadFs.go
│ │ │ ├── const_bsds.go
│ │ │ ├── const_win_unix.go
│ │ │ ├── copyOnWriteFs.go
│ │ │ ├── httpFs.go
│ │ │ ├── ioutil.go
│ │ │ ├── lstater.go
│ │ │ ├── match.go
│ │ │ ├── mem/
│ │ │ │ ├── dir.go
│ │ │ │ ├── dirmap.go
│ │ │ │ └── file.go
│ │ │ ├── memmap.go
│ │ │ ├── os.go
│ │ │ ├── path.go
│ │ │ ├── readonlyfs.go
│ │ │ ├── regexpfs.go
│ │ │ ├── unionFile.go
│ │ │ └── util.go
│ │ ├── ulikunitz/
│ │ │ └── xz/
│ │ │ ├── LICENSE
│ │ │ ├── bits.go
│ │ │ ├── crc.go
│ │ │ ├── example.go
│ │ │ ├── format.go
│ │ │ ├── internal/
│ │ │ │ ├── hash/
│ │ │ │ │ ├── cyclic_poly.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── rabin_karp.go
│ │ │ │ │ └── roller.go
│ │ │ │ └── xlog/
│ │ │ │ └── xlog.go
│ │ │ ├── lzma/
│ │ │ │ ├── bintree.go
│ │ │ │ ├── bitops.go
│ │ │ │ ├── breader.go
│ │ │ │ ├── buffer.go
│ │ │ │ ├── bytewriter.go
│ │ │ │ ├── decoder.go
│ │ │ │ ├── decoderdict.go
│ │ │ │ ├── directcodec.go
│ │ │ │ ├── distcodec.go
│ │ │ │ ├── encoder.go
│ │ │ │ ├── encoderdict.go
│ │ │ │ ├── hashtable.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header2.go
│ │ │ │ ├── lengthcodec.go
│ │ │ │ ├── literalcodec.go
│ │ │ │ ├── matchalgorithm.go
│ │ │ │ ├── operation.go
│ │ │ │ ├── prob.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── rangecodec.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── reader2.go
│ │ │ │ ├── state.go
│ │ │ │ ├── treecodecs.go
│ │ │ │ ├── writer.go
│ │ │ │ └── writer2.go
│ │ │ ├── lzmafilter.go
│ │ │ ├── reader.go
│ │ │ └── writer.go
│ │ ├── vmihailenco/
│ │ │ └── msgpack/
│ │ │ ├── LICENSE
│ │ │ ├── appengine.go
│ │ │ ├── codes/
│ │ │ │ └── codes.go
│ │ │ ├── decode.go
│ │ │ ├── decode_map.go
│ │ │ ├── decode_number.go
│ │ │ ├── decode_query.go
│ │ │ ├── decode_slice.go
│ │ │ ├── decode_string.go
│ │ │ ├── decode_value.go
│ │ │ ├── encode.go
│ │ │ ├── encode_map.go
│ │ │ ├── encode_number.go
│ │ │ ├── encode_slice.go
│ │ │ ├── encode_value.go
│ │ │ ├── ext.go
│ │ │ ├── msgpack.go
│ │ │ ├── tag.go
│ │ │ ├── time.go
│ │ │ └── types.go
│ │ └── zclconf/
│ │ └── go-cty/
│ │ ├── LICENSE
│ │ └── cty/
│ │ ├── capsule.go
│ │ ├── collection.go
│ │ ├── convert/
│ │ │ ├── compare_types.go
│ │ │ ├── conversion.go
│ │ │ ├── conversion_collection.go
│ │ │ ├── conversion_dynamic.go
│ │ │ ├── conversion_object.go
│ │ │ ├── conversion_primitive.go
│ │ │ ├── conversion_tuple.go
│ │ │ ├── doc.go
│ │ │ ├── mismatch_msg.go
│ │ │ ├── public.go
│ │ │ ├── sort_types.go
│ │ │ └── unify.go
│ │ ├── doc.go
│ │ ├── element_iterator.go
│ │ ├── error.go
│ │ ├── function/
│ │ │ ├── argument.go
│ │ │ ├── doc.go
│ │ │ ├── error.go
│ │ │ ├── function.go
│ │ │ ├── stdlib/
│ │ │ │ ├── bool.go
│ │ │ │ ├── bytes.go
│ │ │ │ ├── collection.go
│ │ │ │ ├── csv.go
│ │ │ │ ├── datetime.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── format.go
│ │ │ │ ├── format_fsm.go
│ │ │ │ ├── general.go
│ │ │ │ ├── json.go
│ │ │ │ ├── number.go
│ │ │ │ ├── regexp.go
│ │ │ │ ├── sequence.go
│ │ │ │ ├── set.go
│ │ │ │ └── string.go
│ │ │ └── unpredictable.go
│ │ ├── gob.go
│ │ ├── gocty/
│ │ │ ├── doc.go
│ │ │ ├── helpers.go
│ │ │ ├── in.go
│ │ │ ├── out.go
│ │ │ └── type_implied.go
│ │ ├── helper.go
│ │ ├── json/
│ │ │ ├── doc.go
│ │ │ ├── marshal.go
│ │ │ ├── simple.go
│ │ │ ├── type.go
│ │ │ ├── type_implied.go
│ │ │ ├── unmarshal.go
│ │ │ └── value.go
│ │ ├── json.go
│ │ ├── list_type.go
│ │ ├── map_type.go
│ │ ├── msgpack/
│ │ │ ├── doc.go
│ │ │ ├── dynamic.go
│ │ │ ├── infinity.go
│ │ │ ├── marshal.go
│ │ │ ├── type_implied.go
│ │ │ ├── unknown.go
│ │ │ └── unmarshal.go
│ │ ├── null.go
│ │ ├── object_type.go
│ │ ├── path.go
│ │ ├── path_set.go
│ │ ├── primitive_type.go
│ │ ├── set/
│ │ │ ├── gob.go
│ │ │ ├── iterator.go
│ │ │ ├── ops.go
│ │ │ ├── rules.go
│ │ │ └── set.go
│ │ ├── set_helper.go
│ │ ├── set_internals.go
│ │ ├── set_type.go
│ │ ├── tuple_type.go
│ │ ├── type.go
│ │ ├── type_conform.go
│ │ ├── types_to_register.go
│ │ ├── unknown.go
│ │ ├── unknown_as_null.go
│ │ ├── value.go
│ │ ├── value_init.go
│ │ ├── value_ops.go
│ │ └── walk.go
│ ├── go.opencensus.io/
│ │ ├── LICENSE
│ │ ├── internal/
│ │ │ ├── internal.go
│ │ │ ├── sanitize.go
│ │ │ ├── tagencoding/
│ │ │ │ └── tagencoding.go
│ │ │ └── traceinternals.go
│ │ ├── metric/
│ │ │ ├── metricdata/
│ │ │ │ ├── doc.go
│ │ │ │ ├── exemplar.go
│ │ │ │ ├── label.go
│ │ │ │ ├── metric.go
│ │ │ │ ├── point.go
│ │ │ │ ├── type_string.go
│ │ │ │ └── unit.go
│ │ │ └── metricproducer/
│ │ │ ├── manager.go
│ │ │ └── producer.go
│ │ ├── opencensus.go
│ │ ├── plugin/
│ │ │ └── ochttp/
│ │ │ ├── client.go
│ │ │ ├── client_stats.go
│ │ │ ├── doc.go
│ │ │ ├── propagation/
│ │ │ │ └── b3/
│ │ │ │ └── b3.go
│ │ │ ├── route.go
│ │ │ ├── server.go
│ │ │ ├── span_annotating_client_trace.go
│ │ │ ├── stats.go
│ │ │ ├── trace.go
│ │ │ └── wrapped_body.go
│ │ ├── resource/
│ │ │ └── resource.go
│ │ ├── stats/
│ │ │ ├── doc.go
│ │ │ ├── internal/
│ │ │ │ └── record.go
│ │ │ ├── measure.go
│ │ │ ├── measure_float64.go
│ │ │ ├── measure_int64.go
│ │ │ ├── record.go
│ │ │ ├── units.go
│ │ │ └── view/
│ │ │ ├── aggregation.go
│ │ │ ├── aggregation_data.go
│ │ │ ├── collector.go
│ │ │ ├── doc.go
│ │ │ ├── export.go
│ │ │ ├── view.go
│ │ │ ├── view_to_metric.go
│ │ │ ├── worker.go
│ │ │ └── worker_commands.go
│ │ ├── tag/
│ │ │ ├── context.go
│ │ │ ├── doc.go
│ │ │ ├── key.go
│ │ │ ├── map.go
│ │ │ ├── map_codec.go
│ │ │ ├── metadata.go
│ │ │ ├── profile_19.go
│ │ │ ├── profile_not19.go
│ │ │ └── validate.go
│ │ └── trace/
│ │ ├── basetypes.go
│ │ ├── config.go
│ │ ├── doc.go
│ │ ├── evictedqueue.go
│ │ ├── export.go
│ │ ├── internal/
│ │ │ └── internal.go
│ │ ├── lrumap.go
│ │ ├── propagation/
│ │ │ └── propagation.go
│ │ ├── sampling.go
│ │ ├── spanbucket.go
│ │ ├── spanstore.go
│ │ ├── status_codes.go
│ │ ├── trace.go
│ │ ├── trace_go11.go
│ │ ├── trace_nongo11.go
│ │ └── tracestate/
│ │ └── tracestate.go
│ ├── golang.org/
│ │ └── x/
│ │ ├── crypto/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── bcrypt/
│ │ │ │ ├── base64.go
│ │ │ │ └── bcrypt.go
│ │ │ ├── blowfish/
│ │ │ │ ├── block.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── const.go
│ │ │ ├── cast5/
│ │ │ │ └── cast5.go
│ │ │ └── openpgp/
│ │ │ ├── armor/
│ │ │ │ ├── armor.go
│ │ │ │ └── encode.go
│ │ │ ├── canonical_text.go
│ │ │ ├── elgamal/
│ │ │ │ └── elgamal.go
│ │ │ ├── errors/
│ │ │ │ └── errors.go
│ │ │ ├── keys.go
│ │ │ ├── packet/
│ │ │ │ ├── compressed.go
│ │ │ │ ├── config.go
│ │ │ │ ├── encrypted_key.go
│ │ │ │ ├── literal.go
│ │ │ │ ├── ocfb.go
│ │ │ │ ├── one_pass_signature.go
│ │ │ │ ├── opaque.go
│ │ │ │ ├── packet.go
│ │ │ │ ├── private_key.go
│ │ │ │ ├── public_key.go
│ │ │ │ ├── public_key_v3.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── signature.go
│ │ │ │ ├── signature_v3.go
│ │ │ │ ├── symmetric_key_encrypted.go
│ │ │ │ ├── symmetrically_encrypted.go
│ │ │ │ ├── userattribute.go
│ │ │ │ └── userid.go
│ │ │ ├── read.go
│ │ │ ├── s2k/
│ │ │ │ └── s2k.go
│ │ │ └── write.go
│ │ ├── net/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── context/
│ │ │ │ ├── context.go
│ │ │ │ ├── ctxhttp/
│ │ │ │ │ └── ctxhttp.go
│ │ │ │ ├── go17.go
│ │ │ │ ├── go19.go
│ │ │ │ ├── pre_go17.go
│ │ │ │ └── pre_go19.go
│ │ │ ├── http/
│ │ │ │ └── httpguts/
│ │ │ │ ├── guts.go
│ │ │ │ └── httplex.go
│ │ │ ├── http2/
│ │ │ │ ├── ciphers.go
│ │ │ │ ├── client_conn_pool.go
│ │ │ │ ├── databuffer.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── flow.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── go111.go
│ │ │ │ ├── gotrack.go
│ │ │ │ ├── headermap.go
│ │ │ │ ├── hpack/
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── hpack.go
│ │ │ │ │ ├── huffman.go
│ │ │ │ │ └── tables.go
│ │ │ │ ├── http2.go
│ │ │ │ ├── not_go111.go
│ │ │ │ ├── pipe.go
│ │ │ │ ├── server.go
│ │ │ │ ├── transport.go
│ │ │ │ ├── write.go
│ │ │ │ ├── writesched.go
│ │ │ │ ├── writesched_priority.go
│ │ │ │ └── writesched_random.go
│ │ │ ├── idna/
│ │ │ │ ├── idna10.0.0.go
│ │ │ │ ├── idna9.0.0.go
│ │ │ │ ├── punycode.go
│ │ │ │ ├── tables10.0.0.go
│ │ │ │ ├── tables11.0.0.go
│ │ │ │ ├── tables9.0.0.go
│ │ │ │ ├── trie.go
│ │ │ │ └── trieval.go
│ │ │ ├── internal/
│ │ │ │ └── timeseries/
│ │ │ │ └── timeseries.go
│ │ │ └── trace/
│ │ │ ├── events.go
│ │ │ ├── histogram.go
│ │ │ └── trace.go
│ │ ├── oauth2/
│ │ │ ├── LICENSE
│ │ │ ├── google/
│ │ │ │ ├── appengine.go
│ │ │ │ ├── appengine_gen1.go
│ │ │ │ ├── appengine_gen2_flex.go
│ │ │ │ ├── default.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── google.go
│ │ │ │ ├── jwt.go
│ │ │ │ └── sdk.go
│ │ │ ├── internal/
│ │ │ │ ├── client_appengine.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── oauth2.go
│ │ │ │ ├── token.go
│ │ │ │ └── transport.go
│ │ │ ├── jws/
│ │ │ │ └── jws.go
│ │ │ ├── jwt/
│ │ │ │ └── jwt.go
│ │ │ ├── oauth2.go
│ │ │ ├── token.go
│ │ │ └── transport.go
│ │ ├── sys/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ └── unix/
│ │ │ ├── affinity_linux.go
│ │ │ ├── aliases.go
│ │ │ ├── asm_aix_ppc64.s
│ │ │ ├── asm_darwin_386.s
│ │ │ ├── asm_darwin_amd64.s
│ │ │ ├── asm_darwin_arm.s
│ │ │ ├── asm_darwin_arm64.s
│ │ │ ├── asm_dragonfly_amd64.s
│ │ │ ├── asm_freebsd_386.s
│ │ │ ├── asm_freebsd_amd64.s
│ │ │ ├── asm_freebsd_arm.s
│ │ │ ├── asm_freebsd_arm64.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_mips64x.s
│ │ │ ├── asm_linux_mipsx.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_linux_riscv64.s
│ │ │ ├── asm_linux_s390x.s
│ │ │ ├── asm_netbsd_386.s
│ │ │ ├── asm_netbsd_amd64.s
│ │ │ ├── asm_netbsd_arm.s
│ │ │ ├── asm_netbsd_arm64.s
│ │ │ ├── asm_openbsd_386.s
│ │ │ ├── asm_openbsd_amd64.s
│ │ │ ├── asm_openbsd_arm.s
│ │ │ ├── asm_openbsd_arm64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── bluetooth_linux.go
│ │ │ ├── cap_freebsd.go
│ │ │ ├── constants.go
│ │ │ ├── dev_aix_ppc.go
│ │ │ ├── dev_aix_ppc64.go
│ │ │ ├── dev_darwin.go
│ │ │ ├── dev_dragonfly.go
│ │ │ ├── dev_freebsd.go
│ │ │ ├── dev_linux.go
│ │ │ ├── dev_netbsd.go
│ │ │ ├── dev_openbsd.go
│ │ │ ├── dirent.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── env_unix.go
│ │ │ ├── errors_freebsd_386.go
│ │ │ ├── errors_freebsd_amd64.go
│ │ │ ├── errors_freebsd_arm.go
│ │ │ ├── fcntl.go
│ │ │ ├── fcntl_darwin.go
│ │ │ ├── fcntl_linux_32bit.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── ioctl.go
│ │ │ ├── mkasm_darwin.go
│ │ │ ├── mkpost.go
│ │ │ ├── mksyscall.go
│ │ │ ├── mksyscall_aix_ppc.go
│ │ │ ├── mksyscall_aix_ppc64.go
│ │ │ ├── mksyscall_solaris.go
│ │ │ ├── mksysctl_openbsd.go
│ │ │ ├── mksysnum.go
│ │ │ ├── pagesize_unix.go
│ │ │ ├── pledge_openbsd.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_aix.go
│ │ │ ├── syscall_aix_ppc.go
│ │ │ ├── syscall_aix_ppc64.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_386.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_darwin_libSystem.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_arm64.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_amd64_gc.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_gc.go
│ │ │ ├── syscall_linux_gc_386.go
│ │ │ ├── syscall_linux_gccgo_386.go
│ │ │ ├── syscall_linux_gccgo_arm.go
│ │ │ ├── syscall_linux_mips64x.go
│ │ │ ├── syscall_linux_mipsx.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_linux_riscv64.go
│ │ │ ├── syscall_linux_s390x.go
│ │ │ ├── syscall_linux_sparc64.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_netbsd_arm64.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_openbsd_arm.go
│ │ │ ├── syscall_openbsd_arm64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_gc.go
│ │ │ ├── syscall_unix_gc_ppc64x.go
│ │ │ ├── timestruct.go
│ │ │ ├── types_aix.go
│ │ │ ├── types_darwin.go
│ │ │ ├── types_dragonfly.go
│ │ │ ├── types_freebsd.go
│ │ │ ├── types_netbsd.go
│ │ │ ├── types_openbsd.go
│ │ │ ├── types_solaris.go
│ │ │ ├── unveil_openbsd.go
│ │ │ ├── xattr_bsd.go
│ │ │ ├── zerrors_aix_ppc.go
│ │ │ ├── zerrors_aix_ppc64.go
│ │ │ ├── zerrors_darwin_386.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_freebsd_arm64.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_mips.go
│ │ │ ├── zerrors_linux_mips64.go
│ │ │ ├── zerrors_linux_mips64le.go
│ │ │ ├── zerrors_linux_mipsle.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_linux_riscv64.go
│ │ │ ├── zerrors_linux_s390x.go
│ │ │ ├── zerrors_linux_sparc64.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_netbsd_arm64.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_openbsd_arm.go
│ │ │ ├── zerrors_openbsd_arm64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zptrace386_linux.go
│ │ │ ├── zptracearm_linux.go
│ │ │ ├── zptracemips_linux.go
│ │ │ ├── zptracemipsle_linux.go
│ │ │ ├── zsyscall_aix_ppc.go
│ │ │ ├── zsyscall_aix_ppc64.go
│ │ │ ├── zsyscall_aix_ppc64_gc.go
│ │ │ ├── zsyscall_aix_ppc64_gccgo.go
│ │ │ ├── zsyscall_darwin_386.1_11.go
│ │ │ ├── zsyscall_darwin_386.go
│ │ │ ├── zsyscall_darwin_386.s
│ │ │ ├── zsyscall_darwin_amd64.1_11.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_amd64.s
│ │ │ ├── zsyscall_darwin_arm.1_11.go
│ │ │ ├── zsyscall_darwin_arm.go
│ │ │ ├── zsyscall_darwin_arm.s
│ │ │ ├── zsyscall_darwin_arm64.1_11.go
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_darwin_arm64.s
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_freebsd_arm64.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_mips.go
│ │ │ ├── zsyscall_linux_mips64.go
│ │ │ ├── zsyscall_linux_mips64le.go
│ │ │ ├── zsyscall_linux_mipsle.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_linux_riscv64.go
│ │ │ ├── zsyscall_linux_s390x.go
│ │ │ ├── zsyscall_linux_sparc64.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_netbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_openbsd_arm.go
│ │ │ ├── zsyscall_openbsd_arm64.go
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsysctl_openbsd_386.go
│ │ │ ├── zsysctl_openbsd_amd64.go
│ │ │ ├── zsysctl_openbsd_arm.go
│ │ │ ├── zsysctl_openbsd_arm64.go
│ │ │ ├── zsysnum_darwin_386.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_freebsd_arm64.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_mips.go
│ │ │ ├── zsysnum_linux_mips64.go
│ │ │ ├── zsysnum_linux_mips64le.go
│ │ │ ├── zsysnum_linux_mipsle.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_linux_riscv64.go
│ │ │ ├── zsysnum_linux_s390x.go
│ │ │ ├── zsysnum_linux_sparc64.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_netbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_openbsd_arm.go
│ │ │ ├── zsysnum_openbsd_arm64.go
│ │ │ ├── ztypes_aix_ppc.go
│ │ │ ├── ztypes_aix_ppc64.go
│ │ │ ├── ztypes_darwin_386.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_freebsd_arm64.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_mips.go
│ │ │ ├── ztypes_linux_mips64.go
│ │ │ ├── ztypes_linux_mips64le.go
│ │ │ ├── ztypes_linux_mipsle.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_linux_riscv64.go
│ │ │ ├── ztypes_linux_s390x.go
│ │ │ ├── ztypes_linux_sparc64.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_netbsd_arm64.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ ├── ztypes_openbsd_arm.go
│ │ │ ├── ztypes_openbsd_arm64.go
│ │ │ └── ztypes_solaris_amd64.go
│ │ ├── text/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── secure/
│ │ │ │ └── bidirule/
│ │ │ │ ├── bidirule.go
│ │ │ │ ├── bidirule10.0.0.go
│ │ │ │ └── bidirule9.0.0.go
│ │ │ ├── transform/
│ │ │ │ └── transform.go
│ │ │ └── unicode/
│ │ │ ├── bidi/
│ │ │ │ ├── bidi.go
│ │ │ │ ├── bracket.go
│ │ │ │ ├── core.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── gen_ranges.go
│ │ │ │ ├── gen_trieval.go
│ │ │ │ ├── prop.go
│ │ │ │ ├── tables10.0.0.go
│ │ │ │ ├── tables11.0.0.go
│ │ │ │ ├── tables9.0.0.go
│ │ │ │ └── trieval.go
│ │ │ └── norm/
│ │ │ ├── composition.go
│ │ │ ├── forminfo.go
│ │ │ ├── input.go
│ │ │ ├── iter.go
│ │ │ ├── maketables.go
│ │ │ ├── normalize.go
│ │ │ ├── readwriter.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ ├── transform.go
│ │ │ ├── trie.go
│ │ │ └── triegen.go
│ │ └── time/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── rate/
│ │ └── rate.go
│ └── google.golang.org/
│ ├── api/
│ │ ├── LICENSE
│ │ ├── gensupport/
│ │ │ ├── backoff.go
│ │ │ ├── buffer.go
│ │ │ ├── doc.go
│ │ │ ├── header.go
│ │ │ ├── json.go
│ │ │ ├── jsonfloat.go
│ │ │ ├── media.go
│ │ │ ├── params.go
│ │ │ ├── resumable.go
│ │ │ ├── retry.go
│ │ │ └── send.go
│ │ ├── googleapi/
│ │ │ ├── googleapi.go
│ │ │ ├── internal/
│ │ │ │ └── uritemplates/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── uritemplates.go
│ │ │ │ └── utils.go
│ │ │ ├── transport/
│ │ │ │ └── apikey.go
│ │ │ └── types.go
│ │ ├── internal/
│ │ │ ├── creds.go
│ │ │ ├── pool.go
│ │ │ └── settings.go
│ │ ├── iterator/
│ │ │ └── iterator.go
│ │ ├── option/
│ │ │ ├── credentials_go19.go
│ │ │ ├── credentials_notgo19.go
│ │ │ └── option.go
│ │ ├── storage/
│ │ │ └── v1/
│ │ │ └── storage-gen.go
│ │ └── transport/
│ │ └── http/
│ │ ├── dial.go
│ │ ├── dial_appengine.go
│ │ └── internal/
│ │ └── propagation/
│ │ └── http.go
│ ├── appengine/
│ │ ├── LICENSE
│ │ ├── appengine.go
│ │ ├── appengine_vm.go
│ │ ├── datastore/
│ │ │ ├── datastore.go
│ │ │ ├── doc.go
│ │ │ ├── internal/
│ │ │ │ ├── cloudkey/
│ │ │ │ │ └── cloudkey.go
│ │ │ │ └── cloudpb/
│ │ │ │ └── entity.pb.go
│ │ │ ├── key.go
│ │ │ ├── keycompat.go
│ │ │ ├── load.go
│ │ │ ├── metadata.go
│ │ │ ├── prop.go
│ │ │ ├── query.go
│ │ │ ├── save.go
│ │ │ └── transaction.go
│ │ ├── errors.go
│ │ ├── identity.go
│ │ ├── internal/
│ │ │ ├── api.go
│ │ │ ├── api_classic.go
│ │ │ ├── api_common.go
│ │ │ ├── app_id.go
│ │ │ ├── app_identity/
│ │ │ │ └── app_identity_service.pb.go
│ │ │ ├── base/
│ │ │ │ └── api_base.pb.go
│ │ │ ├── datastore/
│ │ │ │ └── datastore_v3.pb.go
│ │ │ ├── identity.go
│ │ │ ├── identity_classic.go
│ │ │ ├── identity_flex.go
│ │ │ ├── identity_vm.go
│ │ │ ├── internal.go
│ │ │ ├── log/
│ │ │ │ └── log_service.pb.go
│ │ │ ├── main.go
│ │ │ ├── main_common.go
│ │ │ ├── main_vm.go
│ │ │ ├── metadata.go
│ │ │ ├── modules/
│ │ │ │ └── modules_service.pb.go
│ │ │ ├── net.go
│ │ │ ├── remote_api/
│ │ │ │ └── remote_api.pb.go
│ │ │ ├── transaction.go
│ │ │ └── urlfetch/
│ │ │ └── urlfetch_service.pb.go
│ │ ├── namespace.go
│ │ ├── timeout.go
│ │ └── urlfetch/
│ │ └── urlfetch.go
│ ├── genproto/
│ │ ├── LICENSE
│ │ └── googleapis/
│ │ ├── api/
│ │ │ └── annotations/
│ │ │ ├── annotations.pb.go
│ │ │ ├── client.pb.go
│ │ │ ├── field_behavior.pb.go
│ │ │ ├── http.pb.go
│ │ │ └── resource.pb.go
│ │ ├── iam/
│ │ │ └── v1/
│ │ │ ├── iam_policy.pb.go
│ │ │ └── policy.pb.go
│ │ ├── rpc/
│ │ │ ├── code/
│ │ │ │ └── code.pb.go
│ │ │ └── status/
│ │ │ └── status.pb.go
│ │ └── type/
│ │ └── expr/
│ │ └── expr.pb.go
│ └── grpc/
│ ├── LICENSE
│ ├── backoff.go
│ ├── balancer/
│ │ ├── balancer.go
│ │ ├── base/
│ │ │ ├── balancer.go
│ │ │ └── base.go
│ │ └── roundrobin/
│ │ └── roundrobin.go
│ ├── balancer.go
│ ├── balancer_conn_wrappers.go
│ ├── balancer_v1_wrapper.go
│ ├── binarylog/
│ │ └── grpc_binarylog_v1/
│ │ └── binarylog.pb.go
│ ├── call.go
│ ├── clientconn.go
│ ├── codec.go
│ ├── codes/
│ │ ├── code_string.go
│ │ └── codes.go
│ ├── connectivity/
│ │ └── connectivity.go
│ ├── credentials/
│ │ ├── credentials.go
│ │ ├── internal/
│ │ │ ├── syscallconn.go
│ │ │ └── syscallconn_appengine.go
│ │ └── tls13.go
│ ├── dialoptions.go
│ ├── doc.go
│ ├── encoding/
│ │ ├── encoding.go
│ │ └── proto/
│ │ └── proto.go
│ ├── grpclog/
│ │ ├── grpclog.go
│ │ ├── logger.go
│ │ └── loggerv2.go
│ ├── health/
│ │ ├── client.go
│ │ ├── grpc_health_v1/
│ │ │ └── health.pb.go
│ │ └── server.go
│ ├── interceptor.go
│ ├── internal/
│ │ ├── backoff/
│ │ │ └── backoff.go
│ │ ├── balancerload/
│ │ │ └── load.go
│ │ ├── binarylog/
│ │ │ ├── binarylog.go
│ │ │ ├── binarylog_testutil.go
│ │ │ ├── env_config.go
│ │ │ ├── method_logger.go
│ │ │ ├── sink.go
│ │ │ └── util.go
│ │ ├── channelz/
│ │ │ ├── funcs.go
│ │ │ ├── types.go
│ │ │ ├── types_linux.go
│ │ │ ├── types_nonlinux.go
│ │ │ ├── util_linux.go
│ │ │ └── util_nonlinux.go
│ │ ├── envconfig/
│ │ │ └── envconfig.go
│ │ ├── grpcrand/
│ │ │ └── grpcrand.go
│ │ ├── grpcsync/
│ │ │ └── event.go
│ │ ├── internal.go
│ │ ├── syscall/
│ │ │ ├── syscall_linux.go
│ │ │ └── syscall_nonlinux.go
│ │ └── transport/
│ │ ├── bdp_estimator.go
│ │ ├── controlbuf.go
│ │ ├── defaults.go
│ │ ├── flowcontrol.go
│ │ ├── handler_server.go
│ │ ├── http2_client.go
│ │ ├── http2_server.go
│ │ ├── http_util.go
│ │ ├── log.go
│ │ └── transport.go
│ ├── keepalive/
│ │ └── keepalive.go
│ ├── metadata/
│ │ └── metadata.go
│ ├── naming/
│ │ ├── dns_resolver.go
│ │ └── naming.go
│ ├── peer/
│ │ └── peer.go
│ ├── picker_wrapper.go
│ ├── pickfirst.go
│ ├── preloader.go
│ ├── proxy.go
│ ├── resolver/
│ │ ├── dns/
│ │ │ └── dns_resolver.go
│ │ ├── passthrough/
│ │ │ └── passthrough.go
│ │ └── resolver.go
│ ├── resolver_conn_wrapper.go
│ ├── rpc_util.go
│ ├── server.go
│ ├── service_config.go
│ ├── serviceconfig/
│ │ └── serviceconfig.go
│ ├── stats/
│ │ ├── handlers.go
│ │ └── stats.go
│ ├── status/
│ │ └── status.go
│ ├── stream.go
│ ├── tap/
│ │ └── tap.go
│ ├── test/
│ │ └── bufconn/
│ │ └── bufconn.go
│ ├── trace.go
│ └── version.go
└── vultr/
├── config.go
├── data_source_application.go
├── data_source_bare_metal_plan.go
├── data_source_common_schema.go
├── data_source_firewall_group.go
├── data_source_network.go
├── data_source_os.go
├── data_source_plan.go
├── data_source_region.go
├── data_source_snapshot.go
├── data_source_ssh_key.go
├── data_source_startup_script.go
├── filter.go
├── provider.go
├── provider_test.go
├── resource_bare_metal.go
├── resource_block_storage.go
├── resource_dns_domain.go
├── resource_dns_record.go
├── resource_firewall_group.go
├── resource_firewall_rule.go
├── resource_firewall_rule_test.go
├── resource_instance.go
├── resource_ipv4.go
├── resource_network.go
├── resource_reserved_ip.go
├── resource_ssh_key.go
├── resource_startup_script.go
├── validators.go
└── wait.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.terraform
terraform.tfstate*
terraform.tfvars
assets
bin
================================================
FILE: .travis.yml
================================================
language: go
go:
- "1.10"
install:
- go get -u golang.org/x/lint/golint
- go get -u github.com/hashicorp/terraform
script:
- make build
- make test
notifications:
email: change
================================================
FILE: LICENSE
================================================
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.
================================================
FILE: Makefile
================================================
.PHONY: all-release build clean fmt fmt-go fmt-terraform lint lint-go lint-terraform release test vendor vendor-status vet
ARCH ?= amd64
PLATFORM ?= linux
ALL_PLATFORMS := darwin linux windows
BIN := terraform-provider-vultr
PKG := github.com/squat/$(BIN)
BUILD_IMAGE ?= golang:1.10.0-alpine
TEST ?= $$(go list ./... | grep -v 'vendor/')
GOFMT_FILES ?= $$(find . -name '*.go' | grep -v vendor)
SRC := $(shell find . -type f -name '*.go' -not -path "./vendor/*")
TERRAFORMFMT_FILES ?= examples
TESTARGS ?=
TAG := $(shell git describe --abbrev=0 --tags HEAD 2>/dev/null)
COMMIT := $(shell git rev-parse HEAD)
VERSION := $(COMMIT)
ifneq ($(TAG),)
ifeq ($(COMMIT), $(shell git rev-list -n1 $(TAG)))
VERSION := $(TAG)
endif
endif
DIRTY := $(shell test -z "$$(git diff --shortstat 2>/dev/null)" || echo -dirty)
VERSION := $(VERSION)$(DIRTY)
default: build
build:
go install
all-release: $(addprefix release-, $(ALL_PLATFORMS))
release-%:
@$(MAKE) --no-print-directory ARCH=$(ARCH) PLATFORM=$* release
release: bin/$(BIN)_$(VERSION)_$(PLATFORM)_$(ARCH).tar.gz.asc
bin/$(PLATFORM)/$(ARCH):
@mkdir -p bin/$(PLATFORM)/$(ARCH)
bin/$(BIN)_$(VERSION)_$(PLATFORM)_$(ARCH).tar.gz.asc: bin/$(BIN)_$(VERSION)_$(PLATFORM)_$(ARCH).tar.gz
@cd bin && gpg --armor --detach-sign $(<F)
bin/$(BIN)_$(VERSION)_$(PLATFORM)_$(ARCH).tar.gz: bin/$(PLATFORM)/$(ARCH)/$(BIN)_$(VERSION)
@tar -czf $@ -C $(<D) $(<F)
bin/$(PLATFORM)/$(ARCH)/$(BIN)_$(VERSION): $(SRC) glide.yaml bin/$(PLATFORM)/$(ARCH)
@echo "building: $@"
@docker run --rm \
-u $$(id -u):$$(id -g) \
-v $$(pwd):/go/src/$(PKG) \
-v $$(pwd)/bin/$(PLATFORM)/$(ARCH):/go/bin \
-w /go/src/$(PKG) \
$(BUILD_IMAGE) \
/bin/sh -c " \
GOARCH=$(ARCH) \
GOOS=$(PLATFORM) \
CGO_ENABLED=0 \
go build -o /go/bin/$(BIN)_$(VERSION) \
"
fmt: fmt-go fmt-terraform
fmt-go:
gofmt -w -s $(GOFMT_FILES)
fmt-terraform:
terraform fmt $(TERRAFORMFMT_FILES)
lint: lint-go lint-terraform
lint-go:
@echo 'golint $(TEST)'
@lint_res=$$(golint $(TEST)); if [ -n "$$lint_res" ]; then \
echo ""; \
echo "Golint found style issues. Please check the reported issues"; \
echo "and fix them if necessary before submitting the code for review:"; \
echo "$$lint_res"; \
exit 1; \
fi
@echo 'gofmt -d -s $(GOFMT_FILES)'
@fmt_res=$$(gofmt -d -s $(GOFMT_FILES)); if [ -n "$$fmt_res" ]; then \
echo ""; \
echo "Gofmt found style issues. Please check the reported issues"; \
echo "and fix them if necessary before submitting the code for review:"; \
echo "$$fmt_res"; \
exit 1; \
fi
lint-terraform:
@echo "terraform fmt --check=true $(TERRAFORMFMT_FILES)"
@lint_res=$$(terraform fmt --check=true $(TERRAFORMFMT_FILES)); if [ -n "$$lint_res" ]; then \
echo ""; \
echo "Terraform fmt found style issues. Please check the reported issues"; \
echo "and fix them if necessary before submitting the code for review:"; \
echo "$$lint_res"; \
exit 1; \
fi
test: vet lint
go test -i $(TEST) || exit 1
go test $(TESTARGS) -timeout=30s -parallel=4 $(TEST)
vendor:
@glide install -v
@glide-vc --only-code --no-tests
vendor-status:
@glide list
vet:
@echo 'go vet $(TEST)'
@go vet $(TEST); if [ $$? -eq 1 ]; then \
echo ""; \
echo "Vet found suspicious constructs. Please check the reported constructs"; \
echo "and fix them if necessary before submitting the code for review."; \
exit 1; \
fi
clean:
@rm -rf bin
================================================
FILE: README.md
================================================
# Vultr Terraform Provider
This is a Terraform provider for Vultr. Find out more about [Vultr](https://www.vultr.com/about/).
[](https://travis-ci.org/squat/terraform-provider-vultr)
[](https://goreportcard.com/report/github.com/squat/terraform-provider-vultr)
## Requirements
* A Vultr account and API key
* [Terraform](https://www.terraform.io/downloads.html) 0.12+
* [Go](https://golang.org/doc/install) 1.8 (to build the provider plugin)
## Usage
Download `terraform-provider-vultr` from the [releases page](https://github.com/squat/terraform-provider-vultr/releases) and follow the instructions to [install it as a plugin](https://www.terraform.io/docs/plugins/basics.html#installing-a-plugin). After placing it into your plugins directory, run `terraform init` to initialize it.
*Note*: in order to build and install the provider from the latest commit on master, run:
```sh
go get -u github.com/squat/terraform-provider-vultr
```
and then register the plugin by symlinking the binary to the [third-party plugins directory](https://www.terraform.io/docs/configuration/providers.html#third-party-plugins):
```sh
mkdir -p ~/.terraform.d/plugins
ln -s "$GOPATH/bin/terraform-provider-vultr" ~/.terraform.d/plugins/terraform-provider-vultr
```
Set an environment variable containing the Vultr API key:
```
export VULTR_API_KEY=<your-vultr-api-key>
```
*Note*: as an alternative, the API key can be specified in configuration as shown below.
## Examples
```tf
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Silicon Valley"]
}
}
// Find the ID for CoreOS Container Linux.
data "vultr_os" "container_linux" {
filter {
name = "family"
values = ["coreos"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Find the ID of an existing SSH key.
data "vultr_ssh_key" "squat" {
filter {
name = "name"
values = ["squat"]
}
}
// Create a Vultr virtual machine.
resource "vultr_instance" "example" {
name = "example"
region_id = "${data.vultr_region.silicon_valley.id}"
plan_id = "${data.vultr_plan.starter.id}"
os_id = "${data.vultr_os.container_linux.id}"
ssh_key_ids = ["${data.vultr_ssh_key.squat.id}"]
hostname = "example"
tag = "container-linux"
firewall_group_id = "${vultr_firewall_group.example.id}"
}
// Create a new firewall group.
resource "vultr_firewall_group" "example" {
description = "example group"
}
// Add a firewall rule to the group allowing SSH access.
resource "vultr_firewall_rule" "ssh" {
firewall_group_id = "${vultr_firewall_group.example.id}"
cidr_block = "0.0.0.0/0"
protocol = "tcp"
from_port = 22
to_port = 22
}
```
## Development
To develop the plugin locally, install the following dependencies:
* [Go](https://golang.org/doc/install) 1.8 (to build the provider plugin)
* [Glide](https://github.com/Masterminds/glide#install) (to install and maintain dependencies)
* [glide-vc](https://github.com/sgotti/glide-vc#install) (to clean up dependencies)
To build the plugin run:
```sh
make build
```
To update Go dependencies run:
```sh
make vendor
```
================================================
FILE: examples/application/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the OS ID for applications.
data "vultr_os" "application" {
filter {
name = "family"
values = ["application"]
}
}
// Find the application ID for OpenVPN.
data "vultr_application" "openvpn" {
filter {
name = "short_name"
values = ["openvpn"]
}
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Silicon Valley"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Create a Vultr virtual machine.
resource "vultr_instance" "openvpn" {
name = "openvpn"
hostname = "openvpn"
region_id = data.vultr_region.silicon_valley.id
plan_id = data.vultr_plan.starter.id
os_id = data.vultr_os.application.id
application_id = data.vultr_application.openvpn.id
}
================================================
FILE: examples/application/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/bare_metal/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the OS ID for Container Linux.
data "vultr_os" "container_linux" {
filter {
name = "family"
values = ["coreos"]
}
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Silicon Valley"]
}
}
// Find the ID for a starter plan.
data "vultr_bare_metal_plan" "eightcpus" {
filter {
name = "cpu_count"
values = [8]
}
}
// Create a Vultr virtual machine.
resource "vultr_bare_metal" "example" {
name = "example"
hostname = "example"
region_id = data.vultr_region.silicon_valley.id
plan_id = data.vultr_bare_metal_plan.eightcpus.id
os_id = data.vultr_os.container_linux.id
}
================================================
FILE: examples/bare_metal/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/basic/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Silicon Valley"]
}
}
// Find the ID for CoreOS Container Linux.
data "vultr_os" "container_linux" {
filter {
name = "family"
values = ["coreos"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Create a Vultr virtual machine.
resource "vultr_instance" "example" {
name = "example"
region_id = data.vultr_region.silicon_valley.id
plan_id = data.vultr_plan.starter.id
os_id = data.vultr_os.container_linux.id
ssh_key_ids = [vultr_ssh_key.squat.id]
hostname = "example"
tag = "container-linux"
firewall_group_id = vultr_firewall_group.example.id
connection {
host = vultr_instance.example.ipv4_address
}
provisioner "remote-exec" {
inline = ["docker run --rm --net=host tianon/speedtest"]
}
}
// Create a new firewall group.
resource "vultr_firewall_group" "example" {
description = "example group"
}
// Add a firewall rule to the group allowing SSH access.
resource "vultr_firewall_rule" "ssh" {
firewall_group_id = vultr_firewall_group.example.id
cidr_block = "0.0.0.0/0"
protocol = "tcp"
from_port = 22
to_port = 22
notes = "ssh"
}
// Add a firewall rule to the group allowing ICMP.
resource "vultr_firewall_rule" "icmp" {
firewall_group_id = vultr_firewall_group.example.id
cidr_block = "0.0.0.0/0"
protocol = "icmp"
notes = "icmp"
}
// Create a new SSH key.
resource "vultr_ssh_key" "squat" {
name = "squat"
public_key = file("~/lserven.ssh")
}
// Add two extra IPv4 addresses to the virtual machine.
resource "vultr_ipv4" "example" {
instance_id = vultr_instance.example.id
reboot = false
count = 2
}
// Output all of the virtual machine's IPv4 addresses to STDOUT when the infrastructure is ready.
output "ip_addresses" {
value = concat(
vultr_ipv4.example.*.ipv4_address,
[vultr_instance.example.ipv4_address],
)
}
================================================
FILE: examples/basic/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/block_storage/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "has_block_storage" {
filter {
name = "block_storage"
values = ["true"]
}
}
// Create block storage.
resource "vultr_block_storage" "example" {
name = "example"
region_id = data.vultr_region.has_block_storage.id
size = 50
}
================================================
FILE: examples/block_storage/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/dns/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Create a DNS domain.
resource "vultr_dns_domain" "example" {
domain = "example.com"
ip = "10.0.0.1"
}
// Create a new DNS record.
resource "vultr_dns_record" "example_web" {
domain = vultr_dns_domain.example.id
name = "www"
type = "A"
data = vultr_dns_domain.example.ip
ttl = 300
}
================================================
FILE: examples/dns/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/kubernetes/example.tf
================================================
resource "vultr_dns_domain" "example" {
domain = "example.com"
ip = "0.0.0.0"
}
module "typhoon" {
source = "git::https://github.com/squat/typhoon-vultr?ref=v1.15.1"
cluster_name = "example"
# Vultr
region = data.vultr_region.frankfurt.id
dns_zone = vultr_dns_domain.example.domain
controller_type = data.vultr_plan.twogb.id
worker_type = data.vultr_plan.twogb.id
# configuration
ssh_authorized_key = file("/path/to/ssh/public/key")
asset_dir = "assets"
# optional
worker_count = 2
}
data "vultr_region" "frankfurt" {
filter {
name = "name"
values = ["Frankfurt"]
}
}
data "vultr_plan" "twogb" {
filter {
name = "ram"
values = ["2048"]
}
filter {
name = "plan_type"
values = ["SSD"]
}
}
================================================
FILE: examples/kubernetes/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/network/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the ID of the Frankfurt region.
data "vultr_region" "frankfurt" {
filter {
name = "name"
values = ["Frankfurt"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Find the OS ID for Ubuntu.
data "vultr_os" "ubuntu" {
filter {
name = "name"
values = ["Ubuntu 18.04 x64"]
}
}
// Create a pair of Vultr private networks.
resource "vultr_network" "network" {
count = 2
cidr_block = cidrsubnet("192.168.0.0/23", 1, count.index)
description = "test_${count.index}"
region_id = data.vultr_region.frankfurt.id
}
// Create a Vultr virtual machine.
resource "vultr_instance" "ubuntu" {
name = "ubuntu"
network_ids = vultr_network.network.*.id
region_id = data.vultr_region.frankfurt.id
plan_id = data.vultr_plan.starter.id
os_id = data.vultr_os.ubuntu.id
ipv6 = true
}
// Output all of the virtual machine's IPv6 addresses to STDOUT when the infrastructure is ready.
output "ip_addresses" {
value = vultr_instance.ubuntu.ipv6_addresses
}
================================================
FILE: examples/network/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/reserved_ip/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
#provider "vultr" {
#api_key = "<your-vultr-api-key>"
#}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Silicon Valley"]
}
}
// Find the ID for CoreOS Container Linux.
data "vultr_os" "container_linux" {
filter {
name = "family"
values = ["coreos"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Create a Vultr virtual machine.
resource "vultr_instance" "example" {
name = "example"
region_id = data.vultr_region.silicon_valley.id
plan_id = data.vultr_plan.starter.id
os_id = data.vultr_os.container_linux.id
ssh_key_ids = [vultr_ssh_key.squat.id]
}
// Create a new SSH key.
resource "vultr_ssh_key" "squat" {
name = "squat"
public_key = file("~/lserven.ssh")
}
// Create a reserved IP.
resource "vultr_reserved_ip" "example" {
name = "example"
attached_id = vultr_instance.example.id
region_id = data.vultr_region.silicon_valley.id
}
================================================
FILE: examples/reserved_ip/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: examples/snapshot/example.tf
================================================
// Configure the Vultr provider.
// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY=<your-vultr-api-key>`.
provider "vultr" {
api_key = "<your-vultr-api-key>"
}
// Find the snapshot ID for a Kubernetes master.
data "vultr_snapshot" "master" {
description_regex = "master"
}
// Find the ID of the Silicon Valley region.
data "vultr_region" "silicon_valley" {
filter {
name = "name"
values = ["Frankfurt"]
}
}
// Find the ID for a starter plan.
data "vultr_plan" "starter" {
filter {
name = "price_per_month"
values = ["5.00"]
}
filter {
name = "ram"
values = ["1024"]
}
}
// Create a Vultr virtual machine.
resource "vultr_instance" "snapshot" {
name = "snapshot"
region_id = data.vultr_region.silicon_valley.id
plan_id = data.vultr_plan.starter.id
snapshot_id = data.vultr_snapshot.master.id
}
================================================
FILE: examples/snapshot/versions.tf
================================================
terraform {
required_version = ">= 0.12"
}
================================================
FILE: glide.yaml
================================================
package: github.com/squat/terraform-provider-vultr
import:
- package: github.com/JamesClonk/vultr
version: ea92af1525b60d4eb6aed8d17fab725592e06ed2
subpackages:
- lib
- package: github.com/fatih/structs
- package: github.com/hashicorp/terraform
version: v0.12.1
subpackages:
- helper/mutexkv
- helper/resource
- helper/schema
- plugin
- terraform
================================================
FILE: main.go
================================================
package main
import (
"github.com/hashicorp/terraform/plugin"
"github.com/squat/terraform-provider-vultr/vultr"
)
func main() {
plugin.Serve(&plugin.ServeOpts{
ProviderFunc: vultr.Provider,
})
}
================================================
FILE: structs/field.go
================================================
package structs
import (
"errors"
"fmt"
"reflect"
)
var (
errNotExported = errors.New("field is not exported")
errNotSettable = errors.New("field is not settable")
)
// Field represents a single struct field that encapsulates high level
// functions around the field.
type Field struct {
value reflect.Value
field reflect.StructField
defaultTag string
}
// Tag returns the value associated with key in the tag string. If there is no
// such key in the tag, Tag returns the empty string.
func (f *Field) Tag(key string) string {
return f.field.Tag.Get(key)
}
// Value returns the underlying value of the field. It panics if the field
// is not exported.
func (f *Field) Value() interface{} {
return f.value.Interface()
}
// IsEmbedded returns true if the given field is an anonymous field (embedded)
func (f *Field) IsEmbedded() bool {
return f.field.Anonymous
}
// IsExported returns true if the given field is exported.
func (f *Field) IsExported() bool {
return f.field.PkgPath == ""
}
// IsZero returns true if the given field is not initialized (has a zero value).
// It panics if the field is not exported.
func (f *Field) IsZero() bool {
zero := reflect.Zero(f.value.Type()).Interface()
current := f.Value()
return reflect.DeepEqual(current, zero)
}
// Name returns the name of the given field
func (f *Field) Name() string {
return f.field.Name
}
// Kind returns the fields kind, such as "string", "map", "bool", etc ..
func (f *Field) Kind() reflect.Kind {
return f.value.Kind()
}
// Set sets the field to given value v. It returns an error if the field is not
// settable (not addressable or not exported) or if the given value's type
// doesn't match the fields type.
func (f *Field) Set(val interface{}) error {
// we can't set unexported fields, so be sure this field is exported
if !f.IsExported() {
return errNotExported
}
// do we get here? not sure...
if !f.value.CanSet() {
return errNotSettable
}
given := reflect.ValueOf(val)
if f.value.Kind() != given.Kind() {
return fmt.Errorf("wrong kind. got: %s want: %s", given.Kind(), f.value.Kind())
}
f.value.Set(given)
return nil
}
// Zero sets the field to its zero value. It returns an error if the field is not
// settable (not addressable or not exported).
func (f *Field) Zero() error {
zero := reflect.Zero(f.value.Type()).Interface()
return f.Set(zero)
}
// Fields returns a slice of Fields. This is particular handy to get the fields
// of a nested struct . A struct tag with the content of "-" ignores the
// checking of that particular field. Example:
//
// // Field is ignored by this package.
// Field *http.Request `structs:"-"`
//
// It panics if field is not exported or if field's kind is not struct
func (f *Field) Fields() []*Field {
return getFields(f.value, f.defaultTag)
}
// Field returns the field from a nested struct. It panics if the nested struct
// is not exported or if the field was not found.
func (f *Field) Field(name string) *Field {
field, ok := f.FieldOk(name)
if !ok {
panic("field not found")
}
return field
}
// FieldOk returns the field from a nested struct. The boolean returns whether
// the field was found (true) or not (false).
func (f *Field) FieldOk(name string) (*Field, bool) {
value := &f.value
// value must be settable so we need to make sure it holds the address of the
// variable and not a copy, so we can pass the pointer to strctVal instead of a
// copy (which is not assigned to any variable, hence not settable).
// see "https://blog.golang.org/laws-of-reflection#TOC_8."
if f.value.Kind() != reflect.Ptr {
a := f.value.Addr()
value = &a
}
v := strctVal(value.Interface())
t := v.Type()
field, ok := t.FieldByName(name)
if !ok {
return nil, false
}
return &Field{
field: field,
value: v.FieldByName(name),
}, true
}
================================================
FILE: structs/structs.go
================================================
// Package structs is a fork of "github.com/fatih/structs" which is archived. This contains various utilities functions to work with structs.
package structs
import (
"fmt"
"reflect"
)
var (
// DefaultTagName is the default tag name for struct fields which provides
// a more granular to tweak certain structs. Lookup the necessary functions
// for more info.
DefaultTagName = "structs" // struct's field default tag name
)
// Struct encapsulates a struct type to provide several high level functions
// around the struct.
type Struct struct {
raw interface{}
value reflect.Value
TagName string
}
// New returns a new *Struct with the struct s. It panics if the s's kind is
// not struct.
func New(s interface{}) *Struct {
return &Struct{
raw: s,
value: strctVal(s),
TagName: DefaultTagName,
}
}
// Map converts the given struct to a map[string]interface{}, where the keys
// of the map are the field names and the values of the map the associated
// values of the fields. The default key string is the struct field name but
// can be changed in the struct field's tag value. The "structs" key in the
// struct's field tag value is the key name. Example:
//
// // Field appears in map as key "myName".
// Name string `structs:"myName"`
//
// A tag value with the content of "-" ignores that particular field. Example:
//
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// A tag value with the content of "string" uses fmt.Sprintf() to get the value. Example:
//
// Field *Animal `structs:"field,string"`
//
// A tag value with the option of "flatten" used in a struct field is to flatten its fields
// in the output map. Example:
//
// // The FieldStruct's fields will be flattened into the output map.
// FieldStruct time.Time `structs:",flatten"`
//
// A tag value with the option of "omitnested" stops iterating further if the type
// is a struct. Example:
//
// // Field is not processed further by this package.
// Field time.Time `structs:"myName,omitnested"`
// Field *http.Request `structs:",omitnested"`
//
// A tag value with the option of "omitempty" ignores that particular field if
// the field value is empty. Example:
//
// // Field appears in map as key "myName", but the field is
// // skipped if empty.
// Field string `structs:"myName,omitempty"`
//
// // Field appears in map as key "Field" (the default), but
// // the field is skipped if empty.
// Field string `structs:",omitempty"`
//
// Note that only exported fields of a struct can be accessed, non exported
// fields will be neglected.
func (s *Struct) Map() map[string]interface{} {
out := make(map[string]interface{})
s.FillMap(out)
return out
}
// FillMap is the same as Map. Instead of returning the output, it fills the
// given map.
func (s *Struct) FillMap(out map[string]interface{}) {
if out == nil {
return
}
fields := s.structFields()
for _, field := range fields {
name := field.Name
val := s.value.FieldByName(name)
isSubStruct := false
var finalVal interface{}
tagName, tagOpts := parseTag(field.Tag.Get(s.TagName))
if tagName != "" {
name = tagName
}
// if the value is a zero value and the field is marked as omitempty do
// not include
if tagOpts.Has("omitempty") {
zero := reflect.Zero(val.Type()).Interface()
current := val.Interface()
if reflect.DeepEqual(current, zero) {
continue
}
}
if !tagOpts.Has("omitnested") {
finalVal = s.nested(val)
v := reflect.ValueOf(val.Interface())
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
switch v.Kind() {
case reflect.Map, reflect.Struct:
isSubStruct = true
}
} else {
finalVal = val.Interface()
}
if tagOpts.Has("string") {
s := fmt.Sprintf("%v", val.Interface())
if s != "" {
out[name] = s
}
continue
}
if isSubStruct && (tagOpts.Has("flatten")) {
for k := range finalVal.(map[string]interface{}) {
out[k] = finalVal.(map[string]interface{})[k]
}
} else {
out[name] = finalVal
}
}
}
// Values converts the given s struct's field values to a []interface{}. A
// struct tag with the content of "-" ignores the that particular field.
// Example:
//
// // Field is ignored by this package.
// Field int `structs:"-"`
//
// A value with the option of "omitnested" stops iterating further if the type
// is a struct. Example:
//
// // Fields is not processed further by this package.
// Field time.Time `structs:",omitnested"`
// Field *http.Request `structs:",omitnested"`
//
// A tag value with the option of "omitempty" ignores that particular field and
// is not added to the values if the field value is empty. Example:
//
// // Field is skipped if empty
// Field string `structs:",omitempty"`
//
// Note that only exported fields of a struct can be accessed, non exported
// fields will be neglected.
func (s *Struct) Values() []interface{} {
fields := s.structFields()
var t []interface{}
for _, field := range fields {
val := s.value.FieldByName(field.Name)
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
// if the value is a zero value and the field is marked as omitempty do
// not include
if tagOpts.Has("omitempty") {
zero := reflect.Zero(val.Type()).Interface()
current := val.Interface()
if reflect.DeepEqual(current, zero) {
continue
}
}
if tagOpts.Has("string") {
s, ok := val.Interface().(fmt.Stringer)
if ok {
t = append(t, s.String())
}
continue
}
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
// look out for embedded structs, and convert them to a
// []interface{} to be added to the final values slice
t = append(t, Values(val.Interface())...)
} else {
t = append(t, val.Interface())
}
}
return t
}
// Fields returns a slice of Fields. A struct tag with the content of "-"
// ignores the checking of that particular field. Example:
//
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// It panics if s's kind is not struct.
func (s *Struct) Fields() []*Field {
return getFields(s.value, s.TagName)
}
// Names returns a slice of field names. A struct tag with the content of "-"
// ignores the checking of that particular field. Example:
//
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// It panics if s's kind is not struct.
func (s *Struct) Names() []string {
fields := getFields(s.value, s.TagName)
names := make([]string, len(fields))
for i, field := range fields {
names[i] = field.Name()
}
return names
}
func getFields(v reflect.Value, tagName string) []*Field {
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
t := v.Type()
var fields []*Field
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
if tag := field.Tag.Get(tagName); tag == "-" {
continue
}
f := &Field{
field: field,
value: v.FieldByName(field.Name),
}
fields = append(fields, f)
}
return fields
}
// Field returns a new Field struct that provides several high level functions
// around a single struct field entity. It panics if the field is not found.
func (s *Struct) Field(name string) *Field {
f, ok := s.FieldOk(name)
if !ok {
panic("field not found")
}
return f
}
// FieldOk returns a new Field struct that provides several high level functions
// around a single struct field entity. The boolean returns true if the field
// was found.
func (s *Struct) FieldOk(name string) (*Field, bool) {
t := s.value.Type()
field, ok := t.FieldByName(name)
if !ok {
return nil, false
}
return &Field{
field: field,
value: s.value.FieldByName(name),
defaultTag: s.TagName,
}, true
}
// IsZero returns true if all fields in a struct is a zero value (not
// initialized) A struct tag with the content of "-" ignores the checking of
// that particular field. Example:
//
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// A value with the option of "omitnested" stops iterating further if the type
// is a struct. Example:
//
// // Field is not processed further by this package.
// Field time.Time `structs:"myName,omitnested"`
// Field *http.Request `structs:",omitnested"`
//
// Note that only exported fields of a struct can be accessed, non exported
// fields will be neglected. It panics if s's kind is not struct.
func (s *Struct) IsZero() bool {
fields := s.structFields()
for _, field := range fields {
val := s.value.FieldByName(field.Name)
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
ok := IsZero(val.Interface())
if !ok {
return false
}
continue
}
// zero value of the given field, such as "" for string, 0 for int
zero := reflect.Zero(val.Type()).Interface()
// current value of the given field
current := val.Interface()
if !reflect.DeepEqual(current, zero) {
return false
}
}
return true
}
// HasZero returns true if a field in a struct is not initialized (zero value).
// A struct tag with the content of "-" ignores the checking of that particular
// field. Example:
//
// // Field is ignored by this package.
// Field bool `structs:"-"`
//
// A value with the option of "omitnested" stops iterating further if the type
// is a struct. Example:
//
// // Field is not processed further by this package.
// Field time.Time `structs:"myName,omitnested"`
// Field *http.Request `structs:",omitnested"`
//
// Note that only exported fields of a struct can be accessed, non exported
// fields will be neglected. It panics if s's kind is not struct.
func (s *Struct) HasZero() bool {
fields := s.structFields()
for _, field := range fields {
val := s.value.FieldByName(field.Name)
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
ok := HasZero(val.Interface())
if ok {
return true
}
continue
}
// zero value of the given field, such as "" for string, 0 for int
zero := reflect.Zero(val.Type()).Interface()
// current value of the given field
current := val.Interface()
if reflect.DeepEqual(current, zero) {
return true
}
}
return false
}
// Name returns the structs's type name within its package. For more info refer
// to Name() function.
func (s *Struct) Name() string {
return s.value.Type().Name()
}
// structFields returns the exported struct fields for a given s struct. This
// is a convenient helper method to avoid duplicate code in some of the
// functions.
func (s *Struct) structFields() []reflect.StructField {
t := s.value.Type()
var f []reflect.StructField
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
// we can't access the value of unexported fields
if field.PkgPath != "" {
continue
}
// don't check if it's omitted
if tag := field.Tag.Get(s.TagName); tag == "-" {
continue
}
f = append(f, field)
}
return f
}
func strctVal(s interface{}) reflect.Value {
v := reflect.ValueOf(s)
// if pointer get the underlying element≤
for v.Kind() == reflect.Ptr {
v = v.Elem()
}
if v.Kind() != reflect.Struct {
panic("not struct")
}
return v
}
// Map converts the given struct to a map[string]interface{}. For more info
// refer to Struct types Map() method. It panics if s's kind is not struct.
func Map(s interface{}) map[string]interface{} {
return New(s).Map()
}
// FillMap is the same as Map. Instead of returning the output, it fills the
// given map.
func FillMap(s interface{}, out map[string]interface{}) {
New(s).FillMap(out)
}
// Values converts the given struct to a []interface{}. For more info refer to
// Struct types Values() method. It panics if s's kind is not struct.
func Values(s interface{}) []interface{} {
return New(s).Values()
}
// Fields returns a slice of *Field. For more info refer to Struct types
// Fields() method. It panics if s's kind is not struct.
func Fields(s interface{}) []*Field {
return New(s).Fields()
}
// Names returns a slice of field names. For more info refer to Struct types
// Names() method. It panics if s's kind is not struct.
func Names(s interface{}) []string {
return New(s).Names()
}
// IsZero returns true if all fields is equal to a zero value. For more info
// refer to Struct types IsZero() method. It panics if s's kind is not struct.
func IsZero(s interface{}) bool {
return New(s).IsZero()
}
// HasZero returns true if any field is equal to a zero value. For more info
// refer to Struct types HasZero() method. It panics if s's kind is not struct.
func HasZero(s interface{}) bool {
return New(s).HasZero()
}
// IsStruct returns true if the given variable is a struct or a pointer to
// struct.
func IsStruct(s interface{}) bool {
v := reflect.ValueOf(s)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
// uninitialized zero value of a struct
if v.Kind() == reflect.Invalid {
return false
}
return v.Kind() == reflect.Struct
}
// Name returns the structs's type name within its package. It returns an
// empty string for unnamed types. It panics if s's kind is not struct.
func Name(s interface{}) string {
return New(s).Name()
}
// nested retrieves recursively all types for the given value and returns the
// nested value.
func (s *Struct) nested(val reflect.Value) interface{} {
var finalVal interface{}
v := reflect.ValueOf(val.Interface())
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
switch v.Kind() {
case reflect.Struct:
n := New(val.Interface())
n.TagName = s.TagName
m := n.Map()
// do not add the converted value if there are no exported fields, ie:
// time.Time
if len(m) == 0 {
finalVal = val.Interface()
} else {
finalVal = m
}
case reflect.Map:
// get the element type of the map
mapElem := val.Type()
switch val.Type().Kind() {
case reflect.Ptr, reflect.Array, reflect.Map,
reflect.Slice, reflect.Chan:
mapElem = val.Type().Elem()
if mapElem.Kind() == reflect.Ptr {
mapElem = mapElem.Elem()
}
}
// only iterate over struct types, ie: map[string]StructType,
// map[string][]StructType,
if mapElem.Kind() == reflect.Struct ||
(mapElem.Kind() == reflect.Slice &&
mapElem.Elem().Kind() == reflect.Struct) {
m := make(map[string]interface{}, val.Len())
for _, k := range val.MapKeys() {
m[k.String()] = s.nested(val.MapIndex(k))
}
finalVal = m
break
}
// TODO(arslan): should this be optional?
finalVal = val.Interface()
case reflect.Slice, reflect.Array:
if val.Type().Kind() == reflect.Interface {
finalVal = val.Interface()
break
}
// TODO(arslan): should this be optional?
// do not iterate of non struct types, just pass the value. Ie: []int,
// []string, co... We only iterate further if it's a struct.
// i.e []foo or []*foo
if val.Type().Elem().Kind() != reflect.Struct &&
!(val.Type().Elem().Kind() == reflect.Ptr &&
val.Type().Elem().Elem().Kind() == reflect.Struct) {
finalVal = val.Interface()
break
}
slices := make([]interface{}, val.Len())
for x := 0; x < val.Len(); x++ {
slices[x] = s.nested(val.Index(x))
}
finalVal = slices
default:
finalVal = val.Interface()
}
return finalVal
}
================================================
FILE: structs/tags.go
================================================
package structs
import "strings"
// tagOptions contains a slice of tag options
type tagOptions []string
// Has returns true if the given option is available in tagOptions
func (t tagOptions) Has(opt string) bool {
for _, tagOpt := range t {
if tagOpt == opt {
return true
}
}
return false
}
// parseTag splits a struct field's tag into its name and a list of options
// which comes after a name. A tag is in the form of: "name,option1,option2".
// The name can be neglectected.
func parseTag(tag string) (string, tagOptions) {
// tag is one of followings:
// ""
// "name"
// "name,opt"
// "name,opt,opt2"
// ",opt"
res := strings.Split(tag, ",")
return res[0], res[1:]
}
================================================
FILE: vendor/cloud.google.com/go/LICENSE
================================================
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:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) 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
(d) 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 [yyyy] [name of copyright owner]
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.
================================================
FILE: vendor/cloud.google.com/go/compute/metadata/metadata.go
================================================
// Copyright 2014 Google LLC
//
// 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 metadata provides access to Google Compute Engine (GCE)
// metadata and API service accounts.
//
// This package is a wrapper around the GCE metadata service,
// as documented at https://developers.google.com/compute/docs/metadata.
package metadata // import "cloud.google.com/go/compute/metadata"
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"net"
"net/http"
"net/url"
"os"
"runtime"
"strings"
"sync"
"time"
)
const (
// metadataIP is the documented metadata server IP address.
metadataIP = "169.254.169.254"
// metadataHostEnv is the environment variable specifying the
// GCE metadata hostname. If empty, the default value of
// metadataIP ("169.254.169.254") is used instead.
// This is variable name is not defined by any spec, as far as
// I know; it was made up for the Go package.
metadataHostEnv = "GCE_METADATA_HOST"
userAgent = "gcloud-golang/0.1"
)
type cachedValue struct {
k string
trim bool
mu sync.Mutex
v string
}
var (
projID = &cachedValue{k: "project/project-id", trim: true}
projNum = &cachedValue{k: "project/numeric-project-id", trim: true}
instID = &cachedValue{k: "instance/id", trim: true}
)
var (
defaultClient = &Client{hc: &http.Client{
Transport: &http.Transport{
Dial: (&net.Dialer{
Timeout: 2 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
ResponseHeaderTimeout: 2 * time.Second,
},
}}
subscribeClient = &Client{hc: &http.Client{
Transport: &http.Transport{
Dial: (&net.Dialer{
Timeout: 2 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
},
}}
)
// NotDefinedError is returned when requested metadata is not defined.
//
// The underlying string is the suffix after "/computeMetadata/v1/".
//
// This error is not returned if the value is defined to be the empty
// string.
type NotDefinedError string
func (suffix NotDefinedError) Error() string {
return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix))
}
func (c *cachedValue) get(cl *Client) (v string, err error) {
defer c.mu.Unlock()
c.mu.Lock()
if c.v != "" {
return c.v, nil
}
if c.trim {
v, err = cl.getTrimmed(c.k)
} else {
v, err = cl.Get(c.k)
}
if err == nil {
c.v = v
}
return
}
var (
onGCEOnce sync.Once
onGCE bool
)
// OnGCE reports whether this process is running on Google Compute Engine.
func OnGCE() bool {
onGCEOnce.Do(initOnGCE)
return onGCE
}
func initOnGCE() {
onGCE = testOnGCE()
}
func testOnGCE() bool {
// The user explicitly said they're on GCE, so trust them.
if os.Getenv(metadataHostEnv) != "" {
return true
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
resc := make(chan bool, 2)
// Try two strategies in parallel.
// See https://github.com/googleapis/google-cloud-go/issues/194
go func() {
req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
req.Header.Set("User-Agent", userAgent)
res, err := defaultClient.hc.Do(req.WithContext(ctx))
if err != nil {
resc <- false
return
}
defer res.Body.Close()
resc <- res.Header.Get("Metadata-Flavor") == "Google"
}()
go func() {
addrs, err := net.LookupHost("metadata.google.internal")
if err != nil || len(addrs) == 0 {
resc <- false
return
}
resc <- strsContains(addrs, metadataIP)
}()
tryHarder := systemInfoSuggestsGCE()
if tryHarder {
res := <-resc
if res {
// The first strategy succeeded, so let's use it.
return true
}
// Wait for either the DNS or metadata server probe to
// contradict the other one and say we are running on
// GCE. Give it a lot of time to do so, since the system
// info already suggests we're running on a GCE BIOS.
timer := time.NewTimer(5 * time.Second)
defer timer.Stop()
select {
case res = <-resc:
return res
case <-timer.C:
// Too slow. Who knows what this system is.
return false
}
}
// There's no hint from the system info that we're running on
// GCE, so use the first probe's result as truth, whether it's
// true or false. The goal here is to optimize for speed for
// users who are NOT running on GCE. We can't assume that
// either a DNS lookup or an HTTP request to a blackholed IP
// address is fast. Worst case this should return when the
// metaClient's Transport.ResponseHeaderTimeout or
// Transport.Dial.Timeout fires (in two seconds).
return <-resc
}
// systemInfoSuggestsGCE reports whether the local system (without
// doing network requests) suggests that we're running on GCE. If this
// returns true, testOnGCE tries a bit harder to reach its metadata
// server.
func systemInfoSuggestsGCE() bool {
if runtime.GOOS != "linux" {
// We don't have any non-Linux clues available, at least yet.
return false
}
slurp, _ := ioutil.ReadFile("/sys/class/dmi/id/product_name")
name := strings.TrimSpace(string(slurp))
return name == "Google" || name == "Google Compute Engine"
}
// Subscribe calls Client.Subscribe on a client designed for subscribing (one with no
// ResponseHeaderTimeout).
func Subscribe(suffix string, fn func(v string, ok bool) error) error {
return subscribeClient.Subscribe(suffix, fn)
}
// Get calls Client.Get on the default client.
func Get(suffix string) (string, error) { return defaultClient.Get(suffix) }
// ProjectID returns the current instance's project ID string.
func ProjectID() (string, error) { return defaultClient.ProjectID() }
// NumericProjectID returns the current instance's numeric project ID.
func NumericProjectID() (string, error) { return defaultClient.NumericProjectID() }
// InternalIP returns the instance's primary internal IP address.
func InternalIP() (string, error) { return defaultClient.InternalIP() }
// ExternalIP returns the instance's primary external (public) IP address.
func ExternalIP() (string, error) { return defaultClient.ExternalIP() }
// Hostname returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
func Hostname() (string, error) { return defaultClient.Hostname() }
// InstanceTags returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
func InstanceTags() ([]string, error) { return defaultClient.InstanceTags() }
// InstanceID returns the current VM's numeric instance ID.
func InstanceID() (string, error) { return defaultClient.InstanceID() }
// InstanceName returns the current VM's instance ID string.
func InstanceName() (string, error) { return defaultClient.InstanceName() }
// Zone returns the current VM's zone, such as "us-central1-b".
func Zone() (string, error) { return defaultClient.Zone() }
// InstanceAttributes calls Client.InstanceAttributes on the default client.
func InstanceAttributes() ([]string, error) { return defaultClient.InstanceAttributes() }
// ProjectAttributes calls Client.ProjectAttributes on the default client.
func ProjectAttributes() ([]string, error) { return defaultClient.ProjectAttributes() }
// InstanceAttributeValue calls Client.InstanceAttributeValue on the default client.
func InstanceAttributeValue(attr string) (string, error) {
return defaultClient.InstanceAttributeValue(attr)
}
// ProjectAttributeValue calls Client.ProjectAttributeValue on the default client.
func ProjectAttributeValue(attr string) (string, error) {
return defaultClient.ProjectAttributeValue(attr)
}
// Scopes calls Client.Scopes on the default client.
func Scopes(serviceAccount string) ([]string, error) { return defaultClient.Scopes(serviceAccount) }
func strsContains(ss []string, s string) bool {
for _, v := range ss {
if v == s {
return true
}
}
return false
}
// A Client provides metadata.
type Client struct {
hc *http.Client
}
// NewClient returns a Client that can be used to fetch metadata. All HTTP requests
// will use the given http.Client instead of the default client.
func NewClient(c *http.Client) *Client {
return &Client{hc: c}
}
// getETag returns a value from the metadata service as well as the associated ETag.
// This func is otherwise equivalent to Get.
func (c *Client) getETag(suffix string) (value, etag string, err error) {
// Using a fixed IP makes it very difficult to spoof the metadata service in
// a container, which is an important use-case for local testing of cloud
// deployments. To enable spoofing of the metadata service, the environment
// variable GCE_METADATA_HOST is first inspected to decide where metadata
// requests shall go.
host := os.Getenv(metadataHostEnv)
if host == "" {
// Using 169.254.169.254 instead of "metadata" here because Go
// binaries built with the "netgo" tag and without cgo won't
// know the search suffix for "metadata" is
// ".google.internal", and this IP address is documented as
// being stable anyway.
host = metadataIP
}
u := "http://" + host + "/computeMetadata/v1/" + suffix
req, _ := http.NewRequest("GET", u, nil)
req.Header.Set("Metadata-Flavor", "Google")
req.Header.Set("User-Agent", userAgent)
res, err := c.hc.Do(req)
if err != nil {
return "", "", err
}
defer res.Body.Close()
if res.StatusCode == http.StatusNotFound {
return "", "", NotDefinedError(suffix)
}
all, err := ioutil.ReadAll(res.Body)
if err != nil {
return "", "", err
}
if res.StatusCode != 200 {
return "", "", &Error{Code: res.StatusCode, Message: string(all)}
}
return string(all), res.Header.Get("Etag"), nil
}
// Get returns a value from the metadata service.
// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
//
// If the GCE_METADATA_HOST environment variable is not defined, a default of
// 169.254.169.254 will be used instead.
//
// If the requested metadata is not defined, the returned error will
// be of type NotDefinedError.
func (c *Client) Get(suffix string) (string, error) {
val, _, err := c.getETag(suffix)
return val, err
}
func (c *Client) getTrimmed(suffix string) (s string, err error) {
s, err = c.Get(suffix)
s = strings.TrimSpace(s)
return
}
func (c *Client) lines(suffix string) ([]string, error) {
j, err := c.Get(suffix)
if err != nil {
return nil, err
}
s := strings.Split(strings.TrimSpace(j), "\n")
for i := range s {
s[i] = strings.TrimSpace(s[i])
}
return s, nil
}
// ProjectID returns the current instance's project ID string.
func (c *Client) ProjectID() (string, error) { return projID.get(c) }
// NumericProjectID returns the current instance's numeric project ID.
func (c *Client) NumericProjectID() (string, error) { return projNum.get(c) }
// InstanceID returns the current VM's numeric instance ID.
func (c *Client) InstanceID() (string, error) { return instID.get(c) }
// InternalIP returns the instance's primary internal IP address.
func (c *Client) InternalIP() (string, error) {
return c.getTrimmed("instance/network-interfaces/0/ip")
}
// ExternalIP returns the instance's primary external (public) IP address.
func (c *Client) ExternalIP() (string, error) {
return c.getTrimmed("instance/network-interfaces/0/access-configs/0/external-ip")
}
// Hostname returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
func (c *Client) Hostname() (string, error) {
return c.getTrimmed("instance/hostname")
}
// InstanceTags returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
func (c *Client) InstanceTags() ([]string, error) {
var s []string
j, err := c.Get("instance/tags")
if err != nil {
return nil, err
}
if err := json.NewDecoder(strings.NewReader(j)).Decode(&s); err != nil {
return nil, err
}
return s, nil
}
// InstanceName returns the current VM's instance ID string.
func (c *Client) InstanceName() (string, error) {
host, err := c.Hostname()
if err != nil {
return "", err
}
return strings.Split(host, ".")[0], nil
}
// Zone returns the current VM's zone, such as "us-central1-b".
func (c *Client) Zone() (string, error) {
zone, err := c.getTrimmed("instance/zone")
// zone is of the form "projects/<projNum>/zones/<zoneName>".
if err != nil {
return "", err
}
return zone[strings.LastIndex(zone, "/")+1:], nil
}
// InstanceAttributes returns the list of user-defined attributes,
// assigned when initially creating a GCE VM instance. The value of an
// attribute can be obtained with InstanceAttributeValue.
func (c *Client) InstanceAttributes() ([]string, error) { return c.lines("instance/attributes/") }
// ProjectAttributes returns the list of user-defined attributes
// applying to the project as a whole, not just this VM. The value of
// an attribute can be obtained with ProjectAttributeValue.
func (c *Client) ProjectAttributes() ([]string, error) { return c.lines("project/attributes/") }
// InstanceAttributeValue returns the value of the provided VM
// instance attribute.
//
// If the requested attribute is not defined, the returned error will
// be of type NotDefinedError.
//
// InstanceAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
func (c *Client) InstanceAttributeValue(attr string) (string, error) {
return c.Get("instance/attributes/" + attr)
}
// ProjectAttributeValue returns the value of the provided
// project attribute.
//
// If the requested attribute is not defined, the returned error will
// be of type NotDefinedError.
//
// ProjectAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
func (c *Client) ProjectAttributeValue(attr string) (string, error) {
return c.Get("project/attributes/" + attr)
}
// Scopes returns the service account scopes for the given account.
// The account may be empty or the string "default" to use the instance's
// main account.
func (c *Client) Scopes(serviceAccount string) ([]string, error) {
if serviceAccount == "" {
serviceAccount = "default"
}
return c.lines("instance/service-accounts/" + serviceAccount + "/scopes")
}
// Subscribe subscribes to a value from the metadata service.
// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
// The suffix may contain query parameters.
//
// Subscribe calls fn with the latest metadata value indicated by the provided
// suffix. If the metadata value is deleted, fn is called with the empty string
// and ok false. Subscribe blocks until fn returns a non-nil error or the value
// is deleted. Subscribe returns the error value returned from the last call to
// fn, which may be nil when ok == false.
func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) error {
const failedSubscribeSleep = time.Second * 5
// First check to see if the metadata value exists at all.
val, lastETag, err := c.getETag(suffix)
if err != nil {
return err
}
if err := fn(val, true); err != nil {
return err
}
ok := true
if strings.ContainsRune(suffix, '?') {
suffix += "&wait_for_change=true&last_etag="
} else {
suffix += "?wait_for_change=true&last_etag="
}
for {
val, etag, err := c.getETag(suffix + url.QueryEscape(lastETag))
if err != nil {
if _, deleted := err.(NotDefinedError); !deleted {
time.Sleep(failedSubscribeSleep)
continue // Retry on other errors.
}
ok = false
}
lastETag = etag
if err := fn(val, ok); err != nil || !ok {
return err
}
}
}
// Error contains an error response from the server.
type Error struct {
// Code is the HTTP response status code.
Code int
// Message is the server response message.
Message string
}
func (e *Error) Error() string {
return fmt.Sprintf("compute: Received %d `%s`", e.Code, e.Message)
}
================================================
FILE: vendor/cloud.google.com/go/iam/iam.go
================================================
// Copyright 2016 Google LLC
//
// 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 iam supports the resource-specific operations of Google Cloud
// IAM (Identity and Access Management) for the Google Cloud Libraries.
// See https://cloud.google.com/iam for more about IAM.
//
// Users of the Google Cloud Libraries will typically not use this package
// directly. Instead they will begin with some resource that supports IAM, like
// a pubsub topic, and call its IAM method to get a Handle for that resource.
package iam
import (
"context"
"fmt"
"time"
gax "github.com/googleapis/gax-go/v2"
pb "google.golang.org/genproto/googleapis/iam/v1"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/metadata"
)
// client abstracts the IAMPolicy API to allow multiple implementations.
type client interface {
Get(ctx context.Context, resource string) (*pb.Policy, error)
Set(ctx context.Context, resource string, p *pb.Policy) error
Test(ctx context.Context, resource string, perms []string) ([]string, error)
}
// grpcClient implements client for the standard gRPC-based IAMPolicy service.
type grpcClient struct {
c pb.IAMPolicyClient
}
var withRetry = gax.WithRetry(func() gax.Retryer {
return gax.OnCodes([]codes.Code{
codes.DeadlineExceeded,
codes.Unavailable,
}, gax.Backoff{
Initial: 100 * time.Millisecond,
Max: 60 * time.Second,
Multiplier: 1.3,
})
})
func (g *grpcClient) Get(ctx context.Context, resource string) (*pb.Policy, error) {
var proto *pb.Policy
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
ctx = insertMetadata(ctx, md)
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
var err error
proto, err = g.c.GetIamPolicy(ctx, &pb.GetIamPolicyRequest{Resource: resource})
return err
}, withRetry)
if err != nil {
return nil, err
}
return proto, nil
}
func (g *grpcClient) Set(ctx context.Context, resource string, p *pb.Policy) error {
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
ctx = insertMetadata(ctx, md)
return gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
_, err := g.c.SetIamPolicy(ctx, &pb.SetIamPolicyRequest{
Resource: resource,
Policy: p,
})
return err
}, withRetry)
}
func (g *grpcClient) Test(ctx context.Context, resource string, perms []string) ([]string, error) {
var res *pb.TestIamPermissionsResponse
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
ctx = insertMetadata(ctx, md)
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
var err error
res, err = g.c.TestIamPermissions(ctx, &pb.TestIamPermissionsRequest{
Resource: resource,
Permissions: perms,
})
return err
}, withRetry)
if err != nil {
return nil, err
}
return res.Permissions, nil
}
// A Handle provides IAM operations for a resource.
type Handle struct {
c client
resource string
}
// InternalNewHandle is for use by the Google Cloud Libraries only.
//
// InternalNewHandle returns a Handle for resource.
// The conn parameter refers to a server that must support the IAMPolicy service.
func InternalNewHandle(conn *grpc.ClientConn, resource string) *Handle {
return InternalNewHandleGRPCClient(pb.NewIAMPolicyClient(conn), resource)
}
// InternalNewHandleGRPCClient is for use by the Google Cloud Libraries only.
//
// InternalNewHandleClient returns a Handle for resource using the given
// grpc service that implements IAM as a mixin
func InternalNewHandleGRPCClient(c pb.IAMPolicyClient, resource string) *Handle {
return InternalNewHandleClient(&grpcClient{c: c}, resource)
}
// InternalNewHandleClient is for use by the Google Cloud Libraries only.
//
// InternalNewHandleClient returns a Handle for resource using the given
// client implementation.
func InternalNewHandleClient(c client, resource string) *Handle {
return &Handle{
c: c,
resource: resource,
}
}
// Policy retrieves the IAM policy for the resource.
func (h *Handle) Policy(ctx context.Context) (*Policy, error) {
proto, err := h.c.Get(ctx, h.resource)
if err != nil {
return nil, err
}
return &Policy{InternalProto: proto}, nil
}
// SetPolicy replaces the resource's current policy with the supplied Policy.
//
// If policy was created from a prior call to Get, then the modification will
// only succeed if the policy has not changed since the Get.
func (h *Handle) SetPolicy(ctx context.Context, policy *Policy) error {
return h.c.Set(ctx, h.resource, policy.InternalProto)
}
// TestPermissions returns the subset of permissions that the caller has on the resource.
func (h *Handle) TestPermissions(ctx context.Context, permissions []string) ([]string, error) {
return h.c.Test(ctx, h.resource, permissions)
}
// A RoleName is a name representing a collection of permissions.
type RoleName string
// Common role names.
const (
Owner RoleName = "roles/owner"
Editor RoleName = "roles/editor"
Viewer RoleName = "roles/viewer"
)
const (
// AllUsers is a special member that denotes all users, even unauthenticated ones.
AllUsers = "allUsers"
// AllAuthenticatedUsers is a special member that denotes all authenticated users.
AllAuthenticatedUsers = "allAuthenticatedUsers"
)
// A Policy is a list of Bindings representing roles
// granted to members.
//
// The zero Policy is a valid policy with no bindings.
type Policy struct {
// TODO(jba): when type aliases are available, put Policy into an internal package
// and provide an exported alias here.
// This field is exported for use by the Google Cloud Libraries only.
// It may become unexported in a future release.
InternalProto *pb.Policy
}
// Members returns the list of members with the supplied role.
// The return value should not be modified. Use Add and Remove
// to modify the members of a role.
func (p *Policy) Members(r RoleName) []string {
b := p.binding(r)
if b == nil {
return nil
}
return b.Members
}
// HasRole reports whether member has role r.
func (p *Policy) HasRole(member string, r RoleName) bool {
return memberIndex(member, p.binding(r)) >= 0
}
// Add adds member member to role r if it is not already present.
// A new binding is created if there is no binding for the role.
func (p *Policy) Add(member string, r RoleName) {
b := p.binding(r)
if b == nil {
if p.InternalProto == nil {
p.InternalProto = &pb.Policy{}
}
p.InternalProto.Bindings = append(p.InternalProto.Bindings, &pb.Binding{
Role: string(r),
Members: []string{member},
})
return
}
if memberIndex(member, b) < 0 {
b.Members = append(b.Members, member)
return
}
}
// Remove removes member from role r if it is present.
func (p *Policy) Remove(member string, r RoleName) {
bi := p.bindingIndex(r)
if bi < 0 {
return
}
bindings := p.InternalProto.Bindings
b := bindings[bi]
mi := memberIndex(member, b)
if mi < 0 {
return
}
// Order doesn't matter for bindings or members, so to remove, move the last item
// into the removed spot and shrink the slice.
if len(b.Members) == 1 {
// Remove binding.
last := len(bindings) - 1
bindings[bi] = bindings[last]
bindings[last] = nil
p.InternalProto.Bindings = bindings[:last]
return
}
// Remove member.
// TODO(jba): worry about multiple copies of m?
last := len(b.Members) - 1
b.Members[mi] = b.Members[last]
b.Members[last] = ""
b.Members = b.Members[:last]
}
// Roles returns the names of all the roles that appear in the Policy.
func (p *Policy) Roles() []RoleName {
if p.InternalProto == nil {
return nil
}
var rns []RoleName
for _, b := range p.InternalProto.Bindings {
rns = append(rns, RoleName(b.Role))
}
return rns
}
// binding returns the Binding for the suppied role, or nil if there isn't one.
func (p *Policy) binding(r RoleName) *pb.Binding {
i := p.bindingIndex(r)
if i < 0 {
return nil
}
return p.InternalProto.Bindings[i]
}
func (p *Policy) bindingIndex(r RoleName) int {
if p.InternalProto == nil {
return -1
}
for i, b := range p.InternalProto.Bindings {
if b.Role == string(r) {
return i
}
}
return -1
}
// memberIndex returns the index of m in b's Members, or -1 if not found.
func memberIndex(m string, b *pb.Binding) int {
if b == nil {
return -1
}
for i, mm := range b.Members {
if mm == m {
return i
}
}
return -1
}
// insertMetadata inserts metadata into the given context
func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context {
out, _ := metadata.FromOutgoingContext(ctx)
out = out.Copy()
for _, md := range mds {
for k, v := range md {
out[k] = append(out[k], v...)
}
}
return metadata.NewOutgoingContext(ctx, out)
}
================================================
FILE: vendor/cloud.google.com/go/internal/annotate.go
================================================
// Copyright 2017 Google LLC
//
// 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 internal
import (
"fmt"
"google.golang.org/api/googleapi"
"google.golang.org/grpc/status"
)
// Annotate prepends msg to the error message in err, attempting
// to preserve other information in err, like an error code.
//
// Annotate panics if err is nil.
//
// Annotate knows about these error types:
// - "google.golang.org/grpc/status".Status
// - "google.golang.org/api/googleapi".Error
// If the error is not one of these types, Annotate behaves
// like
// fmt.Errorf("%s: %v", msg, err)
func Annotate(err error, msg string) error {
if err == nil {
panic("Annotate called with nil")
}
if s, ok := status.FromError(err); ok {
p := s.Proto()
p.Message = msg + ": " + p.Message
return status.ErrorProto(p)
}
if g, ok := err.(*googleapi.Error); ok {
g.Message = msg + ": " + g.Message
return g
}
return fmt.Errorf("%s: %v", msg, err)
}
// Annotatef uses format and args to format a string, then calls Annotate.
func Annotatef(err error, format string, args ...interface{}) error {
return Annotate(err, fmt.Sprintf(format, args...))
}
================================================
FILE: vendor/cloud.google.com/go/internal/optional/optional.go
================================================
// Copyright 2016 Google LLC
//
// 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 optional provides versions of primitive types that can
// be nil. These are useful in methods that update some of an API object's
// fields.
package optional
import (
"fmt"
"strings"
"time"
)
type (
// Bool is either a bool or nil.
Bool interface{}
// String is either a string or nil.
String interface{}
// Int is either an int or nil.
Int interface{}
// Uint is either a uint or nil.
Uint interface{}
// Float64 is either a float64 or nil.
Float64 interface{}
// Duration is either a time.Duration or nil.
Duration interface{}
)
// ToBool returns its argument as a bool.
// It panics if its argument is nil or not a bool.
func ToBool(v Bool) bool {
x, ok := v.(bool)
if !ok {
doPanic("Bool", v)
}
return x
}
// ToString returns its argument as a string.
// It panics if its argument is nil or not a string.
func ToString(v String) string {
x, ok := v.(string)
if !ok {
doPanic("String", v)
}
return x
}
// ToInt returns its argument as an int.
// It panics if its argument is nil or not an int.
func ToInt(v Int) int {
x, ok := v.(int)
if !ok {
doPanic("Int", v)
}
return x
}
// ToUint returns its argument as a uint.
// It panics if its argument is nil or not a uint.
func ToUint(v Uint) uint {
x, ok := v.(uint)
if !ok {
doPanic("Uint", v)
}
return x
}
// ToFloat64 returns its argument as a float64.
// It panics if its argument is nil or not a float64.
func ToFloat64(v Float64) float64 {
x, ok := v.(float64)
if !ok {
doPanic("Float64", v)
}
return x
}
// ToDuration returns its argument as a time.Duration.
// It panics if its argument is nil or not a time.Duration.
func ToDuration(v Duration) time.Duration {
x, ok := v.(time.Duration)
if !ok {
doPanic("Duration", v)
}
return x
}
func doPanic(capType string, v interface{}) {
panic(fmt.Sprintf("optional.%s value should be %s, got %T", capType, strings.ToLower(capType), v))
}
================================================
FILE: vendor/cloud.google.com/go/internal/retry.go
================================================
// Copyright 2016 Google LLC
//
// 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 internal
import (
"context"
"time"
gax "github.com/googleapis/gax-go/v2"
)
// Retry calls the supplied function f repeatedly according to the provided
// backoff parameters. It returns when one of the following occurs:
// When f's first return value is true, Retry immediately returns with f's second
// return value.
// When the provided context is done, Retry returns with an error that
// includes both ctx.Error() and the last error returned by f.
func Retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err error)) error {
return retry(ctx, bo, f, gax.Sleep)
}
func retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err error),
sleep func(context.Context, time.Duration) error) error {
var lastErr error
for {
stop, err := f()
if stop {
return err
}
// Remember the last "real" error from f.
if err != nil && err != context.Canceled && err != context.DeadlineExceeded {
lastErr = err
}
p := bo.Pause()
if cerr := sleep(ctx, p); cerr != nil {
if lastErr != nil {
return Annotatef(lastErr, "retry failed with %v; last error", cerr)
}
return cerr
}
}
}
================================================
FILE: vendor/cloud.google.com/go/internal/trace/trace.go
================================================
// Copyright 2018 Google LLC
//
// 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 trace
import (
"context"
"fmt"
"go.opencensus.io/trace"
"google.golang.org/api/googleapi"
"google.golang.org/genproto/googleapis/rpc/code"
"google.golang.org/grpc/status"
)
// StartSpan adds a span to the trace with the given name.
func StartSpan(ctx context.Context, name string) context.Context {
ctx, _ = trace.StartSpan(ctx, name)
return ctx
}
// EndSpan ends a span with the given error.
func EndSpan(ctx context.Context, err error) {
span := trace.FromContext(ctx)
if err != nil {
span.SetStatus(toStatus(err))
}
span.End()
}
// toStatus interrogates an error and converts it to an appropriate
// OpenCensus status.
func toStatus(err error) trace.Status {
if err2, ok := err.(*googleapi.Error); ok {
return trace.Status{Code: httpStatusCodeToOCCode(err2.Code), Message: err2.Message}
} else if s, ok := status.FromError(err); ok {
return trace.Status{Code: int32(s.Code()), Message: s.Message()}
} else {
return trace.Status{Code: int32(code.Code_UNKNOWN), Message: err.Error()}
}
}
// TODO(deklerk): switch to using OpenCensus function when it becomes available.
// Reference: https://github.com/googleapis/googleapis/blob/26b634d2724ac5dd30ae0b0cbfb01f07f2e4050e/google/rpc/code.proto
func httpStatusCodeToOCCode(httpStatusCode int) int32 {
switch httpStatusCode {
case 200:
return int32(code.Code_OK)
case 499:
return int32(code.Code_CANCELLED)
case 500:
return int32(code.Code_UNKNOWN) // Could also be Code_INTERNAL, Code_DATA_LOSS
case 400:
return int32(code.Code_INVALID_ARGUMENT) // Could also be Code_OUT_OF_RANGE
case 504:
return int32(code.Code_DEADLINE_EXCEEDED)
case 404:
return int32(code.Code_NOT_FOUND)
case 409:
return int32(code.Code_ALREADY_EXISTS) // Could also be Code_ABORTED
case 403:
return int32(code.Code_PERMISSION_DENIED)
case 401:
return int32(code.Code_UNAUTHENTICATED)
case 429:
return int32(code.Code_RESOURCE_EXHAUSTED)
case 501:
return int32(code.Code_UNIMPLEMENTED)
case 503:
return int32(code.Code_UNAVAILABLE)
default:
return int32(code.Code_UNKNOWN)
}
}
// TODO: (odeke-em): perhaps just pass around spans due to the cost
// incurred from using trace.FromContext(ctx) yet we could avoid
// throwing away the work done by ctx, span := trace.StartSpan.
func TracePrintf(ctx context.Context, attrMap map[string]interface{}, format string, args ...interface{}) {
var attrs []trace.Attribute
for k, v := range attrMap {
var a trace.Attribute
switch v := v.(type) {
case string:
a = trace.StringAttribute(k, v)
case bool:
a = trace.BoolAttribute(k, v)
case int:
a = trace.Int64Attribute(k, int64(v))
case int64:
a = trace.Int64Attribute(k, v)
default:
a = trace.StringAttribute(k, fmt.Sprintf("%#v", v))
}
attrs = append(attrs, a)
}
trace.FromContext(ctx).Annotatef(attrs, format, args...)
}
================================================
FILE: vendor/cloud.google.com/go/internal/version/version.go
================================================
// Copyright 2016 Google LLC
//
// 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.
//go:generate ./update_version.sh
// Package version contains version information for Google Cloud Client
// Libraries for Go, as reported in request headers.
package version
import (
"runtime"
"strings"
"unicode"
)
// Repo is the current version of the client libraries in this
// repo. It should be a date in YYYYMMDD format.
const Repo = "20180226"
// Go returns the Go runtime version. The returned string
// has no whitespace.
func Go() string {
return goVersion
}
var goVersion = goVer(runtime.Version())
const develPrefix = "devel +"
func goVer(s string) string {
if strings.HasPrefix(s, develPrefix) {
s = s[len(develPrefix):]
if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
s = s[:p]
}
return s
}
if strings.HasPrefix(s, "go1") {
s = s[2:]
var prerelease string
if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
s, prerelease = s[:p], s[p:]
}
if strings.HasSuffix(s, ".") {
s += "0"
} else if strings.Count(s, ".") < 2 {
s += ".0"
}
if prerelease != "" {
s += "-" + prerelease
}
return s
}
return ""
}
func notSemverRune(r rune) bool {
return !strings.ContainsRune("0123456789.", r)
}
================================================
FILE: vendor/cloud.google.com/go/storage/acl.go
================================================
// Copyright 2014 Google LLC
//
// 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 storage
import (
"context"
"net/http"
"reflect"
"cloud.google.com/go/internal/trace"
"google.golang.org/api/googleapi"
raw "google.golang.org/api/storage/v1"
)
// ACLRole is the level of access to grant.
type ACLRole string
const (
RoleOwner ACLRole = "OWNER"
RoleReader ACLRole = "READER"
RoleWriter ACLRole = "WRITER"
)
// ACLEntity refers to a user or group.
// They are sometimes referred to as grantees.
//
// It could be in the form of:
// "user-<userId>", "user-<email>", "group-<groupId>", "group-<email>",
// "domain-<domain>" and "project-team-<projectId>".
//
// Or one of the predefined constants: AllUsers, AllAuthenticatedUsers.
type ACLEntity string
const (
AllUsers ACLEntity = "allUsers"
AllAuthenticatedUsers ACLEntity = "allAuthenticatedUsers"
)
// ACLRule represents a grant for a role to an entity (user, group or team) for a
// Google Cloud Storage object or bucket.
type ACLRule struct {
Entity ACLEntity
EntityID string
Role ACLRole
Domain string
Email string
ProjectTeam *ProjectTeam
}
// ProjectTeam is the project team associated with the entity, if any.
type ProjectTeam struct {
ProjectNumber string
Team string
}
// ACLHandle provides operations on an access control list for a Google Cloud Storage bucket or object.
type ACLHandle struct {
c *Client
bucket string
object string
isDefault bool
userProject string // for requester-pays buckets
}
// Delete permanently deletes the ACL entry for the given entity.
func (a *ACLHandle) Delete(ctx context.Context, entity ACLEntity) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.ACL.Delete")
defer func() { trace.EndSpan(ctx, err) }()
if a.object != "" {
return a.objectDelete(ctx, entity)
}
if a.isDefault {
return a.bucketDefaultDelete(ctx, entity)
}
return a.bucketDelete(ctx, entity)
}
// Set sets the role for the given entity.
func (a *ACLHandle) Set(ctx context.Context, entity ACLEntity, role ACLRole) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.ACL.Set")
defer func() { trace.EndSpan(ctx, err) }()
if a.object != "" {
return a.objectSet(ctx, entity, role, false)
}
if a.isDefault {
return a.objectSet(ctx, entity, role, true)
}
return a.bucketSet(ctx, entity, role)
}
// List retrieves ACL entries.
func (a *ACLHandle) List(ctx context.Context) (rules []ACLRule, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.ACL.List")
defer func() { trace.EndSpan(ctx, err) }()
if a.object != "" {
return a.objectList(ctx)
}
if a.isDefault {
return a.bucketDefaultList(ctx)
}
return a.bucketList(ctx)
}
func (a *ACLHandle) bucketDefaultList(ctx context.Context) ([]ACLRule, error) {
var acls *raw.ObjectAccessControls
var err error
err = runWithRetry(ctx, func() error {
req := a.c.raw.DefaultObjectAccessControls.List(a.bucket)
a.configureCall(ctx, req)
acls, err = req.Do()
return err
})
if err != nil {
return nil, err
}
return toObjectACLRules(acls.Items), nil
}
func (a *ACLHandle) bucketDefaultDelete(ctx context.Context, entity ACLEntity) error {
return runWithRetry(ctx, func() error {
req := a.c.raw.DefaultObjectAccessControls.Delete(a.bucket, string(entity))
a.configureCall(ctx, req)
return req.Do()
})
}
func (a *ACLHandle) bucketList(ctx context.Context) ([]ACLRule, error) {
var acls *raw.BucketAccessControls
var err error
err = runWithRetry(ctx, func() error {
req := a.c.raw.BucketAccessControls.List(a.bucket)
a.configureCall(ctx, req)
acls, err = req.Do()
return err
})
if err != nil {
return nil, err
}
return toBucketACLRules(acls.Items), nil
}
func (a *ACLHandle) bucketSet(ctx context.Context, entity ACLEntity, role ACLRole) error {
acl := &raw.BucketAccessControl{
Bucket: a.bucket,
Entity: string(entity),
Role: string(role),
}
err := runWithRetry(ctx, func() error {
req := a.c.raw.BucketAccessControls.Update(a.bucket, string(entity), acl)
a.configureCall(ctx, req)
_, err := req.Do()
return err
})
if err != nil {
return err
}
return nil
}
func (a *ACLHandle) bucketDelete(ctx context.Context, entity ACLEntity) error {
return runWithRetry(ctx, func() error {
req := a.c.raw.BucketAccessControls.Delete(a.bucket, string(entity))
a.configureCall(ctx, req)
return req.Do()
})
}
func (a *ACLHandle) objectList(ctx context.Context) ([]ACLRule, error) {
var acls *raw.ObjectAccessControls
var err error
err = runWithRetry(ctx, func() error {
req := a.c.raw.ObjectAccessControls.List(a.bucket, a.object)
a.configureCall(ctx, req)
acls, err = req.Do()
return err
})
if err != nil {
return nil, err
}
return toObjectACLRules(acls.Items), nil
}
func (a *ACLHandle) objectSet(ctx context.Context, entity ACLEntity, role ACLRole, isBucketDefault bool) error {
type setRequest interface {
Do(opts ...googleapi.CallOption) (*raw.ObjectAccessControl, error)
Header() http.Header
}
acl := &raw.ObjectAccessControl{
Bucket: a.bucket,
Entity: string(entity),
Role: string(role),
}
var req setRequest
if isBucketDefault {
req = a.c.raw.DefaultObjectAccessControls.Update(a.bucket, string(entity), acl)
} else {
req = a.c.raw.ObjectAccessControls.Update(a.bucket, a.object, string(entity), acl)
}
a.configureCall(ctx, req)
return runWithRetry(ctx, func() error {
_, err := req.Do()
return err
})
}
func (a *ACLHandle) objectDelete(ctx context.Context, entity ACLEntity) error {
return runWithRetry(ctx, func() error {
req := a.c.raw.ObjectAccessControls.Delete(a.bucket, a.object, string(entity))
a.configureCall(ctx, req)
return req.Do()
})
}
func (a *ACLHandle) configureCall(ctx context.Context, call interface{ Header() http.Header }) {
vc := reflect.ValueOf(call)
vc.MethodByName("Context").Call([]reflect.Value{reflect.ValueOf(ctx)})
if a.userProject != "" {
vc.MethodByName("UserProject").Call([]reflect.Value{reflect.ValueOf(a.userProject)})
}
setClientHeader(call.Header())
}
func toObjectACLRules(items []*raw.ObjectAccessControl) []ACLRule {
var rs []ACLRule
for _, item := range items {
rs = append(rs, toObjectACLRule(item))
}
return rs
}
func toBucketACLRules(items []*raw.BucketAccessControl) []ACLRule {
var rs []ACLRule
for _, item := range items {
rs = append(rs, toBucketACLRule(item))
}
return rs
}
func toObjectACLRule(a *raw.ObjectAccessControl) ACLRule {
return ACLRule{
Entity: ACLEntity(a.Entity),
EntityID: a.EntityId,
Role: ACLRole(a.Role),
Domain: a.Domain,
Email: a.Email,
ProjectTeam: toObjectProjectTeam(a.ProjectTeam),
}
}
func toBucketACLRule(a *raw.BucketAccessControl) ACLRule {
return ACLRule{
Entity: ACLEntity(a.Entity),
EntityID: a.EntityId,
Role: ACLRole(a.Role),
Domain: a.Domain,
Email: a.Email,
ProjectTeam: toBucketProjectTeam(a.ProjectTeam),
}
}
func toRawObjectACL(rules []ACLRule) []*raw.ObjectAccessControl {
if len(rules) == 0 {
return nil
}
r := make([]*raw.ObjectAccessControl, 0, len(rules))
for _, rule := range rules {
r = append(r, rule.toRawObjectAccessControl("")) // bucket name unnecessary
}
return r
}
func toRawBucketACL(rules []ACLRule) []*raw.BucketAccessControl {
if len(rules) == 0 {
return nil
}
r := make([]*raw.BucketAccessControl, 0, len(rules))
for _, rule := range rules {
r = append(r, rule.toRawBucketAccessControl("")) // bucket name unnecessary
}
return r
}
func (r ACLRule) toRawBucketAccessControl(bucket string) *raw.BucketAccessControl {
return &raw.BucketAccessControl{
Bucket: bucket,
Entity: string(r.Entity),
Role: string(r.Role),
// The other fields are not settable.
}
}
func (r ACLRule) toRawObjectAccessControl(bucket string) *raw.ObjectAccessControl {
return &raw.ObjectAccessControl{
Bucket: bucket,
Entity: string(r.Entity),
Role: string(r.Role),
// The other fields are not settable.
}
}
func toBucketProjectTeam(p *raw.BucketAccessControlProjectTeam) *ProjectTeam {
if p == nil {
return nil
}
return &ProjectTeam{
ProjectNumber: p.ProjectNumber,
Team: p.Team,
}
}
func toObjectProjectTeam(p *raw.ObjectAccessControlProjectTeam) *ProjectTeam {
if p == nil {
return nil
}
return &ProjectTeam{
ProjectNumber: p.ProjectNumber,
Team: p.Team,
}
}
================================================
FILE: vendor/cloud.google.com/go/storage/bucket.go
================================================
// Copyright 2014 Google LLC
//
// 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 storage
import (
"context"
"fmt"
"net/http"
"reflect"
"time"
"cloud.google.com/go/internal/optional"
"cloud.google.com/go/internal/trace"
"google.golang.org/api/googleapi"
"google.golang.org/api/iterator"
raw "google.golang.org/api/storage/v1"
)
// BucketHandle provides operations on a Google Cloud Storage bucket.
// Use Client.Bucket to get a handle.
type BucketHandle struct {
c *Client
name string
acl ACLHandle
defaultObjectACL ACLHandle
conds *BucketConditions
userProject string // project for Requester Pays buckets
}
// Bucket returns a BucketHandle, which provides operations on the named bucket.
// This call does not perform any network operations.
//
// The supplied name must contain only lowercase letters, numbers, dashes,
// underscores, and dots. The full specification for valid bucket names can be
// found at:
// https://cloud.google.com/storage/docs/bucket-naming
func (c *Client) Bucket(name string) *BucketHandle {
return &BucketHandle{
c: c,
name: name,
acl: ACLHandle{
c: c,
bucket: name,
},
defaultObjectACL: ACLHandle{
c: c,
bucket: name,
isDefault: true,
},
}
}
// Create creates the Bucket in the project.
// If attrs is nil the API defaults will be used.
func (b *BucketHandle) Create(ctx context.Context, projectID string, attrs *BucketAttrs) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.Create")
defer func() { trace.EndSpan(ctx, err) }()
var bkt *raw.Bucket
if attrs != nil {
bkt = attrs.toRawBucket()
} else {
bkt = &raw.Bucket{}
}
bkt.Name = b.name
// If there is lifecycle information but no location, explicitly set
// the location. This is a GCS quirk/bug.
if bkt.Location == "" && bkt.Lifecycle != nil {
bkt.Location = "US"
}
req := b.c.raw.Buckets.Insert(projectID, bkt)
setClientHeader(req.Header())
if attrs != nil && attrs.PredefinedACL != "" {
req.PredefinedAcl(attrs.PredefinedACL)
}
if attrs != nil && attrs.PredefinedDefaultObjectACL != "" {
req.PredefinedDefaultObjectAcl(attrs.PredefinedDefaultObjectACL)
}
return runWithRetry(ctx, func() error { _, err := req.Context(ctx).Do(); return err })
}
// Delete deletes the Bucket.
func (b *BucketHandle) Delete(ctx context.Context) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.Delete")
defer func() { trace.EndSpan(ctx, err) }()
req, err := b.newDeleteCall()
if err != nil {
return err
}
return runWithRetry(ctx, func() error { return req.Context(ctx).Do() })
}
func (b *BucketHandle) newDeleteCall() (*raw.BucketsDeleteCall, error) {
req := b.c.raw.Buckets.Delete(b.name)
setClientHeader(req.Header())
if err := applyBucketConds("BucketHandle.Delete", b.conds, req); err != nil {
return nil, err
}
if b.userProject != "" {
req.UserProject(b.userProject)
}
return req, nil
}
// ACL returns an ACLHandle, which provides access to the bucket's access control list.
// This controls who can list, create or overwrite the objects in a bucket.
// This call does not perform any network operations.
func (b *BucketHandle) ACL() *ACLHandle {
return &b.acl
}
// DefaultObjectACL returns an ACLHandle, which provides access to the bucket's default object ACLs.
// These ACLs are applied to newly created objects in this bucket that do not have a defined ACL.
// This call does not perform any network operations.
func (b *BucketHandle) DefaultObjectACL() *ACLHandle {
return &b.defaultObjectACL
}
// Object returns an ObjectHandle, which provides operations on the named object.
// This call does not perform any network operations.
//
// name must consist entirely of valid UTF-8-encoded runes. The full specification
// for valid object names can be found at:
// https://cloud.google.com/storage/docs/bucket-naming
func (b *BucketHandle) Object(name string) *ObjectHandle {
return &ObjectHandle{
c: b.c,
bucket: b.name,
object: name,
acl: ACLHandle{
c: b.c,
bucket: b.name,
object: name,
userProject: b.userProject,
},
gen: -1,
userProject: b.userProject,
}
}
// Attrs returns the metadata for the bucket.
func (b *BucketHandle) Attrs(ctx context.Context) (attrs *BucketAttrs, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.Attrs")
defer func() { trace.EndSpan(ctx, err) }()
req, err := b.newGetCall()
if err != nil {
return nil, err
}
var resp *raw.Bucket
err = runWithRetry(ctx, func() error {
resp, err = req.Context(ctx).Do()
return err
})
if e, ok := err.(*googleapi.Error); ok && e.Code == http.StatusNotFound {
return nil, ErrBucketNotExist
}
if err != nil {
return nil, err
}
return newBucket(resp)
}
func (b *BucketHandle) newGetCall() (*raw.BucketsGetCall, error) {
req := b.c.raw.Buckets.Get(b.name).Projection("full")
setClientHeader(req.Header())
if err := applyBucketConds("BucketHandle.Attrs", b.conds, req); err != nil {
return nil, err
}
if b.userProject != "" {
req.UserProject(b.userProject)
}
return req, nil
}
// Update updates a bucket's attributes.
func (b *BucketHandle) Update(ctx context.Context, uattrs BucketAttrsToUpdate) (attrs *BucketAttrs, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.Create")
defer func() { trace.EndSpan(ctx, err) }()
req, err := b.newPatchCall(&uattrs)
if err != nil {
return nil, err
}
if uattrs.PredefinedACL != "" {
req.PredefinedAcl(uattrs.PredefinedACL)
}
if uattrs.PredefinedDefaultObjectACL != "" {
req.PredefinedDefaultObjectAcl(uattrs.PredefinedDefaultObjectACL)
}
// TODO(jba): retry iff metagen is set?
rb, err := req.Context(ctx).Do()
if err != nil {
return nil, err
}
return newBucket(rb)
}
func (b *BucketHandle) newPatchCall(uattrs *BucketAttrsToUpdate) (*raw.BucketsPatchCall, error) {
rb := uattrs.toRawBucket()
req := b.c.raw.Buckets.Patch(b.name, rb).Projection("full")
setClientHeader(req.Header())
if err := applyBucketConds("BucketHandle.Update", b.conds, req); err != nil {
return nil, err
}
if b.userProject != "" {
req.UserProject(b.userProject)
}
return req, nil
}
// BucketAttrs represents the metadata for a Google Cloud Storage bucket.
// Read-only fields are ignored by BucketHandle.Create.
type BucketAttrs struct {
// Name is the name of the bucket.
// This field is read-only.
Name string
// ACL is the list of access control rules on the bucket.
ACL []ACLRule
// BucketPolicyOnly configures access checks to use only bucket-level IAM
// policies.
BucketPolicyOnly BucketPolicyOnly
// DefaultObjectACL is the list of access controls to
// apply to new objects when no object ACL is provided.
DefaultObjectACL []ACLRule
// DefaultEventBasedHold is the default value for event-based hold on
// newly created objects in this bucket. It defaults to false.
DefaultEventBasedHold bool
// If not empty, applies a predefined set of access controls. It should be set
// only when creating a bucket.
// It is always empty for BucketAttrs returned from the service.
// See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
// for valid values.
PredefinedACL string
// If not empty, applies a predefined set of default object access controls.
// It should be set only when creating a bucket.
// It is always empty for BucketAttrs returned from the service.
// See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
// for valid values.
PredefinedDefaultObjectACL string
// Location is the location of the bucket. It defaults to "US".
Location string
// MetaGeneration is the metadata generation of the bucket.
// This field is read-only.
MetaGeneration int64
// StorageClass is the default storage class of the bucket. This defines
// how objects in the bucket are stored and determines the SLA
// and the cost of storage. Typical values are "MULTI_REGIONAL",
// "REGIONAL", "NEARLINE", "COLDLINE", "STANDARD" and
// "DURABLE_REDUCED_AVAILABILITY". Defaults to "STANDARD", which
// is equivalent to "MULTI_REGIONAL" or "REGIONAL" depending on
// the bucket's location settings.
StorageClass string
// Created is the creation time of the bucket.
// This field is read-only.
Created time.Time
// VersioningEnabled reports whether this bucket has versioning enabled.
VersioningEnabled bool
// Labels are the bucket's labels.
Labels map[string]string
// RequesterPays reports whether the bucket is a Requester Pays bucket.
// Clients performing operations on Requester Pays buckets must provide
// a user project (see BucketHandle.UserProject), which will be billed
// for the operations.
RequesterPays bool
// Lifecycle is the lifecycle configuration for objects in the bucket.
Lifecycle Lifecycle
// Retention policy enforces a minimum retention time for all objects
// contained in the bucket. A RetentionPolicy of nil implies the bucket
// has no minimum data retention.
//
// This feature is in private alpha release. It is not currently available to
// most customers. It might be changed in backwards-incompatible ways and is not
// subject to any SLA or deprecation policy.
RetentionPolicy *RetentionPolicy
// The bucket's Cross-Origin Resource Sharing (CORS) configuration.
CORS []CORS
// The encryption configuration used by default for newly inserted objects.
Encryption *BucketEncryption
// The logging configuration.
Logging *BucketLogging
// The website configuration.
Website *BucketWebsite
// Etag is the HTTP/1.1 Entity tag for the bucket.
// This field is read-only.
Etag string
}
// BucketPolicyOnly configures access checks to use only bucket-level IAM
// policies.
type BucketPolicyOnly struct {
// Enabled specifies whether access checks use only bucket-level IAM
// policies. Enabled may be disabled until the locked time.
Enabled bool
// LockedTime specifies the deadline for changing Enabled from true to
// false.
LockedTime time.Time
}
// Lifecycle is the lifecycle configuration for objects in the bucket.
type Lifecycle struct {
Rules []LifecycleRule
}
// RetentionPolicy enforces a minimum retention time for all objects
// contained in the bucket.
//
// Any attempt to overwrite or delete objects younger than the retention
// period will result in an error. An unlocked retention policy can be
// modified or removed from the bucket via the Update method. A
// locked retention policy cannot be removed or shortened in duration
// for the lifetime of the bucket.
//
// This feature is in private alpha release. It is not currently available to
// most customers. It might be changed in backwards-incompatible ways and is not
// subject to any SLA or deprecation policy.
type RetentionPolicy struct {
// RetentionPeriod specifies the duration that objects need to be
// retained. Retention duration must be greater than zero and less than
// 100 years. Note that enforcement of retention periods less than a day
// is not guaranteed. Such periods should only be used for testing
// purposes.
RetentionPeriod time.Duration
// EffectiveTime is the time from which the policy was enforced and
// effective. This field is read-only.
EffectiveTime time.Time
// IsLocked describes whether the bucket is locked. Once locked, an
// object retention policy cannot be modified.
// This field is read-only.
IsLocked bool
}
const (
// RFC3339 date with only the date segment, used for CreatedBefore in LifecycleRule.
rfc3339Date = "2006-01-02"
// DeleteAction is a lifecycle action that deletes a live and/or archived
// objects. Takes precedence over SetStorageClass actions.
DeleteAction = "Delete"
// SetStorageClassAction changes the storage class of live and/or archived
// objects.
SetStorageClassAction = "SetStorageClass"
)
// LifecycleRule is a lifecycle configuration rule.
//
// When all the configured conditions are met by an object in the bucket, the
// configured action will automatically be taken on that object.
type LifecycleRule struct {
// Action is the action to take when all of the associated conditions are
// met.
Action LifecycleAction
// Condition is the set of conditions that must be met for the associated
// action to be taken.
Condition LifecycleCondition
}
// LifecycleAction is a lifecycle configuration action.
type LifecycleAction struct {
// Type is the type of action to take on matching objects.
//
// Acceptable values are "Delete" to delete matching objects and
// "SetStorageClass" to set the storage class defined in StorageClass on
// matching objects.
Type string
// StorageClass is the storage class to set on matching objects if the Action
// is "SetStorageClass".
StorageClass string
}
// Liveness specifies whether the object is live or not.
type Liveness int
const (
// LiveAndArchived includes both live and archived objects.
LiveAndArchived Liveness = iota
// Live specifies that the object is still live.
Live
// Archived specifies that the object is archived.
Archived
)
// LifecycleCondition is a set of conditions used to match objects and take an
// action automatically.
//
// All configured conditions must be met for the associated action to be taken.
type LifecycleCondition struct {
// AgeInDays is the age of the object in days.
AgeInDays int64
// CreatedBefore is the time the object was created.
//
// This condition is satisfied when an object is created before midnight of
// the specified date in UTC.
CreatedBefore time.Time
// Liveness specifies the object's liveness. Relevant only for versioned objects
Liveness Liveness
// MatchesStorageClasses is the condition matching the object's storage
// class.
//
// Values include "MULTI_REGIONAL", "REGIONAL", "NEARLINE", "COLDLINE",
// "STANDARD", and "DURABLE_REDUCED_AVAILABILITY".
MatchesStorageClasses []string
// NumNewerVersions is the condition matching objects with a number of newer versions.
//
// If the value is N, this condition is satisfied when there are at least N
// versions (including the live version) newer than this version of the
// object.
NumNewerVersions int64
}
// BucketLogging holds the bucket's logging configuration, which defines the
// destination bucket and optional name prefix for the current bucket's
// logs.
type BucketLogging struct {
// The destination bucket where the current bucket's logs
// should be placed.
LogBucket string
// A prefix for log object names.
LogObjectPrefix string
}
// BucketWebsite holds the bucket's website configuration, controlling how the
// service behaves when accessing bucket contents as a web site. See
// https://cloud.google.com/storage/docs/static-website for more information.
type BucketWebsite struct {
// If the requested object path is missing, the service will ensure the path has
// a trailing '/', append this suffix, and attempt to retrieve the resulting
// object. This allows the creation of index.html objects to represent directory
// pages.
MainPageSuffix string
// If the requested object path is missing, and any mainPageSuffix object is
// missing, if applicable, the service will return the named object from this
// bucket as the content for a 404 Not Found result.
NotFoundPage string
}
func newBucket(b *raw.Bucket) (*BucketAttrs, error) {
if b == nil {
return nil, nil
}
rp, err := toRetentionPolicy(b.RetentionPolicy)
if err != nil {
return nil, err
}
return &BucketAttrs{
Name: b.Name,
Location: b.Location,
MetaGeneration: b.Metageneration,
DefaultEventBasedHold: b.DefaultEventBasedHold,
StorageClass: b.StorageClass,
Created: convertTime(b.TimeCreated),
VersioningEnabled: b.Versioning != nil && b.Versioning.Enabled,
ACL: toBucketACLRules(b.Acl),
DefaultObjectACL: toObjectACLRules(b.DefaultObjectAcl),
Labels: b.Labels,
RequesterPays: b.Billing != nil && b.Billing.RequesterPays,
Lifecycle: toLifecycle(b.Lifecycle),
RetentionPolicy: rp,
CORS: toCORS(b.Cors),
Encryption: toBucketEncryption(b.Encryption),
Logging: toBucketLogging(b.Logging),
Website: toBucketWebsite(b.Website),
BucketPolicyOnly: toBucketPolicyOnly(b.IamConfiguration),
Etag: b.Etag,
}, nil
}
// toRawBucket copies the editable attribute from b to the raw library's Bucket type.
func (b *BucketAttrs) toRawBucket() *raw.Bucket {
// Copy label map.
var labels map[string]string
if len(b.Labels) > 0 {
labels = make(map[string]string, len(b.Labels))
for k, v := range b.Labels {
labels[k] = v
}
}
// Ignore VersioningEnabled if it is false. This is OK because
// we only call this method when creating a bucket, and by default
// new buckets have versioning off.
var v *raw.BucketVersioning
if b.VersioningEnabled {
v = &raw.BucketVersioning{Enabled: true}
}
var bb *raw.BucketBilling
if b.RequesterPays {
bb = &raw.BucketBilling{RequesterPays: true}
}
var bktIAM *raw.BucketIamConfiguration
if b.BucketPolicyOnly.Enabled {
bktIAM = &raw.BucketIamConfiguration{
BucketPolicyOnly: &raw.BucketIamConfigurationBucketPolicyOnly{
Enabled: true,
},
}
}
return &raw.Bucket{
Name: b.Name,
Location: b.Location,
StorageClass: b.StorageClass,
Acl: toRawBucketACL(b.ACL),
DefaultObjectAcl: toRawObjectACL(b.DefaultObjectACL),
Versioning: v,
Labels: labels,
Billing: bb,
Lifecycle: toRawLifecycle(b.Lifecycle),
RetentionPolicy: b.RetentionPolicy.toRawRetentionPolicy(),
Cors: toRawCORS(b.CORS),
Encryption: b.Encryption.toRawBucketEncryption(),
Logging: b.Logging.toRawBucketLogging(),
Website: b.Website.toRawBucketWebsite(),
IamConfiguration: bktIAM,
}
}
// CORS is the bucket's Cross-Origin Resource Sharing (CORS) configuration.
type CORS struct {
// MaxAge is the value to return in the Access-Control-Max-Age
// header used in preflight responses.
MaxAge time.Duration
// Methods is the list of HTTP methods on which to include CORS response
// headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list
// of methods, and means "any method".
Methods []string
// Origins is the list of Origins eligible to receive CORS response
// headers. Note: "*" is permitted in the list of origins, and means
// "any Origin".
Origins []string
// ResponseHeaders is the list of HTTP headers other than the simple
// response headers to give permission for the user-agent to share
// across domains.
ResponseHeaders []string
}
// BucketEncryption is a bucket's encryption configuration.
type BucketEncryption struct {
// A Cloud KMS key name, in the form
// projects/P/locations/L/keyRings/R/cryptoKeys/K, that will be used to encrypt
// objects inserted into this bucket, if no encryption method is specified.
// The key's location must be the same as the bucket's.
DefaultKMSKeyName string
}
// BucketAttrsToUpdate define the attributes to update during an Update call.
type BucketAttrsToUpdate struct {
// If set, updates whether the bucket uses versioning.
VersioningEnabled optional.Bool
// If set, updates whether the bucket is a Requester Pays bucket.
RequesterPays optional.Bool
// DefaultEventBasedHold is the default value for event-based hold on
// newly created objects in this bucket.
DefaultEventBasedHold optional.Bool
// BucketPolicyOnly configures access checks to use only bucket-level IAM
// policies.
BucketPolicyOnly *BucketPolicyOnly
// If set, updates the retention policy of the bucket. Using
// RetentionPolicy.RetentionPeriod = 0 will delete the existing policy.
//
// This feature is in private alpha release. It is not currently available to
// most customers. It might be changed in backwards-incompatible ways and is not
// subject to any SLA or deprecation policy.
RetentionPolicy *RetentionPolicy
// If set, replaces the CORS configuration with a new configuration.
// An empty (rather than nil) slice causes all CORS policies to be removed.
CORS []CORS
// If set, replaces the encryption configuration of the bucket. Using
// BucketEncryption.DefaultKMSKeyName = "" will delete the existing
// configuration.
Encryption *BucketEncryption
// If set, replaces the lifecycle configuration of the bucket.
Lifecycle *Lifecycle
// If set, replaces the logging configuration of the bucket.
Logging *BucketLogging
// If set, replaces the website configuration of the bucket.
Website *BucketWebsite
// If not empty, applies a predefined set of access controls.
// See https://cloud.google.com/storage/docs/json_api/v1/buckets/patch.
PredefinedACL string
// If not empty, applies a predefined set of default object access controls.
// See https://cloud.google.com/storage/docs/json_api/v1/buckets/patch.
PredefinedDefaultObjectACL string
setLabels map[string]string
deleteLabels map[string]bool
}
// SetLabel causes a label to be added or modified when ua is used
// in a call to Bucket.Update.
func (ua *BucketAttrsToUpdate) SetLabel(name, value string) {
if ua.setLabels == nil {
ua.setLabels = map[string]string{}
}
ua.setLabels[name] = value
}
// DeleteLabel causes a label to be deleted when ua is used in a
// call to Bucket.Update.
func (ua *BucketAttrsToUpdate) DeleteLabel(name string) {
if ua.deleteLabels == nil {
ua.deleteLabels = map[string]bool{}
}
ua.deleteLabels[name] = true
}
func (ua *BucketAttrsToUpdate) toRawBucket() *raw.Bucket {
rb := &raw.Bucket{}
if ua.CORS != nil {
rb.Cors = toRawCORS(ua.CORS)
rb.ForceSendFields = append(rb.ForceSendFields, "Cors")
}
if ua.DefaultEventBasedHold != nil {
rb.DefaultEventBasedHold = optional.ToBool(ua.DefaultEventBasedHold)
rb.ForceSendFields = append(rb.ForceSendFields, "DefaultEventBasedHold")
}
if ua.RetentionPolicy != nil {
if ua.RetentionPolicy.RetentionPeriod == 0 {
rb.NullFields = append(rb.NullFields, "RetentionPolicy")
rb.RetentionPolicy = nil
} else {
rb.RetentionPolicy = ua.RetentionPolicy.toRawRetentionPolicy()
}
}
if ua.VersioningEnabled != nil {
rb.Versioning = &raw.BucketVersioning{
Enabled: optional.ToBool(ua.VersioningEnabled),
ForceSendFields: []string{"Enabled"},
}
}
if ua.RequesterPays != nil {
rb.Billing = &raw.BucketBilling{
RequesterPays: optional.ToBool(ua.RequesterPays),
ForceSendFields: []string{"RequesterPays"},
}
}
if ua.BucketPolicyOnly != nil {
rb.IamConfiguration = &raw.BucketIamConfiguration{
BucketPolicyOnly: &raw.BucketIamConfigurationBucketPolicyOnly{
Enabled: ua.BucketPolicyOnly.Enabled,
},
}
}
if ua.Encryption != nil {
if ua.Encryption.DefaultKMSKeyName == "" {
rb.NullFields = append(rb.NullFields, "Encryption")
rb.Encryption = nil
} else {
rb.Encryption = ua.Encryption.toRawBucketEncryption()
}
}
if ua.Lifecycle != nil {
rb.Lifecycle = toRawLifecycle(*ua.Lifecycle)
}
if ua.Logging != nil {
if *ua.Logging == (BucketLogging{}) {
rb.NullFields = append(rb.NullFields, "Logging")
rb.Logging = nil
} else {
rb.Logging = ua.Logging.toRawBucketLogging()
}
}
if ua.Website != nil {
if *ua.Website == (BucketWebsite{}) {
rb.NullFields = append(rb.NullFields, "Website")
rb.Website = nil
} else {
rb.Website = ua.Website.toRawBucketWebsite()
}
}
if ua.PredefinedACL != "" {
// Clear ACL or the call will fail.
rb.Acl = nil
rb.ForceSendFields = append(rb.ForceSendFields, "Acl")
}
if ua.PredefinedDefaultObjectACL != "" {
// Clear ACLs or the call will fail.
rb.DefaultObjectAcl = nil
rb.ForceSendFields = append(rb.ForceSendFields, "DefaultObjectAcl")
}
if ua.setLabels != nil || ua.deleteLabels != nil {
rb.Labels = map[string]string{}
for k, v := range ua.setLabels {
rb.Labels[k] = v
}
if len(rb.Labels) == 0 && len(ua.deleteLabels) > 0 {
rb.ForceSendFields = append(rb.ForceSendFields, "Labels")
}
for l := range ua.deleteLabels {
rb.NullFields = append(rb.NullFields, "Labels."+l)
}
}
return rb
}
// If returns a new BucketHandle that applies a set of preconditions.
// Preconditions already set on the BucketHandle are ignored.
// Operations on the new handle will return an error if the preconditions are not
// satisfied. The only valid preconditions for buckets are MetagenerationMatch
// and MetagenerationNotMatch.
func (b *BucketHandle) If(conds BucketConditions) *BucketHandle {
b2 := *b
b2.conds = &conds
return &b2
}
// BucketConditions constrain bucket methods to act on specific metagenerations.
//
// The zero value is an empty set of constraints.
type BucketConditions struct {
// MetagenerationMatch specifies that the bucket must have the given
// metageneration for the operation to occur.
// If MetagenerationMatch is zero, it has no effect.
MetagenerationMatch int64
// MetagenerationNotMatch specifies that the bucket must not have the given
// metageneration for the operation to occur.
// If MetagenerationNotMatch is zero, it has no effect.
MetagenerationNotMatch int64
}
func (c *BucketConditions) validate(method string) error {
if *c == (BucketConditions{}) {
return fmt.Errorf("storage: %s: empty conditions", method)
}
if c.MetagenerationMatch != 0 && c.MetagenerationNotMatch != 0 {
return fmt.Errorf("storage: %s: multiple conditions specified for metageneration", method)
}
return nil
}
// UserProject returns a new BucketHandle that passes the project ID as the user
// project for all subsequent calls. Calls with a user project will be billed to that
// project rather than to the bucket's owning project.
//
// A user project is required for all operations on Requester Pays buckets.
func (b *BucketHandle) UserProject(projectID string) *BucketHandle {
b2 := *b
b2.userProject = projectID
b2.acl.userProject = projectID
b2.defaultObjectACL.userProject = projectID
return &b2
}
// LockRetentionPolicy locks a bucket's retention policy until a previously-configured
// RetentionPeriod past the EffectiveTime. Note that if RetentionPeriod is set to less
// than a day, the retention policy is treated as a development configuration and locking
// will have no effect. The BucketHandle must have a metageneration condition that
// matches the bucket's metageneration. See BucketHandle.If.
//
// This feature is in private alpha release. It is not currently available to
// most customers. It might be changed in backwards-incompatible ways and is not
// subject to any SLA or deprecation policy.
func (b *BucketHandle) LockRetentionPolicy(ctx context.Context) error {
var metageneration int64
if b.conds != nil {
metageneration = b.conds.MetagenerationMatch
}
req := b.c.raw.Buckets.LockRetentionPolicy(b.name, metageneration)
_, err := req.Context(ctx).Do()
return err
}
// applyBucketConds modifies the provided call using the conditions in conds.
// call is something that quacks like a *raw.WhateverCall.
func applyBucketConds(method string, conds *BucketConditions, call interface{}) error {
if conds == nil {
return nil
}
if err := conds.validate(method); err != nil {
return err
}
cval := reflect.ValueOf(call)
switch {
case conds.MetagenerationMatch != 0:
if !setConditionField(cval, "IfMetagenerationMatch", conds.MetagenerationMatch) {
return fmt.Errorf("storage: %s: ifMetagenerationMatch not supported", method)
}
case conds.MetagenerationNotMatch != 0:
if !setConditionField(cval, "IfMetagenerationNotMatch", conds.MetagenerationNotMatch) {
return fmt.Errorf("storage: %s: ifMetagenerationNotMatch not supported", method)
}
}
return nil
}
func (rp *RetentionPolicy) toRawRetentionPolicy() *raw.BucketRetentionPolicy {
if rp == nil {
return nil
}
return &raw.BucketRetentionPolicy{
RetentionPeriod: int64(rp.RetentionPeriod / time.Second),
}
}
func toRetentionPolicy(rp *raw.BucketRetentionPolicy) (*RetentionPolicy, error) {
if rp == nil {
return nil, nil
}
t, err := time.Parse(time.RFC3339, rp.EffectiveTime)
if err != nil {
return nil, err
}
return &RetentionPolicy{
RetentionPeriod: time.Duration(rp.RetentionPeriod) * time.Second,
EffectiveTime: t,
IsLocked: rp.IsLocked,
}, nil
}
func toRawCORS(c []CORS) []*raw.BucketCors {
var out []*raw.BucketCors
for _, v := range c {
out = append(out, &raw.BucketCors{
MaxAgeSeconds: int64(v.MaxAge / time.Second),
Method: v.Methods,
Origin: v.Origins,
ResponseHeader: v.ResponseHeaders,
})
}
return out
}
func toCORS(rc []*raw.BucketCors) []CORS {
var out []CORS
for _, v := range rc {
out = append(out, CORS{
MaxAge: time.Duration(v.MaxAgeSeconds) * time.Second,
Methods: v.Method,
Origins: v.Origin,
ResponseHeaders: v.ResponseHeader,
})
}
return out
}
func toRawLifecycle(l Lifecycle) *raw.BucketLifecycle {
var rl raw.BucketLifecycle
if len(l.Rules) == 0 {
return nil
}
for _, r := range l.Rules {
rr := &raw.BucketLifecycleRule{
Action: &raw.BucketLifecycleRuleAction{
Type: r.Action.Type,
StorageClass: r.Action.StorageClass,
},
Condition: &raw.BucketLifecycleRuleCondition{
Age: r.Condition.AgeInDays,
MatchesStorageClass: r.Condition.MatchesStorageClasses,
NumNewerVersions: r.Condition.NumNewerVersions,
},
}
switch r.Condition.Liveness {
case LiveAndArchived:
rr.Condition.IsLive = nil
case Live:
rr.Condition.IsLive = googleapi.Bool(true)
case Archived:
rr.Condition.IsLive = googleapi.Bool(false)
}
if !r.Condition.CreatedBefore.IsZero() {
rr.Condition.CreatedBefore = r.Condition.CreatedBefore.Format(rfc3339Date)
}
rl.Rule = append(rl.Rule, rr)
}
return &rl
}
func toLifecycle(rl *raw.BucketLifecycle) Lifecycle {
var l Lifecycle
if rl == nil {
return l
}
for _, rr := range rl.Rule {
r := LifecycleRule{
Action: LifecycleAction{
Type: rr.Action.Type,
StorageClass: rr.Action.StorageClass,
},
Condition: LifecycleCondition{
AgeInDays: rr.Condition.Age,
MatchesStorageClasses: rr.Condition.MatchesStorageClass,
NumNewerVersions: rr.Condition.NumNewerVersions,
},
}
switch {
case rr.Condition.IsLive == nil:
r.Condition.Liveness = LiveAndArchived
case *rr.Condition.IsLive == true:
r.Condition.Liveness = Live
case *rr.Condition.IsLive == false:
r.Condition.Liveness = Archived
}
if rr.Condition.CreatedBefore != "" {
r.Condition.CreatedBefore, _ = time.Parse(rfc3339Date, rr.Condition.CreatedBefore)
}
l.Rules = append(l.Rules, r)
}
return l
}
func (e *BucketEncryption) toRawBucketEncryption() *raw.BucketEncryption {
if e == nil {
return nil
}
return &raw.BucketEncryption{
DefaultKmsKeyName: e.DefaultKMSKeyName,
}
}
func toBucketEncryption(e *raw.BucketEncryption) *BucketEncryption {
if e == nil {
return nil
}
return &BucketEncryption{DefaultKMSKeyName: e.DefaultKmsKeyName}
}
func (b *BucketLogging) toRawBucketLogging() *raw.BucketLogging {
if b == nil {
return nil
}
return &raw.BucketLogging{
LogBucket: b.LogBucket,
LogObjectPrefix: b.LogObjectPrefix,
}
}
func toBucketLogging(b *raw.BucketLogging) *BucketLogging {
if b == nil {
return nil
}
return &BucketLogging{
LogBucket: b.LogBucket,
LogObjectPrefix: b.LogObjectPrefix,
}
}
func (w *BucketWebsite) toRawBucketWebsite() *raw.BucketWebsite {
if w == nil {
return nil
}
return &raw.BucketWebsite{
MainPageSuffix: w.MainPageSuffix,
NotFoundPage: w.NotFoundPage,
}
}
func toBucketWebsite(w *raw.BucketWebsite) *BucketWebsite {
if w == nil {
return nil
}
return &BucketWebsite{
MainPageSuffix: w.MainPageSuffix,
NotFoundPage: w.NotFoundPage,
}
}
func toBucketPolicyOnly(b *raw.BucketIamConfiguration) BucketPolicyOnly {
if b == nil || b.BucketPolicyOnly == nil || !b.BucketPolicyOnly.Enabled {
return BucketPolicyOnly{}
}
lt, err := time.Parse(time.RFC3339, b.BucketPolicyOnly.LockedTime)
if err != nil {
return BucketPolicyOnly{
Enabled: true,
}
}
return BucketPolicyOnly{
Enabled: true,
LockedTime: lt,
}
}
// Objects returns an iterator over the objects in the bucket that match the Query q.
// If q is nil, no filtering is done.
func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIterator {
it := &ObjectIterator{
ctx: ctx,
bucket: b,
}
it.pageInfo, it.nextFunc = iterator.NewPageInfo(
it.fetch,
func() int { return len(it.items) },
func() interface{} { b := it.items; it.items = nil; return b })
if q != nil {
it.query = *q
}
return it
}
// An ObjectIterator is an iterator over ObjectAttrs.
type ObjectIterator struct {
ctx context.Context
bucket *BucketHandle
query Query
pageInfo *iterator.PageInfo
nextFunc func() error
items []*ObjectAttrs
}
// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
func (it *ObjectIterator) PageInfo() *iterator.PageInfo { return it.pageInfo }
// Next returns the next result. Its second return value is iterator.Done if
// there are no more results. Once Next returns iterator.Done, all subsequent
// calls will return iterator.Done.
//
// If Query.Delimiter is non-empty, some of the ObjectAttrs returned by Next will
// have a non-empty Prefix field, and a zero value for all other fields. These
// represent prefixes.
func (it *ObjectIterator) Next() (*ObjectAttrs, error) {
if err := it.nextFunc(); err != nil {
return nil, err
}
item := it.items[0]
it.items = it.items[1:]
return item, nil
}
func (it *ObjectIterator) fetch(pageSize int, pageToken string) (string, error) {
req := it.bucket.c.raw.Objects.List(it.bucket.name)
setClientHeader(req.Header())
req.Projection("full")
req.Delimiter(it.query.Delimiter)
req.Prefix(it.query.Prefix)
req.Versions(it.query.Versions)
req.PageToken(pageToken)
if it.bucket.userProject != "" {
req.UserProject(it.bucket.userProject)
}
if pageSize > 0 {
req.MaxResults(int64(pageSize))
}
var resp *raw.Objects
var err error
err = runWithRetry(it.ctx, func() error {
resp, err = req.Context(it.ctx).Do()
return err
})
if err != nil {
if e, ok := err.(*googleapi.Error); ok && e.Code == http.StatusNotFound {
err = ErrBucketNotExist
}
return "", err
}
for _, item := range resp.Items {
it.items = append(it.items, newObject(item))
}
for _, prefix := range resp.Prefixes {
it.items = append(it.items, &ObjectAttrs{Prefix: prefix})
}
return resp.NextPageToken, nil
}
// Buckets returns an iterator over the buckets in the project. You may
// optionally set the iterator's Prefix field to restrict the list to buckets
// whose names begin with the prefix. By default, all buckets in the project
// are returned.
func (c *Client) Buckets(ctx context.Context, projectID string) *BucketIterator {
it := &BucketIterator{
ctx: ctx,
client: c,
projectID: projectID,
}
it.pageInfo, it.nextFunc = iterator.NewPageInfo(
it.fetch,
func() int { return len(it.buckets) },
func() interface{} { b := it.buckets; it.buckets = nil; return b })
return it
}
// A BucketIterator is an iterator over BucketAttrs.
type BucketIterator struct {
// Prefix restricts the iterator to buckets whose names begin with it.
Prefix string
ctx context.Context
client *Client
projectID string
buckets []*BucketAttrs
pageInfo *iterator.PageInfo
nextFunc func() error
}
// Next returns the next result. Its second return value is iterator.Done if
// there are no more results. Once Next returns iterator.Done, all subsequent
// calls will return iterator.Done.
func (it *BucketIterator) Next() (*BucketAttrs, error) {
if err := it.nextFunc(); err != nil {
return nil, err
}
b := it.buckets[0]
it.buckets = it.buckets[1:]
return b, nil
}
// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
func (it *BucketIterator) PageInfo() *iterator.PageInfo { return it.pageInfo }
func (it *BucketIterator) fetch(pageSize int, pageToken string) (token string, err error) {
req := it.client.raw.Buckets.List(it.projectID)
setClientHeader(req.Header())
req.Projection("full")
req.Prefix(it.Prefix)
req.PageToken(pageToken)
if pageSize > 0 {
req.MaxResults(int64(pageSize))
}
var resp *raw.Buckets
err = runWithRetry(it.ctx, func() error {
resp, err = req.Context(it.ctx).Do()
return err
})
if err != nil {
return "", err
}
for _, item := range resp.Items {
b, err := newBucket(item)
if err != nil {
return "", err
}
it.buckets = append(it.buckets, b)
}
return resp.NextPageToken, nil
}
================================================
FILE: vendor/cloud.google.com/go/storage/copy.go
================================================
// Copyright 2016 Google LLC
//
// 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 storage
import (
"context"
"errors"
"fmt"
"cloud.google.com/go/internal/trace"
raw "google.golang.org/api/storage/v1"
)
// CopierFrom creates a Copier that can copy src to dst.
// You can immediately call Run on the returned Copier, or
// you can configure it first.
//
// For Requester Pays buckets, the user project of dst is billed, unless it is empty,
// in which case the user project of src is billed.
func (dst *ObjectHandle) CopierFrom(src *ObjectHandle) *Copier {
return &Copier{dst: dst, src: src}
}
// A Copier copies a source object to a destination.
type Copier struct {
// ObjectAttrs are optional attributes to set on the destination object.
// Any attributes must be initialized before any calls on the Copier. Nil
// or zero-valued attributes are ignored.
ObjectAttrs
// RewriteToken can be set before calling Run to resume a copy
// operation. After Run returns a non-nil error, RewriteToken will
// have been updated to contain the value needed to resume the copy.
RewriteToken string
// ProgressFunc can be used to monitor the progress of a multi-RPC copy
// operation. If ProgressFunc is not nil and copying requires multiple
// calls to the underlying service (see
// https://cloud.google.com/storage/docs/json_api/v1/objects/rewrite), then
// ProgressFunc will be invoked after each call with the number of bytes of
// content copied so far and the total size in bytes of the source object.
//
// ProgressFunc is intended to make upload progress available to the
// application. For example, the implementation of ProgressFunc may update
// a progress bar in the application's UI, or log the result of
// float64(copiedBytes)/float64(totalBytes).
//
// ProgressFunc should return quickly without blocking.
ProgressFunc func(copiedBytes, totalBytes uint64)
// The Cloud KMS key, in the form projects/P/locations/L/keyRings/R/cryptoKeys/K,
// that will be used to encrypt the object. Overrides the object's KMSKeyName, if
// any.
//
// Providing both a DestinationKMSKeyName and a customer-supplied encryption key
// (via ObjectHandle.Key) on the destination object will result in an error when
// Run is called.
DestinationKMSKeyName string
dst, src *ObjectHandle
}
// Run performs the copy.
func (c *Copier) Run(ctx context.Context) (attrs *ObjectAttrs, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Copier.Run")
defer func() { trace.EndSpan(ctx, err) }()
if err := c.src.validate(); err != nil {
return nil, err
}
if err := c.dst.validate(); err != nil {
return nil, err
}
if c.DestinationKMSKeyName != "" && c.dst.encryptionKey != nil {
return nil, errors.New("storage: cannot use DestinationKMSKeyName with a customer-supplied encryption key")
}
// Convert destination attributes to raw form, omitting the bucket.
// If the bucket is included but name or content-type aren't, the service
// returns a 400 with "Required" as the only message. Omitting the bucket
// does not cause any problems.
rawObject := c.ObjectAttrs.toRawObject("")
for {
res, err := c.callRewrite(ctx, rawObject)
if err != nil {
return nil, err
}
if c.ProgressFunc != nil {
c.ProgressFunc(uint64(res.TotalBytesRewritten), uint64(res.ObjectSize))
}
if res.Done { // Finished successfully.
return newObject(res.Resource), nil
}
}
}
func (c *Copier) callRewrite(ctx context.Context, rawObj *raw.Object) (*raw.RewriteResponse, error) {
call := c.dst.c.raw.Objects.Rewrite(c.src.bucket, c.src.object, c.dst.bucket, c.dst.object, rawObj)
call.Context(ctx).Projection("full")
if c.RewriteToken != "" {
call.RewriteToken(c.RewriteToken)
}
if c.DestinationKMSKeyName != "" {
call.DestinationKmsKeyName(c.DestinationKMSKeyName)
}
if c.PredefinedACL != "" {
call.DestinationPredefinedAcl(c.PredefinedACL)
}
if err := applyConds("Copy destination", c.dst.gen, c.dst.conds, call); err != nil {
return nil, err
}
if c.dst.userProject != "" {
call.UserProject(c.dst.userProject)
} else if c.src.userProject != "" {
call.UserProject(c.src.userProject)
}
if err := applySourceConds(c.src.gen, c.src.conds, call); err != nil {
return nil, err
}
if err := setEncryptionHeaders(call.Header(), c.dst.encryptionKey, false); err != nil {
return nil, err
}
if err := setEncryptionHeaders(call.Header(), c.src.encryptionKey, true); err != nil {
return nil, err
}
var res *raw.RewriteResponse
var err error
setClientHeader(call.Header())
err = runWithRetry(ctx, func() error { res, err = call.Do(); return err })
if err != nil {
return nil, err
}
c.RewriteToken = res.RewriteToken
return res, nil
}
// ComposerFrom creates a Composer that can compose srcs into dst.
// You can immediately call Run on the returned Composer, or you can
// configure it first.
//
// The encryption key for the destination object will be used to decrypt all
// source objects and encrypt the destination object. It is an error
// to specify an encryption key for any of the source objects.
func (dst *ObjectHandle) ComposerFrom(srcs ...*ObjectHandle) *Composer {
return &Composer{dst: dst, srcs: srcs}
}
// A Composer composes source objects into a destination object.
//
// For Requester Pays buckets, the user project of dst is billed.
type Composer struct {
// ObjectAttrs are optional attributes to set on the destination object.
// Any attributes must be initialized before any calls on the Composer. Nil
// or zero-valued attributes are ignored.
ObjectAttrs
dst *ObjectHandle
srcs []*ObjectHandle
}
// Run performs the compose operation.
func (c *Composer) Run(ctx context.Context) (attrs *ObjectAttrs, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Composer.Run")
defer func() { trace.EndSpan(ctx, err) }()
if err := c.dst.validate(); err != nil {
return nil, err
}
if len(c.srcs) == 0 {
return nil, errors.New("storage: at least one source object must be specified")
}
req := &raw.ComposeRequest{}
// Compose requires a non-empty Destination, so we always set it,
// even if the caller-provided ObjectAttrs is the zero value.
req.Destination = c.ObjectAttrs.toRawObject(c.dst.bucket)
for _, src := range c.srcs {
if err := src.validate(); err != nil {
return nil, err
}
if src.bucket != c.dst.bucket {
return nil, fmt.Errorf("storage: all source objects must be in bucket %q, found %q", c.dst.bucket, src.bucket)
}
if src.encryptionKey != nil {
return nil, fmt.Errorf("storage: compose source %s.%s must not have encryption key", src.bucket, src.object)
}
srcObj := &raw.ComposeRequestSourceObjects{
Name: src.object,
}
if err := applyConds("ComposeFrom source", src.gen, src.conds, composeSourceObj{srcObj}); err != nil {
return nil, err
}
req.SourceObjects = append(req.SourceObjects, srcObj)
}
call := c.dst.c.raw.Objects.Compose(c.dst.bucket, c.dst.object, req).Context(ctx)
if err := applyConds("ComposeFrom destination", c.dst.gen, c.dst.conds, call); err != nil {
return nil, err
}
if c.dst.userProject != "" {
call.UserProject(c.dst.userProject)
}
if c.PredefinedACL != "" {
call.DestinationPredefinedAcl(c.PredefinedACL)
}
if err := setEncryptionHeaders(call.Header(), c.dst.encryptionKey, false); err != nil {
return nil, err
}
var obj *raw.Object
setClientHeader(call.Header())
err = runWithRetry(ctx, func() error { obj, err = call.Do(); return err })
if err != nil {
return nil, err
}
return newObject(obj), nil
}
================================================
FILE: vendor/cloud.google.com/go/storage/doc.go
================================================
// Copyright 2016 Google LLC
//
// 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 storage provides an easy way to work with Google Cloud Storage.
Google Cloud Storage stores data in named objects, which are grouped into buckets.
More information about Google Cloud Storage is available at
https://cloud.google.com/storage/docs.
See https://godoc.org/cloud.google.com/go for authentication, timeouts,
connection pooling and similar aspects of this package.
All of the methods of this package use exponential backoff to retry calls that fail
with certain errors, as described in
https://cloud.google.com/storage/docs/exponential-backoff. Retrying continues
indefinitely unless the controlling context is canceled or the client is closed. See
context.WithTimeout and context.WithCancel.
Creating a Client
To start working with this package, create a client:
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
// TODO: Handle error.
}
The client will use your default application credentials.
If you only wish to access public data, you can create
an unauthenticated client with
client, err := storage.NewClient(ctx, option.WithoutAuthentication())
Buckets
A Google Cloud Storage bucket is a collection of objects. To work with a
bucket, make a bucket handle:
bkt := client.Bucket(bucketName)
A handle is a reference to a bucket. You can have a handle even if the
bucket doesn't exist yet. To create a bucket in Google Cloud Storage,
call Create on the handle:
if err := bkt.Create(ctx, projectID, nil); err != nil {
// TODO: Handle error.
}
Note that although buckets are associated with projects, bucket names are
global across all projects.
Each bucket has associated metadata, represented in this package by
BucketAttrs. The third argument to BucketHandle.Create allows you to set
the initial BucketAttrs of a bucket. To retrieve a bucket's attributes, use
Attrs:
attrs, err := bkt.Attrs(ctx)
if err != nil {
// TODO: Handle error.
}
fmt.Printf("bucket %s, created at %s, is located in %s with storage class %s\n",
attrs.Name, attrs.Created, attrs.Location, attrs.StorageClass)
Objects
An object holds arbitrary data as a sequence of bytes, like a file. You
refer to objects using a handle, just as with buckets, but unlike buckets
you don't explicitly create an object. Instead, the first time you write
to an object it will be created. You can use the standard Go io.Reader
and io.Writer interfaces to read and write object data:
obj := bkt.Object("data")
// Write something to obj.
// w implements io.Writer.
w := obj.NewWriter(ctx)
// Write some text to obj. This will either create the object or overwrite whatever is there already.
if _, err := fmt.Fprintf(w, "This object contains text.\n"); err != nil {
// TODO: Handle error.
}
// Close, just like writing a file.
if err := w.Close(); err != nil {
// TODO: Handle error.
}
// Read it back.
r, err := obj.NewReader(ctx)
if err != nil {
// TODO: Handle error.
}
defer r.Close()
if _, err := io.Copy(os.Stdout, r); err != nil {
// TODO: Handle error.
}
// Prints "This object contains text."
Objects also have attributes, which you can fetch with Attrs:
objAttrs, err := obj.Attrs(ctx)
if err != nil {
// TODO: Handle error.
}
fmt.Printf("object %s has size %d and can be read using %s\n",
objAttrs.Name, objAttrs.Size, objAttrs.MediaLink)
ACLs
Both objects and buckets have ACLs (Access Control Lists). An ACL is a list of
ACLRules, each of which specifies the role of a user, group or project. ACLs
are suitable for fine-grained control, but you may prefer using IAM to control
access at the project level (see
https://cloud.google.com/storage/docs/access-control/iam).
To list the ACLs of a bucket or object, obtain an ACLHandle and call its List method:
acls, err := obj.ACL().List(ctx)
if err != nil {
// TODO: Handle error.
}
for _, rule := range acls {
fmt.Printf("%s has role %s\n", rule.Entity, rule.Role)
}
You can also set and delete ACLs.
Conditions
Every object has a generation and a metageneration. The generation changes
whenever the content changes, and the metageneration changes whenever the
metadata changes. Conditions let you check these values before an operation;
the operation only executes if the conditions match. You can use conditions to
prevent race conditions in read-modify-write operations.
For example, say you've read an object's metadata into objAttrs. Now
you want to write to that object, but only if its contents haven't changed
since you read it. Here is how to express that:
w = obj.If(storage.Conditions{GenerationMatch: objAttrs.Generation}).NewWriter(ctx)
// Proceed with writing as above.
Signed URLs
You can obtain a URL that lets anyone read or write an object for a limited time.
You don't need to create a client to do this. See the documentation of
SignedURL for details.
url, err := storage.SignedURL(bucketName, "shared-object", opts)
if err != nil {
// TODO: Handle error.
}
fmt.Println(url)
Errors
Errors returned by this client are often of the type [`googleapi.Error`](https://godoc.org/google.golang.org/api/googleapi#Error).
These errors can be introspected for more information by type asserting to the richer `googleapi.Error` type. For example:
if e, ok := err.(*googleapi.Error); ok {
if e.Code == 409 { ... }
}
*/
package storage // import "cloud.google.com/go/storage"
================================================
FILE: vendor/cloud.google.com/go/storage/go110.go
================================================
// Copyright 2017 Google LLC
//
// 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.
// +build go1.10
package storage
import "google.golang.org/api/googleapi"
func shouldRetry(err error) bool {
switch e := err.(type) {
case *googleapi.Error:
// Retry on 429 and 5xx, according to
// https://cloud.google.com/storage/docs/exponential-backoff.
return e.Code == 429 || (e.Code >= 500 && e.Code < 600)
case interface{ Temporary() bool }:
return e.Temporary()
default:
return false
}
}
================================================
FILE: vendor/cloud.google.com/go/storage/iam.go
================================================
// Copyright 2017 Google LLC
//
// 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 storage
import (
"context"
"cloud.google.com/go/iam"
"cloud.google.com/go/internal/trace"
raw "google.golang.org/api/storage/v1"
iampb "google.golang.org/genproto/googleapis/iam/v1"
)
// IAM provides access to IAM access control for the bucket.
func (b *BucketHandle) IAM() *iam.Handle {
return iam.InternalNewHandleClient(&iamClient{
raw: b.c.raw,
userProject: b.userProject,
}, b.name)
}
// iamClient implements the iam.client interface.
type iamClient struct {
raw *raw.Service
userProject string
}
func (c *iamClient) Get(ctx context.Context, resource string) (p *iampb.Policy, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.IAM.Get")
defer func() { trace.EndSpan(ctx, err) }()
call := c.raw.Buckets.GetIamPolicy(resource)
setClientHeader(call.Header())
if c.userProject != "" {
call.UserProject(c.userProject)
}
var rp *raw.Policy
err = runWithRetry(ctx, func() error {
rp, err = call.Context(ctx).Do()
return err
})
if err != nil {
return nil, err
}
return iamFromStoragePolicy(rp), nil
}
func (c *iamClient) Set(ctx context.Context, resource string, p *iampb.Policy) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.IAM.Set")
defer func() { trace.EndSpan(ctx, err) }()
rp := iamToStoragePolicy(p)
call := c.raw.Buckets.SetIamPolicy(resource, rp)
setClientHeader(call.Header())
if c.userProject != "" {
call.UserProject(c.userProject)
}
return runWithRetry(ctx, func() error {
_, err := call.Context(ctx).Do()
return err
})
}
func (c *iamClient) Test(ctx context.Context, resource string, perms []string) (permissions []string, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.IAM.Test")
defer func() { trace.EndSpan(ctx, err) }()
call := c.raw.Buckets.TestIamPermissions(resource, perms)
setClientHeader(call.Header())
if c.userProject != "" {
call.UserProject(c.userProject)
}
var res *raw.TestIamPermissionsResponse
err = runWithRetry(ctx, func() error {
res, err = call.Context(ctx).Do()
return err
})
if err != nil {
return nil, err
}
return res.Permissions, nil
}
func iamToStoragePolicy(ip *iampb.Policy) *raw.Policy {
return &raw.Policy{
Bindings: iamToStorageBindings(ip.Bindings),
Etag: string(ip.Etag),
}
}
func iamToStorageBindings(ibs []*iampb.Binding) []*raw.PolicyBindings {
var rbs []*raw.PolicyBindings
for _, ib := range ibs {
rbs = append(rbs, &raw.PolicyBindings{
Role: ib.Role,
Members: ib.Members,
})
}
return rbs
}
func iamFromStoragePolicy(rp *raw.Policy) *iampb.Policy {
return &iampb.Policy{
Bindings: iamFromStorageBindings(rp.Bindings),
Etag: []byte(rp.Etag),
}
}
func iamFromStorageBindings(rbs []*raw.PolicyBindings) []*iampb.Binding {
var ibs []*iampb.Binding
for _, rb := range rbs {
ibs = append(ibs, &iampb.Binding{
Role: rb.Role,
Members: rb.Members,
})
}
return ibs
}
================================================
FILE: vendor/cloud.google.com/go/storage/invoke.go
================================================
// Copyright 2014 Google LLC
//
// 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 storage
import (
"context"
"cloud.google.com/go/internal"
gax "github.com/googleapis/gax-go/v2"
)
// runWithRetry calls the function until it returns nil or a non-retryable error, or
// the context is done.
func runWithRetry(ctx context.Context, call func() error) error {
return internal.Retry(ctx, gax.Backoff{}, func() (stop bool, err error) {
err = call()
if err == nil {
return true, nil
}
if shouldRetry(err) {
return false, nil
}
return true, err
})
}
================================================
FILE: vendor/cloud.google.com/go/storage/not_go110.go
================================================
// Copyright 2017 Google LLC
//
// 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.
// +build !go1.10
package storage
import (
"net/url"
"strings"
"google.golang.org/api/googleapi"
)
func shouldRetry(err error) bool {
switch e := err.(type) {
case *googleapi.Error:
// Retry on 429 and 5xx, according to
// https://cloud.google.com/storage/docs/exponential-backoff.
return e.Code == 429 || (e.Code >= 500 && e.Code < 600)
case *url.Error:
// Retry on REFUSED_STREAM.
// Unfortunately the error type is unexported, so we resort to string
// matching.
return strings.Contains(e.Error(), "REFUSED_STREAM")
case interface{ Temporary() bool }:
return e.Temporary()
default:
return false
}
}
================================================
FILE: vendor/cloud.google.com/go/storage/notifications.go
================================================
// Copyright 2017 Google LLC
//
// 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 storage
import (
"context"
"errors"
"fmt"
"regexp"
"cloud.google.com/go/internal/trace"
raw "google.golang.org/api/storage/v1"
)
// A Notification describes how to send Cloud PubSub messages when certain
// events occur in a bucket.
type Notification struct {
//The ID of the notification.
ID string
// The ID of the topic to which this subscription publishes.
TopicID string
// The ID of the project to which the topic belongs.
TopicProjectID string
// Only send notifications about listed event types. If empty, send notifications
// for all event types.
// See https://cloud.google.com/storage/docs/pubsub-notifications#events.
EventTypes []string
// If present, only apply this notification configuration to object names that
// begin with this prefix.
ObjectNamePrefix string
// An optional list of additional attributes to attach to each Cloud PubSub
// message published for this notification subscription.
CustomAttributes map[string]string
// The contents of the message payload.
// See https://cloud.google.com/storage/docs/pubsub-notifications#payload.
PayloadFormat string
}
// Values for Notification.PayloadFormat.
const (
// Send no payload with notification messages.
NoPayload = "NONE"
// Send object metadata as JSON with notification messages.
JSONPayload = "JSON_API_V1"
)
// Values for Notification.EventTypes.
const (
// Event that occurs when an object is successfully created.
ObjectFinalizeEvent = "OBJECT_FINALIZE"
// Event that occurs when the metadata of an existing object changes.
ObjectMetadataUpdateEvent = "OBJECT_METADATA_UPDATE"
// Event that occurs when an object is permanently deleted.
ObjectDeleteEvent = "OBJECT_DELETE"
// Event that occurs when the live version of an object becomes an
// archived version.
ObjectArchiveEvent = "OBJECT_ARCHIVE"
)
func toNotification(rn *raw.Notification) *Notification {
n := &Notification{
ID: rn.Id,
EventTypes: rn.EventTypes,
ObjectNamePrefix: rn.ObjectNamePrefix,
CustomAttributes: rn.CustomAttributes,
PayloadFormat: rn.PayloadFormat,
}
n.TopicProjectID, n.TopicID = parseNotificationTopic(rn.Topic)
return n
}
var topicRE = regexp.MustCompile("^//pubsub.googleapis.com/projects/([^/]+)/topics/([^/]+)")
// parseNotificationTopic extracts the project and topic IDs from from the full
// resource name returned by the service. If the name is malformed, it returns
// "?" for both IDs.
func parseNotificationTopic(nt string) (projectID, topicID string) {
matches := topicRE.FindStringSubmatch(nt)
if matches == nil {
return "?", "?"
}
return matches[1], matches[2]
}
func toRawNotification(n *Notification) *raw.Notification {
return &raw.Notification{
Id: n.ID,
Topic: fmt.Sprintf("//pubsub.googleapis.com/projects/%s/topics/%s",
n.TopicProjectID, n.TopicID),
EventTypes: n.EventTypes,
ObjectNamePrefix: n.ObjectNamePrefix,
CustomAttributes: n.CustomAttributes,
PayloadFormat: string(n.PayloadFormat),
}
}
// AddNotification adds a notification to b. You must set n's TopicProjectID, TopicID
// and PayloadFormat, and must not set its ID. The other fields are all optional. The
// returned Notification's ID can be used to refer to it.
func (b *BucketHandle) AddNotification(ctx context.Context, n *Notification) (ret *Notification, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.AddNotification")
defer func() { trace.EndSpan(ctx, err) }()
if n.ID != "" {
return nil, errors.New("storage: AddNotification: ID must not be set")
}
if n.TopicProjectID == "" {
return nil, errors.New("storage: AddNotification: missing TopicProjectID")
}
if n.TopicID == "" {
return nil, errors.New("storage: AddNotification: missing TopicID")
}
call := b.c.raw.Notifications.Insert(b.name, toRawNotification(n))
setClientHeader(call.Header())
if b.userProject != "" {
call.UserProject(b.userProject)
}
rn, err := call.Context(ctx).Do()
if err != nil {
return nil, err
}
return toNotification(rn), nil
}
// Notifications returns all the Notifications configured for this bucket, as a map
// indexed by notification ID.
func (b *BucketHandle) Notifications(ctx context.Context) (n map[string]*Notification, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.Notifications")
defer func() { trace.EndSpan(ctx, err) }()
call := b.c.raw.Notifications.List(b.name)
setClientHeader(call.Header())
if b.userProject != "" {
call.UserProject(b.userProject)
}
var res *raw.Notifications
err = runWithRetry(ctx, func() error {
res, err = call.Context(ctx).Do()
return err
})
if err != nil {
return nil, err
}
return notificationsToMap(res.Items), nil
}
func notificationsToMap(rns []*raw.Notification) map[string]*Notification {
m := map[string]*Notification{}
for _, rn := range rns {
m[rn.Id] = toNotification(rn)
}
return m
}
// DeleteNotification deletes the notification with the given ID.
func (b *BucketHandle) DeleteNotification(ctx context.Context, id string) (err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Bucket.DeleteNotification")
defer func() { trace.EndSpan(ctx, err) }()
call := b.c.raw.Notifications.Delete(b.name, id)
setClientHeader(call.Header())
if b.userProject != "" {
call.UserProject(b.userProject)
}
return call.Context(ctx).Do()
}
================================================
FILE: vendor/cloud.google.com/go/storage/reader.go
================================================
// Copyright 2016 Google LLC
//
// 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 storage
import (
"context"
"errors"
"fmt"
"hash/crc32"
"io"
"io/ioutil"
"net/http"
"net/url"
"reflect"
"strconv"
"strings"
"time"
"cloud.google.com/go/internal/trace"
"google.golang.org/api/googleapi"
)
var crc32cTable = crc32.MakeTable(crc32.Castagnoli)
// ReaderObjectAttrs are attributes about the object being read. These are populated
// during the New call. This struct only holds a subset of object attributes: to
// get the full set of attributes, use ObjectHandle.Attrs.
//
// Each field is read-only.
type ReaderObjectAttrs struct {
// Size is the length of the object's content.
Size int64
// ContentType is the MIME type of the object's content.
ContentType string
// ContentEncoding is the encoding of the object's content.
ContentEncoding string
// CacheControl specifies whether and for how long browser and Internet
// caches are allowed to cache your objects.
CacheControl string
// LastModified is the time that the object was last modified.
LastModified time.Time
// Generation is the generation number of the object's content.
Generation int64
// Metageneration is the version of the metadata for this object at
// this generation. This field is used for preconditions and for
// detecting changes in metadata. A metageneration number is only
// meaningful in the context of a particular generation of a
// particular object.
Metageneration int64
}
// NewReader creates a new Reader to read the contents of the
// object.
// ErrObjectNotExist will be returned if the object is not found.
//
// The caller must call Close on the returned Reader when done reading.
func (o *ObjectHandle) NewReader(ctx context.Context) (*Reader, error) {
return o.NewRangeReader(ctx, 0, -1)
}
// NewRangeReader reads part of an object, reading at most length bytes
// starting at the given offset. If length is negative, the object is read
// until the end.
func (o *ObjectHandle) NewRangeReader(ctx context.Context, offset, length int64) (r *Reader, err error) {
ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.Object.NewRangeReader")
defer func() { trace.EndSpan(ctx, err) }()
if err := o.validate(); err != nil {
return nil, err
}
if offset < 0 {
return nil, fmt.Errorf("storage: invalid offset %d < 0", offset)
}
if o.conds != nil {
if err := o.conds.validate("NewRangeReader"); err != nil {
return nil, err
}
}
u := &url.URL{
Scheme: "https",
Host: "storage.googleapis.com",
Path: fmt.Sprintf("/%s/%s", o.bucket, o.object),
}
verb := "GET"
if length == 0 {
verb = "HEAD"
}
req, err := http.NewRequest(verb, u.String(), nil)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if o.userProject != "" {
req.Header.Set("X-Goog-User-Project", o.userProject)
}
if o.readCompressed {
req.Header.Set("Accept-Encoding", "gzip")
}
if err := setEncryptionHeaders(req.Header, o.encryptionKey, false); err != nil {
return nil, err
}
gen := o.gen
// Define a function that initiates a Read with offset and length, assuming we
// have already read seen bytes.
reopen := func(seen int64) (*http.Response, error) {
start := offset + seen
if length < 0 && start > 0 {
req.Header.Set("Range", fmt.Sprintf("bytes=%d-", start))
} else if length > 0 {
// The end character isn't affected by how many bytes we've seen.
req.Header.Set("Range", fmt.Sprintf("bytes=%d-%d", start, offset+length-1))
}
// We wait to assign conditions here because the generation number can change in between reopen() runs.
req.URL.RawQuery = conditionsQuery(gen, o.conds)
var res *http.Response
err = runWithRetry(ctx, func() error {
res, err = o.c.hc.Do(req)
if err != nil {
return err
}
if res.StatusCode == http.StatusNotFound {
res.Body.Close()
return ErrObjectNotExist
}
if res.StatusCode < 200 || res.StatusCode > 299 {
body, _ := ioutil.ReadAll(res.Body)
res.Body.Close()
return &googleapi.Error{
Code: res.StatusCode,
Header: res.Header,
Body: string(body),
}
}
if start > 0 && length != 0 && res.StatusCode != http.StatusPartialContent {
res.Body.Close()
return errors.New("storage: partial request not satisfied")
}
// If a generation hasn't been specified, and this is the first response we get, let's record the
// generation. In future requests we'll use this generation as a precondition to avoid data races.
if gen < 0 && res.Header.Get("X-Goog-Generation") != "" {
gen64, err := strconv.ParseInt(res.Header.Get("X-Goog-Generation"), 10, 64)
if err != nil {
return err
}
gen = gen64
}
return nil
})
if err != nil {
return nil, err
}
return res, nil
}
res, err := reopen(0)
if err != nil {
return nil, err
}
var (
size int64 // total size of object, even if a range was requested.
checkCRC bool
crc uint32
)
if res.StatusCode == http.StatusPartialContent {
cr := strings.TrimSpace(res.Header.Get("Content-Range"))
if !strings.HasPrefix(cr, "bytes ") || !strings.Contains(cr, "/") {
return nil, fmt.Errorf("storage: invalid Content-Range %q", cr)
}
size, err = strconv.ParseInt(cr[strings.LastIndex(cr, "/")+1:], 10, 64)
if err != nil {
return nil, fmt.Errorf("storage: invalid Content-Range %q", cr)
}
} else {
size = res.ContentLength
// Check the CRC iff all of the following hold:
// - We asked for content (length != 0).
// - We got all the content (status != PartialContent).
// - The server sent a CRC header.
// - The Go http stack did not uncompress the file.
// - We were not served compressed data that was uncompressed on download.
// The problem with the last two cases is that the CRC will not match -- GCS
// computes it on the compressed contents, but we compute it on the
// uncompressed contents.
if length != 0 && !res.Uncompressed && !uncompressedByServer(res) {
crc, checkCRC = parseCRC32c(res)
}
}
remain := res.ContentLength
body := res.Body
if length == 0 {
remain = 0
body.Close()
body = emptyBody
}
var metaGen int64
if res.Header.Get("X-Goog-Generation") != "" {
metaGen, err = strconv.ParseInt(res.Header.Get("X-Goog-Metageneration"), 10, 64)
if err != nil {
return nil, err
}
}
var lm time.Time
if res.Header.Get("Last-Modified") != "" {
lm, err = http.ParseTime(res.Header.Get("Last-Modified"))
if err != nil {
return nil, err
}
}
attrs := ReaderObjectAttrs{
Size: size,
ContentType: res.Header.Get("Content-Type"),
ContentEncoding: res.Header.Get("Content-Encoding"),
CacheControl: res.Header.Get("Cache-Control"),
LastModified: lm,
Generation: gen,
Metageneration: metaGen,
}
return &Reader{
Attrs: attrs,
body: body,
size: size,
remain: remain,
wantCRC: crc,
checkCRC: checkCRC,
reopen: reopen,
}, nil
}
func uncompressedByServer(res *http.Response) bool {
// If the data is stored as gzip but is not encoded as gzip, then it
// was uncompressed by the server.
return res.Header.Get("X-Goog-Stored-Content-Encoding") == "gzip" &&
res.Header.Get("Content-Encoding") != "gzip"
}
func parseCRC32c(res *http.Response) (uint32, bool) {
const prefix = "crc32c="
for _, spec := range res.Header["X-Goog-Hash"] {
if strings.HasPrefix(spec, prefix) {
c, err := decodeUint32(spec[len(prefix):])
if err == nil {
return c, true
}
}
}
return 0, false
}
var emptyBody = ioutil.NopCloser(strings.NewReader(""))
// Reader reads a Cloud Storage object.
// It implements io.Reader.
//
// Typically, a Reader computes the CRC of the downloaded content and compares it to
// the stored CRC, returning an error from Read if there is a mismatch. This integrity check
// is skipped if transcoding occurs. See https://cloud.google.com/storage/docs/transcoding.
type Reader struct {
Attrs ReaderObjectAttrs
body io.ReadCloser
seen, remain, size int64
checkCRC bool // should we check the CRC?
wantCRC uint32 // the CRC32c value the server sent in the header
gotCRC uint32 // running crc
reopen func(seen int64) (*http.Response, error)
}
// Close closes the Reader. It must be called when done reading.
func (r *Reader) Close() error {
return r.body.Close()
}
func (r *Reader) Read(p []byte) (int, error) {
n, err := r.readWithRetry(p)
if r.remain != -1 {
r.remain -= int64(n)
}
if r.checkCRC {
r.gotCRC = crc32.Update(r.gotCRC, crc32cTable, p[:n])
// Check CRC here. It would be natural to check it in Close, but
// everybody defers Close on the assumption that it doesn't return
// anything worth looking at.
if err == io.EOF {
if r.gotCRC != r.wantCRC {
return n, fmt.Errorf("storage: bad CRC on read: got %d, want %d",
r.gotCRC, r.wantCRC)
}
}
}
return n, err
}
func (r *Reader) readWithRetry(p []byte) (int, error) {
n := 0
for len(p[n:]) > 0 {
m, err := r.body.Read(p[n:])
n += m
r.seen += int64(m)
if !shouldRetryRead(err) {
return n, err
}
// Read failed, but we will try again. Send a ranged read request that takes
// into account the number of bytes we've already seen.
res, err := r.reopen(r.seen)
if err != nil {
// reopen already retries
return n, err
}
r.body.Close()
r.body = res.Body
}
return n, nil
}
func shouldRetryRead(err error) bool {
if err == nil {
return false
}
return strings.HasSuffix(err.Error(), "INTERNAL_ERROR") && strings.Contains(reflect.TypeOf(err).String(), "http2")
}
// Size returns the size of the object in bytes.
// The returned value is always the same and is not affected by
// calls to Read or Close.
//
// Deprecated: use Reader.Attrs.Size.
func (r *Reader) Size() int64 {
return r.Attrs.Size
}
// Remain returns the number of bytes left to read, or -1 if unknown.
func (r *Reader) Remain() int64 {
return r.remain
}
// ContentType returns the content type of the object.
//
// Deprecated: use Reader.Attrs.ContentType.
func (r *Reader) ContentType() string {
return r.Attrs.ContentType
}
// ContentEncoding returns the content encoding of the object.
//
// Deprecated: use Reader.Attrs.ContentEncoding.
func (r *Reader) ContentEncoding() string {
return r.Attrs.ContentEncoding
}
// CacheControl returns the cache control of the object.
//
// Deprecated: use Reader.Attrs.CacheControl.
func (r *Reader) CacheControl() string {
return r.Attrs.CacheControl
}
// LastModified returns the value of the Last-Modified header.
//
// Deprecated: use Reader.Attrs.LastModified.
func (r *Reader) LastModified() (time.Time, error) {
return r.Attrs.LastModified, nil
}
================================================
FILE: vendor/cloud.google.com/go/storage/storage.go
================================================
// Copyright 2014 Google LLC
//
// 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 storage
import (
"bytes"
"context"
"crypto"
"crypto/rand"
"crypto/rsa"
"crypto/sha256"
"crypto/x509"
"encoding/base64"
"encoding/hex"
"encoding/pem"
"errors"
"fmt"
"net/http"
"net/url"
"reflect"
"regexp"
"sort"
"strconv"
"strings"
"time"
"unicode/utf8"
"cloud.google.com/go/internal/optional"
"cloud.google.com/go/internal/trace"
"cloud.google.com/go/internal/version"
"google.golang.org/api/googleapi"
"google.golang.org/api/option"
raw "google.golang.org/api/storage/v1"
htransport "google.golang.org/api/transport/http"
)
var (
// ErrBucketNotExist indicates that the bucket does not exist.
ErrBucketNotExist = errors.New("storage: bucket doesn't exist")
// ErrObjectNotExist indicates that the object does not exist.
ErrObjectNotExist = errors.New("storage: object doesn't exist")
)
const userAgent = "gcloud-golang-storage/20151204"
const (
// ScopeFullControl grants permissions to manage your
// data and permissions in Google Cloud Storage.
ScopeFullControl = raw.DevstorageFullControlScope
// ScopeReadOnly grants permissions to
// view your data in Google Cloud Storage.
ScopeReadOnly = raw.DevstorageReadOnlyScope
// ScopeReadWrite grants permissions to manage your
// data in Google Cloud Storage.
ScopeReadWrite = raw.DevstorageReadWriteScope
)
var xGoogHeader = fmt.Sprintf("gl-go/%s gccl/%s", version.Go(), version.Repo)
func setClientHeader(headers http.Header) {
headers.Set("x-goog-api-client", xGoogHeader)
}
// Client is a client for interacting with Google Cloud Storage.
//
// Clients should be reused instead of created as needed.
// The methods of Client are safe for concurrent use by multiple goroutines.
type Client struct {
hc *http.Client
raw *raw.Service
}
// NewClient creates a new Google Cloud Storage client.
// The default scope is ScopeFullControl. To use a different scope, like ScopeReadOnly, use option.WithScopes.
func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
o := []option.ClientOption{
option.WithScopes(ScopeFullControl),
option.WithUserAgent(userAgent),
}
opts = append(o, opts...)
hc, ep, err := htransport.NewClient(ctx, opts...)
if err != nil {
return nil, fmt.Errorf("dialing: %v", err)
}
rawService, err := raw.New(hc)
if err != nil {
return nil, fmt.Errorf("storage client: %v", err)
}
if ep != "" {
rawService.BasePath = ep
}
return &Client{
hc: hc,
raw: rawService,
}, nil
}
// Close closes the Client.
//
// Close need not be called at program exit.
func (c *Client) Close() error {
// Set fields to nil so that subsequent uses will panic.
c.hc = nil
c.raw = nil
return nil
}
// SigningScheme determines the API version to use when signing URLs.
type SigningScheme int
const (
// SigningSchemeDefault is presently V2 and will change to V4 in the future.
SigningSchemeDefault SigningScheme = iota
// SigningSchemeV2 uses the V2 scheme to sign URLs.
SigningSchemeV2
// SigningSchemeV4 uses the V4 scheme to sign URLs.
SigningSchemeV4
)
// SignedURLOptions allows you to restrict the access to the signed URL.
type SignedURLOptions struct {
// GoogleAccessID represents the authorizer of the signed URL generation.
// It is typically the Google service account client email address from
// the Google Developers Console in the form of "xxx@developer.gserviceaccount.com".
// Required.
GoogleAccessID string
// PrivateKey is the Google service account private key. It is obtainable
// from the Google Developers Console.
// At https://console.developers.google.com/project/<your-project-id>/apiui/credential,
// create a service account client ID or reuse one of your existing service account
// credentials. Click on the "Generate new P12 key" to generate and download
// a new private key. Once you download the P12 file, use the following command
// to convert it into a PEM file.
//
// $ openssl pkcs12 -in key.p12 -passin pass:notasecret -out key.pem -nodes
//
// Provide the contents of the PEM file as a byte slice.
// Exactly one of PrivateKey or SignBytes must be non-nil.
PrivateKey []byte
// SignBytes is a function for implementing custom signing. For example, if
// your application is running on Google App Engine, you can use
// appengine's internal signing function:
// ctx := appengine.NewContext(request)
// acc, _ := appengine.ServiceAccount(ctx)
// url, err := SignedURL("bucket", "object", &SignedURLOptions{
// GoogleAccessID: acc,
// SignBytes: func(b []byte) ([]byte, error) {
// _, signedBytes, err := appengine.SignBytes(ctx, b)
// return signedBytes, err
// },
// // etc.
// })
//
// Exactly one of PrivateKey or SignBytes must be non-nil.
SignBytes func([]byte) ([]byte, error)
// Method is the HTTP method to be used with the signed URL.
// Signed URLs can be used with GET, HEAD, PUT, and DELETE requests.
// Required.
Method string
// Expires is the expiration time on the signed URL. It must be
// a datetime in the future. For SigningSchemeV4, the expiration may be no
// more than seven days in the future.
// Required.
Expires time.Time
// ContentType is the content type header the client must provide
// to use the generated signed URL.
// Optional.
ContentType string
// Headers is a list of extension headers the client must provide
// in order to use the generated signed URL.
// Optional.
Headers []string
// MD5 is the base64 encoded MD5 checksum of the file.
// If provided, the client should provide the exact value on the request
// header in order to use the signed URL.
gitextract_k5dcosea/
├── .gitignore
├── .travis.yml
├── LICENSE
├── Makefile
├── README.md
├── examples/
│ ├── application/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── bare_metal/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── basic/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── block_storage/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── dns/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── kubernetes/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── network/
│ │ ├── example.tf
│ │ └── versions.tf
│ ├── reserved_ip/
│ │ ├── example.tf
│ │ └── versions.tf
│ └── snapshot/
│ ├── example.tf
│ └── versions.tf
├── glide.yaml
├── main.go
├── structs/
│ ├── field.go
│ ├── structs.go
│ └── tags.go
├── vendor/
│ ├── cloud.google.com/
│ │ └── go/
│ │ ├── LICENSE
│ │ ├── compute/
│ │ │ └── metadata/
│ │ │ └── metadata.go
│ │ ├── iam/
│ │ │ └── iam.go
│ │ ├── internal/
│ │ │ ├── annotate.go
│ │ │ ├── optional/
│ │ │ │ └── optional.go
│ │ │ ├── retry.go
│ │ │ ├── trace/
│ │ │ │ └── trace.go
│ │ │ └── version/
│ │ │ └── version.go
│ │ └── storage/
│ │ ├── acl.go
│ │ ├── bucket.go
│ │ ├── copy.go
│ │ ├── doc.go
│ │ ├── go110.go
│ │ ├── iam.go
│ │ ├── invoke.go
│ │ ├── not_go110.go
│ │ ├── notifications.go
│ │ ├── reader.go
│ │ ├── storage.go
│ │ └── writer.go
│ ├── github.com/
│ │ ├── JamesClonk/
│ │ │ └── vultr/
│ │ │ ├── LICENSE
│ │ │ └── lib/
│ │ │ ├── account_info.go
│ │ │ ├── applications.go
│ │ │ ├── backup.go
│ │ │ ├── bare_metal.go
│ │ │ ├── bare_metal_plans.go
│ │ │ ├── block_storage.go
│ │ │ ├── client.go
│ │ │ ├── dns.go
│ │ │ ├── firewall.go
│ │ │ ├── ip.go
│ │ │ ├── iso.go
│ │ │ ├── network.go
│ │ │ ├── os.go
│ │ │ ├── plans.go
│ │ │ ├── regions.go
│ │ │ ├── reservedip.go
│ │ │ ├── scripts.go
│ │ │ ├── servers.go
│ │ │ ├── snapshots.go
│ │ │ └── sshkeys.go
│ │ ├── agext/
│ │ │ └── levenshtein/
│ │ │ ├── LICENSE
│ │ │ ├── NOTICE
│ │ │ ├── levenshtein.go
│ │ │ └── params.go
│ │ ├── apparentlymart/
│ │ │ ├── go-cidr/
│ │ │ │ ├── LICENSE
│ │ │ │ └── cidr/
│ │ │ │ ├── cidr.go
│ │ │ │ └── wrangling.go
│ │ │ └── go-textseg/
│ │ │ ├── LICENSE
│ │ │ └── textseg/
│ │ │ ├── all_tokens.go
│ │ │ ├── generate.go
│ │ │ ├── grapheme_clusters.go
│ │ │ ├── make_tables.go
│ │ │ ├── make_test_tables.go
│ │ │ ├── tables.go
│ │ │ └── utf8_seqs.go
│ │ ├── armon/
│ │ │ └── go-radix/
│ │ │ ├── LICENSE
│ │ │ └── radix.go
│ │ ├── aws/
│ │ │ └── aws-sdk-go/
│ │ │ ├── LICENSE.txt
│ │ │ ├── NOTICE.txt
│ │ │ ├── aws/
│ │ │ │ ├── awserr/
│ │ │ │ │ ├── error.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── awsutil/
│ │ │ │ │ ├── copy.go
│ │ │ │ │ ├── equal.go
│ │ │ │ │ ├── path_value.go
│ │ │ │ │ ├── prettify.go
│ │ │ │ │ └── string_value.go
│ │ │ │ ├── client/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── default_retryer.go
│ │ │ │ │ ├── logger.go
│ │ │ │ │ └── metadata/
│ │ │ │ │ └── client_info.go
│ │ │ │ ├── config.go
│ │ │ │ ├── context_1_5.go
│ │ │ │ ├── context_1_9.go
│ │ │ │ ├── context_background_1_5.go
│ │ │ │ ├── context_background_1_7.go
│ │ │ │ ├── context_sleep.go
│ │ │ │ ├── convert_types.go
│ │ │ │ ├── corehandlers/
│ │ │ │ │ ├── handlers.go
│ │ │ │ │ ├── param_validator.go
│ │ │ │ │ └── user_agent.go
│ │ │ │ ├── credentials/
│ │ │ │ │ ├── chain_provider.go
│ │ │ │ │ ├── credentials.go
│ │ │ │ │ ├── ec2rolecreds/
│ │ │ │ │ │ └── ec2_role_provider.go
│ │ │ │ │ ├── endpointcreds/
│ │ │ │ │ │ └── provider.go
│ │ │ │ │ ├── env_provider.go
│ │ │ │ │ ├── processcreds/
│ │ │ │ │ │ └── provider.go
│ │ │ │ │ ├── shared_credentials_provider.go
│ │ │ │ │ ├── static_provider.go
│ │ │ │ │ └── stscreds/
│ │ │ │ │ └── assume_role_provider.go
│ │ │ │ ├── csm/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── enable.go
│ │ │ │ │ ├── metric.go
│ │ │ │ │ ├── metric_chan.go
│ │ │ │ │ ├── metric_exception.go
│ │ │ │ │ └── reporter.go
│ │ │ │ ├── defaults/
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ └── shared_config.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── ec2metadata/
│ │ │ │ │ ├── api.go
│ │ │ │ │ └── service.go
│ │ │ │ ├── endpoints/
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── defaults.go
│ │ │ │ │ ├── dep_service_ids.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── endpoints.go
│ │ │ │ │ ├── v3model.go
│ │ │ │ │ └── v3model_codegen.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── jsonvalue.go
│ │ │ │ ├── logger.go
│ │ │ │ ├── request/
│ │ │ │ │ ├── connection_reset_error.go
│ │ │ │ │ ├── handlers.go
│ │ │ │ │ ├── http_request.go
│ │ │ │ │ ├── offset_reader.go
│ │ │ │ │ ├── request.go
│ │ │ │ │ ├── request_1_7.go
│ │ │ │ │ ├── request_1_8.go
│ │ │ │ │ ├── request_context.go
│ │ │ │ │ ├── request_context_1_6.go
│ │ │ │ │ ├── request_pagination.go
│ │ │ │ │ ├── retryer.go
│ │ │ │ │ ├── timeout_read_closer.go
│ │ │ │ │ ├── validation.go
│ │ │ │ │ └── waiter.go
│ │ │ │ ├── session/
│ │ │ │ │ ├── cabundle_transport.go
│ │ │ │ │ ├── cabundle_transport_1_5.go
│ │ │ │ │ ├── cabundle_transport_1_6.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── env_config.go
│ │ │ │ │ ├── session.go
│ │ │ │ │ └── shared_config.go
│ │ │ │ ├── signer/
│ │ │ │ │ └── v4/
│ │ │ │ │ ├── header_rules.go
│ │ │ │ │ ├── options.go
│ │ │ │ │ ├── uri_path.go
│ │ │ │ │ └── v4.go
│ │ │ │ ├── types.go
│ │ │ │ ├── url.go
│ │ │ │ ├── url_1_7.go
│ │ │ │ └── version.go
│ │ │ ├── internal/
│ │ │ │ ├── ini/
│ │ │ │ │ ├── ast.go
│ │ │ │ │ ├── comma_token.go
│ │ │ │ │ ├── comment_token.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── empty_token.go
│ │ │ │ │ ├── expression.go
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ ├── ini.go
│ │ │ │ │ ├── ini_lexer.go
│ │ │ │ │ ├── ini_parser.go
│ │ │ │ │ ├── literal_tokens.go
│ │ │ │ │ ├── newline_token.go
│ │ │ │ │ ├── number_helper.go
│ │ │ │ │ ├── op_tokens.go
│ │ │ │ │ ├── parse_error.go
│ │ │ │ │ ├── parse_stack.go
│ │ │ │ │ ├── sep_tokens.go
│ │ │ │ │ ├── skipper.go
│ │ │ │ │ ├── statement.go
│ │ │ │ │ ├── value_util.go
│ │ │ │ │ ├── visitor.go
│ │ │ │ │ ├── walker.go
│ │ │ │ │ └── ws_token.go
│ │ │ │ ├── s3err/
│ │ │ │ │ └── error.go
│ │ │ │ ├── sdkio/
│ │ │ │ │ ├── io_go1.6.go
│ │ │ │ │ └── io_go1.7.go
│ │ │ │ ├── sdkrand/
│ │ │ │ │ └── locked_source.go
│ │ │ │ ├── sdkuri/
│ │ │ │ │ └── path.go
│ │ │ │ └── shareddefaults/
│ │ │ │ ├── ecs_container.go
│ │ │ │ └── shared_config.go
│ │ │ ├── private/
│ │ │ │ └── protocol/
│ │ │ │ ├── eventstream/
│ │ │ │ │ ├── debug.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── eventstreamapi/
│ │ │ │ │ │ ├── api.go
│ │ │ │ │ │ └── error.go
│ │ │ │ │ ├── header.go
│ │ │ │ │ ├── header_value.go
│ │ │ │ │ └── message.go
│ │ │ │ ├── host.go
│ │ │ │ ├── host_prefix.go
│ │ │ │ ├── idempotency.go
│ │ │ │ ├── json/
│ │ │ │ │ └── jsonutil/
│ │ │ │ │ ├── build.go
│ │ │ │ │ └── unmarshal.go
│ │ │ │ ├── jsonvalue.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── query/
│ │ │ │ │ ├── build.go
│ │ │ │ │ ├── queryutil/
│ │ │ │ │ │ └── queryutil.go
│ │ │ │ │ ├── unmarshal.go
│ │ │ │ │ └── unmarshal_error.go
│ │ │ │ ├── rest/
│ │ │ │ │ ├── build.go
│ │ │ │ │ ├── payload.go
│ │ │ │ │ └── unmarshal.go
│ │ │ │ ├── restxml/
│ │ │ │ │ └── restxml.go
│ │ │ │ ├── timestamp.go
│ │ │ │ ├── unmarshal.go
│ │ │ │ └── xml/
│ │ │ │ └── xmlutil/
│ │ │ │ ├── build.go
│ │ │ │ ├── unmarshal.go
│ │ │ │ └── xml_to_struct.go
│ │ │ └── service/
│ │ │ ├── s3/
│ │ │ │ ├── api.go
│ │ │ │ ├── body_hash.go
│ │ │ │ ├── bucket_location.go
│ │ │ │ ├── customizations.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── doc_custom.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── host_style_bucket.go
│ │ │ │ ├── platform_handlers.go
│ │ │ │ ├── platform_handlers_go1.6.go
│ │ │ │ ├── service.go
│ │ │ │ ├── sse.go
│ │ │ │ ├── statusok_error.go
│ │ │ │ ├── unmarshal_error.go
│ │ │ │ └── waiters.go
│ │ │ └── sts/
│ │ │ ├── api.go
│ │ │ ├── doc.go
│ │ │ ├── errors.go
│ │ │ └── service.go
│ │ ├── bgentry/
│ │ │ ├── go-netrc/
│ │ │ │ ├── LICENSE
│ │ │ │ └── netrc/
│ │ │ │ └── netrc.go
│ │ │ └── speakeasy/
│ │ │ ├── LICENSE
│ │ │ ├── LICENSE_WINDOWS
│ │ │ ├── speakeasy.go
│ │ │ ├── speakeasy_unix.go
│ │ │ └── speakeasy_windows.go
│ │ ├── blang/
│ │ │ └── semver/
│ │ │ ├── LICENSE
│ │ │ ├── json.go
│ │ │ ├── range.go
│ │ │ ├── semver.go
│ │ │ ├── sort.go
│ │ │ └── sql.go
│ │ ├── davecgh/
│ │ │ └── go-spew/
│ │ │ ├── LICENSE
│ │ │ └── spew/
│ │ │ ├── bypass.go
│ │ │ ├── bypasssafe.go
│ │ │ ├── common.go
│ │ │ ├── config.go
│ │ │ ├── doc.go
│ │ │ ├── dump.go
│ │ │ ├── format.go
│ │ │ └── spew.go
│ │ ├── fatih/
│ │ │ ├── color/
│ │ │ │ ├── LICENSE.md
│ │ │ │ ├── color.go
│ │ │ │ └── doc.go
│ │ │ └── structs/
│ │ │ ├── LICENSE
│ │ │ ├── field.go
│ │ │ ├── structs.go
│ │ │ └── tags.go
│ │ ├── golang/
│ │ │ └── protobuf/
│ │ │ ├── LICENSE
│ │ │ ├── proto/
│ │ │ │ ├── clone.go
│ │ │ │ ├── decode.go
│ │ │ │ ├── deprecated.go
│ │ │ │ ├── discard.go
│ │ │ │ ├── encode.go
│ │ │ │ ├── equal.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── lib.go
│ │ │ │ ├── message_set.go
│ │ │ │ ├── pointer_reflect.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── table_marshal.go
│ │ │ │ ├── table_merge.go
│ │ │ │ ├── table_unmarshal.go
│ │ │ │ ├── text.go
│ │ │ │ └── text_parser.go
│ │ │ ├── protoc-gen-go/
│ │ │ │ └── descriptor/
│ │ │ │ └── descriptor.pb.go
│ │ │ └── ptypes/
│ │ │ ├── any/
│ │ │ │ └── any.pb.go
│ │ │ ├── any.go
│ │ │ ├── doc.go
│ │ │ ├── duration/
│ │ │ │ └── duration.pb.go
│ │ │ ├── duration.go
│ │ │ ├── timestamp/
│ │ │ │ └── timestamp.pb.go
│ │ │ └── timestamp.go
│ │ ├── google/
│ │ │ └── go-cmp/
│ │ │ ├── LICENSE
│ │ │ └── cmp/
│ │ │ ├── compare.go
│ │ │ ├── export_panic.go
│ │ │ ├── export_unsafe.go
│ │ │ ├── internal/
│ │ │ │ ├── diff/
│ │ │ │ │ ├── debug_disable.go
│ │ │ │ │ ├── debug_enable.go
│ │ │ │ │ └── diff.go
│ │ │ │ ├── flags/
│ │ │ │ │ ├── flags.go
│ │ │ │ │ ├── toolchain_legacy.go
│ │ │ │ │ └── toolchain_recent.go
│ │ │ │ ├── function/
│ │ │ │ │ └── func.go
│ │ │ │ └── value/
│ │ │ │ ├── pointer_purego.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── sort.go
│ │ │ │ └── zero.go
│ │ │ ├── options.go
│ │ │ ├── path.go
│ │ │ ├── report.go
│ │ │ ├── report_compare.go
│ │ │ ├── report_reflect.go
│ │ │ ├── report_slices.go
│ │ │ ├── report_text.go
│ │ │ └── report_value.go
│ │ ├── googleapis/
│ │ │ └── gax-go/
│ │ │ ├── LICENSE
│ │ │ └── v2/
│ │ │ ├── call_option.go
│ │ │ ├── gax.go
│ │ │ ├── header.go
│ │ │ └── invoke.go
│ │ ├── hashicorp/
│ │ │ ├── errwrap/
│ │ │ │ ├── LICENSE
│ │ │ │ └── errwrap.go
│ │ │ ├── go-cleanhttp/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── cleanhttp.go
│ │ │ │ ├── doc.go
│ │ │ │ └── handlers.go
│ │ │ ├── go-getter/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── checksum.go
│ │ │ │ ├── client.go
│ │ │ │ ├── client_mode.go
│ │ │ │ ├── client_option.go
│ │ │ │ ├── client_option_progress.go
│ │ │ │ ├── common.go
│ │ │ │ ├── copy_dir.go
│ │ │ │ ├── decompress.go
│ │ │ │ ├── decompress_bzip2.go
│ │ │ │ ├── decompress_gzip.go
│ │ │ │ ├── decompress_tar.go
│ │ │ │ ├── decompress_tbz2.go
│ │ │ │ ├── decompress_testing.go
│ │ │ │ ├── decompress_tgz.go
│ │ │ │ ├── decompress_txz.go
│ │ │ │ ├── decompress_xz.go
│ │ │ │ ├── decompress_zip.go
│ │ │ │ ├── detect.go
│ │ │ │ ├── detect_bitbucket.go
│ │ │ │ ├── detect_file.go
│ │ │ │ ├── detect_gcs.go
│ │ │ │ ├── detect_git.go
│ │ │ │ ├── detect_github.go
│ │ │ │ ├── detect_s3.go
│ │ │ │ ├── detect_ssh.go
│ │ │ │ ├── folder_storage.go
│ │ │ │ ├── get.go
│ │ │ │ ├── get_base.go
│ │ │ │ ├── get_file.go
│ │ │ │ ├── get_file_copy.go
│ │ │ │ ├── get_file_unix.go
│ │ │ │ ├── get_file_windows.go
│ │ │ │ ├── get_gcs.go
│ │ │ │ ├── get_git.go
│ │ │ │ ├── get_hg.go
│ │ │ │ ├── get_http.go
│ │ │ │ ├── get_mock.go
│ │ │ │ ├── get_s3.go
│ │ │ │ ├── helper/
│ │ │ │ │ └── url/
│ │ │ │ │ ├── url.go
│ │ │ │ │ ├── url_unix.go
│ │ │ │ │ └── url_windows.go
│ │ │ │ ├── netrc.go
│ │ │ │ ├── source.go
│ │ │ │ └── storage.go
│ │ │ ├── go-hclog/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── context.go
│ │ │ │ ├── global.go
│ │ │ │ ├── intlogger.go
│ │ │ │ ├── logger.go
│ │ │ │ ├── nulllogger.go
│ │ │ │ ├── stacktrace.go
│ │ │ │ ├── stdlog.go
│ │ │ │ └── writer.go
│ │ │ ├── go-multierror/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── append.go
│ │ │ │ ├── flatten.go
│ │ │ │ ├── format.go
│ │ │ │ ├── multierror.go
│ │ │ │ ├── prefix.go
│ │ │ │ └── sort.go
│ │ │ ├── go-plugin/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── client.go
│ │ │ │ ├── discover.go
│ │ │ │ ├── error.go
│ │ │ │ ├── grpc_broker.go
│ │ │ │ ├── grpc_client.go
│ │ │ │ ├── grpc_controller.go
│ │ │ │ ├── grpc_server.go
│ │ │ │ ├── internal/
│ │ │ │ │ └── plugin/
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── grpc_broker.pb.go
│ │ │ │ │ └── grpc_controller.pb.go
│ │ │ │ ├── log_entry.go
│ │ │ │ ├── mtls.go
│ │ │ │ ├── mux_broker.go
│ │ │ │ ├── plugin.go
│ │ │ │ ├── process.go
│ │ │ │ ├── process_posix.go
│ │ │ │ ├── process_windows.go
│ │ │ │ ├── protocol.go
│ │ │ │ ├── rpc_client.go
│ │ │ │ ├── rpc_server.go
│ │ │ │ ├── server.go
│ │ │ │ ├── server_mux.go
│ │ │ │ ├── stream.go
│ │ │ │ └── testing.go
│ │ │ ├── go-safetemp/
│ │ │ │ ├── LICENSE
│ │ │ │ └── safetemp.go
│ │ │ ├── go-uuid/
│ │ │ │ ├── LICENSE
│ │ │ │ └── uuid.go
│ │ │ ├── go-version/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── constraint.go
│ │ │ │ ├── version.go
│ │ │ │ └── version_collection.go
│ │ │ ├── golang-lru/
│ │ │ │ ├── LICENSE
│ │ │ │ └── simplelru/
│ │ │ │ ├── lru.go
│ │ │ │ └── lru_interface.go
│ │ │ ├── hcl/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── decoder.go
│ │ │ │ ├── hcl/
│ │ │ │ │ ├── ast/
│ │ │ │ │ │ ├── ast.go
│ │ │ │ │ │ └── walk.go
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ └── parser.go
│ │ │ │ │ ├── scanner/
│ │ │ │ │ │ └── scanner.go
│ │ │ │ │ ├── strconv/
│ │ │ │ │ │ └── quote.go
│ │ │ │ │ └── token/
│ │ │ │ │ ├── position.go
│ │ │ │ │ └── token.go
│ │ │ │ ├── hcl.go
│ │ │ │ ├── json/
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── flatten.go
│ │ │ │ │ │ └── parser.go
│ │ │ │ │ ├── scanner/
│ │ │ │ │ │ └── scanner.go
│ │ │ │ │ └── token/
│ │ │ │ │ ├── position.go
│ │ │ │ │ └── token.go
│ │ │ │ ├── lex.go
│ │ │ │ └── parse.go
│ │ │ ├── hcl2/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── ext/
│ │ │ │ │ ├── dynblock/
│ │ │ │ │ │ ├── expand_body.go
│ │ │ │ │ │ ├── expand_spec.go
│ │ │ │ │ │ ├── expr_wrap.go
│ │ │ │ │ │ ├── iteration.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ ├── unknown_body.go
│ │ │ │ │ │ ├── variables.go
│ │ │ │ │ │ └── variables_hcldec.go
│ │ │ │ │ └── typeexpr/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── get_type.go
│ │ │ │ │ └── public.go
│ │ │ │ ├── gohcl/
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── hcl/
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diagnostic_text.go
│ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eval_context.go
│ │ │ │ │ ├── expr_call.go
│ │ │ │ │ ├── expr_list.go
│ │ │ │ │ ├── expr_map.go
│ │ │ │ │ ├── expr_unwrap.go
│ │ │ │ │ ├── hclsyntax/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── expression.go
│ │ │ │ │ │ ├── expression_ops.go
│ │ │ │ │ │ ├── expression_template.go
│ │ │ │ │ │ ├── expression_vars.go
│ │ │ │ │ │ ├── expression_vars_gen.go
│ │ │ │ │ │ ├── file.go
│ │ │ │ │ │ ├── generate.go
│ │ │ │ │ │ ├── keywords.go
│ │ │ │ │ │ ├── navigation.go
│ │ │ │ │ │ ├── node.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── parser_template.go
│ │ │ │ │ │ ├── parser_traversal.go
│ │ │ │ │ │ ├── peeker.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── scan_string_lit.go
│ │ │ │ │ │ ├── scan_tokens.go
│ │ │ │ │ │ ├── structure.go
│ │ │ │ │ │ ├── structure_at_pos.go
│ │ │ │ │ │ ├── token.go
│ │ │ │ │ │ ├── token_type_string.go
│ │ │ │ │ │ ├── variables.go
│ │ │ │ │ │ └── walk.go
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── ast.go
│ │ │ │ │ │ ├── didyoumean.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── navigation.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── peeker.go
│ │ │ │ │ │ ├── public.go
│ │ │ │ │ │ ├── scanner.go
│ │ │ │ │ │ ├── structure.go
│ │ │ │ │ │ └── tokentype_string.go
│ │ │ │ │ ├── merged.go
│ │ │ │ │ ├── ops.go
│ │ │ │ │ ├── pos.go
│ │ │ │ │ ├── pos_scanner.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── static_expr.go
│ │ │ │ │ ├── structure.go
│ │ │ │ │ ├── structure_at_pos.go
│ │ │ │ │ ├── traversal.go
│ │ │ │ │ └── traversal_for_expr.go
│ │ │ │ ├── hcldec/
│ │ │ │ │ ├── block_labels.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── gob.go
│ │ │ │ │ ├── public.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── spec.go
│ │ │ │ │ └── variables.go
│ │ │ │ ├── hcled/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── navigation.go
│ │ │ │ ├── hclparse/
│ │ │ │ │ └── parser.go
│ │ │ │ └── hclwrite/
│ │ │ │ ├── ast.go
│ │ │ │ ├── ast_attribute.go
│ │ │ │ ├── ast_block.go
│ │ │ │ ├── ast_body.go
│ │ │ │ ├── ast_expression.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── format.go
│ │ │ │ ├── generate.go
│ │ │ │ ├── native_node_sorter.go
│ │ │ │ ├── node.go
│ │ │ │ ├── parser.go
│ │ │ │ ├── public.go
│ │ │ │ └── tokens.go
│ │ │ ├── hil/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── ast/
│ │ │ │ │ ├── arithmetic.go
│ │ │ │ │ ├── arithmetic_op.go
│ │ │ │ │ ├── ast.go
│ │ │ │ │ ├── call.go
│ │ │ │ │ ├── conditional.go
│ │ │ │ │ ├── index.go
│ │ │ │ │ ├── literal.go
│ │ │ │ │ ├── output.go
│ │ │ │ │ ├── scope.go
│ │ │ │ │ ├── stack.go
│ │ │ │ │ ├── type_string.go
│ │ │ │ │ ├── unknown.go
│ │ │ │ │ ├── variable_access.go
│ │ │ │ │ └── variables_helper.go
│ │ │ │ ├── builtins.go
│ │ │ │ ├── check_identifier.go
│ │ │ │ ├── check_types.go
│ │ │ │ ├── convert.go
│ │ │ │ ├── eval.go
│ │ │ │ ├── eval_type.go
│ │ │ │ ├── evaltype_string.go
│ │ │ │ ├── parse.go
│ │ │ │ ├── parser/
│ │ │ │ │ ├── binary_op.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ └── parser.go
│ │ │ │ ├── scanner/
│ │ │ │ │ ├── peeker.go
│ │ │ │ │ ├── scanner.go
│ │ │ │ │ ├── token.go
│ │ │ │ │ └── tokentype_string.go
│ │ │ │ ├── transform_fixed.go
│ │ │ │ └── walk.go
│ │ │ ├── logutils/
│ │ │ │ ├── LICENSE
│ │ │ │ └── level.go
│ │ │ ├── terraform/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── addrs/
│ │ │ │ │ ├── count_attr.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── input_variable.go
│ │ │ │ │ ├── instance_key.go
│ │ │ │ │ ├── local_value.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_call.go
│ │ │ │ │ ├── module_instance.go
│ │ │ │ │ ├── output_value.go
│ │ │ │ │ ├── parse_ref.go
│ │ │ │ │ ├── parse_target.go
│ │ │ │ │ ├── path_attr.go
│ │ │ │ │ ├── provider_config.go
│ │ │ │ │ ├── referenceable.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_phase.go
│ │ │ │ │ ├── resourcemode_string.go
│ │ │ │ │ ├── self.go
│ │ │ │ │ ├── targetable.go
│ │ │ │ │ └── terraform_attr.go
│ │ │ │ ├── command/
│ │ │ │ │ └── format/
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diff.go
│ │ │ │ │ ├── format.go
│ │ │ │ │ ├── object_id.go
│ │ │ │ │ ├── plan.go
│ │ │ │ │ └── state.go
│ │ │ │ ├── config/
│ │ │ │ │ ├── append.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_string.go
│ │ │ │ │ ├── config_terraform.go
│ │ │ │ │ ├── config_tree.go
│ │ │ │ │ ├── hcl2_shim_util.go
│ │ │ │ │ ├── hcl2shim/
│ │ │ │ │ │ ├── flatmap.go
│ │ │ │ │ │ ├── paths.go
│ │ │ │ │ │ ├── single_attr_body.go
│ │ │ │ │ │ ├── values.go
│ │ │ │ │ │ └── values_equiv.go
│ │ │ │ │ ├── import_tree.go
│ │ │ │ │ ├── interpolate.go
│ │ │ │ │ ├── interpolate_funcs.go
│ │ │ │ │ ├── interpolate_walk.go
│ │ │ │ │ ├── lang.go
│ │ │ │ │ ├── loader.go
│ │ │ │ │ ├── loader_hcl.go
│ │ │ │ │ ├── loader_hcl2.go
│ │ │ │ │ ├── merge.go
│ │ │ │ │ ├── module/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── get.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── module.go
│ │ │ │ │ │ ├── storage.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ ├── tree.go
│ │ │ │ │ │ ├── tree_gob.go
│ │ │ │ │ │ ├── validate_provider_alias.go
│ │ │ │ │ │ └── versions.go
│ │ │ │ │ ├── providers.go
│ │ │ │ │ ├── provisioner_enums.go
│ │ │ │ │ ├── raw_config.go
│ │ │ │ │ ├── resource_mode.go
│ │ │ │ │ ├── resource_mode_string.go
│ │ │ │ │ └── testing.go
│ │ │ │ ├── configs/
│ │ │ │ │ ├── backend.go
│ │ │ │ │ ├── compat_shim.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_build.go
│ │ │ │ │ ├── configload/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── getter.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── loader.go
│ │ │ │ │ │ ├── loader_load.go
│ │ │ │ │ │ ├── loader_snapshot.go
│ │ │ │ │ │ ├── module_mgr.go
│ │ │ │ │ │ ├── source_addr.go
│ │ │ │ │ │ └── testing.go
│ │ │ │ │ ├── configschema/
│ │ │ │ │ │ ├── coerce_value.go
│ │ │ │ │ │ ├── decoder_spec.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── empty_value.go
│ │ │ │ │ │ ├── implied_type.go
│ │ │ │ │ │ ├── internal_validate.go
│ │ │ │ │ │ ├── nestingmode_string.go
│ │ │ │ │ │ ├── none_required.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ └── validate_traversal.go
│ │ │ │ │ ├── depends_on.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_call.go
│ │ │ │ │ ├── module_merge.go
│ │ │ │ │ ├── module_merge_body.go
│ │ │ │ │ ├── named_values.go
│ │ │ │ │ ├── parser.go
│ │ │ │ │ ├── parser_config.go
│ │ │ │ │ ├── parser_config_dir.go
│ │ │ │ │ ├── parser_values.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provisioner.go
│ │ │ │ │ ├── provisioneronfailure_string.go
│ │ │ │ │ ├── provisionerwhen_string.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── synth_body.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── variable_type_hint.go
│ │ │ │ │ ├── variabletypehint_string.go
│ │ │ │ │ └── version_constraint.go
│ │ │ │ ├── dag/
│ │ │ │ │ ├── dag.go
│ │ │ │ │ ├── dot.go
│ │ │ │ │ ├── edge.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── marshal.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ ├── tarjan.go
│ │ │ │ │ └── walk.go
│ │ │ │ ├── flatmap/
│ │ │ │ │ ├── expand.go
│ │ │ │ │ ├── flatten.go
│ │ │ │ │ └── map.go
│ │ │ │ ├── helper/
│ │ │ │ │ ├── config/
│ │ │ │ │ │ ├── decode.go
│ │ │ │ │ │ └── validator.go
│ │ │ │ │ ├── didyoumean/
│ │ │ │ │ │ └── name_suggestion.go
│ │ │ │ │ ├── hashcode/
│ │ │ │ │ │ └── hashcode.go
│ │ │ │ │ ├── hilmapstructure/
│ │ │ │ │ │ └── hilmapstructure.go
│ │ │ │ │ ├── logging/
│ │ │ │ │ │ ├── logging.go
│ │ │ │ │ │ └── transport.go
│ │ │ │ │ ├── mutexkv/
│ │ │ │ │ │ └── mutexkv.go
│ │ │ │ │ ├── plugin/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── grpc_provider.go
│ │ │ │ │ │ ├── grpc_provisioner.go
│ │ │ │ │ │ └── unknown.go
│ │ │ │ │ ├── resource/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ ├── grpc_test_provider.go
│ │ │ │ │ │ ├── id.go
│ │ │ │ │ │ ├── map.go
│ │ │ │ │ │ ├── resource.go
│ │ │ │ │ │ ├── state.go
│ │ │ │ │ │ ├── state_shim.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ ├── testing_config.go
│ │ │ │ │ │ ├── testing_import_state.go
│ │ │ │ │ │ └── wait.go
│ │ │ │ │ └── schema/
│ │ │ │ │ ├── backend.go
│ │ │ │ │ ├── core_schema.go
│ │ │ │ │ ├── data_source_resource_shim.go
│ │ │ │ │ ├── equal.go
│ │ │ │ │ ├── field_reader.go
│ │ │ │ │ ├── field_reader_config.go
│ │ │ │ │ ├── field_reader_diff.go
│ │ │ │ │ ├── field_reader_map.go
│ │ │ │ │ ├── field_reader_multi.go
│ │ │ │ │ ├── field_writer.go
│ │ │ │ │ ├── field_writer_map.go
│ │ │ │ │ ├── getsource_string.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provisioner.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_data.go
│ │ │ │ │ ├── resource_data_get_source.go
│ │ │ │ │ ├── resource_diff.go
│ │ │ │ │ ├── resource_importer.go
│ │ │ │ │ ├── resource_timeout.go
│ │ │ │ │ ├── schema.go
│ │ │ │ │ ├── serialize.go
│ │ │ │ │ ├── set.go
│ │ │ │ │ ├── shims.go
│ │ │ │ │ ├── testing.go
│ │ │ │ │ ├── valuetype.go
│ │ │ │ │ └── valuetype_string.go
│ │ │ │ ├── httpclient/
│ │ │ │ │ ├── client.go
│ │ │ │ │ └── useragent.go
│ │ │ │ ├── internal/
│ │ │ │ │ ├── earlyconfig/
│ │ │ │ │ │ ├── config.go
│ │ │ │ │ │ ├── config_build.go
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ └── module.go
│ │ │ │ │ ├── initwd/
│ │ │ │ │ │ ├── copy_dir.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── from_module.go
│ │ │ │ │ │ ├── getter.go
│ │ │ │ │ │ ├── inode.go
│ │ │ │ │ │ ├── inode_freebsd.go
│ │ │ │ │ │ ├── inode_windows.go
│ │ │ │ │ │ ├── load_config.go
│ │ │ │ │ │ ├── module_install.go
│ │ │ │ │ │ ├── module_install_hooks.go
│ │ │ │ │ │ ├── testing.go
│ │ │ │ │ │ └── version_required.go
│ │ │ │ │ ├── modsdir/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── manifest.go
│ │ │ │ │ │ └── paths.go
│ │ │ │ │ └── tfplugin5/
│ │ │ │ │ └── tfplugin5.pb.go
│ │ │ │ ├── lang/
│ │ │ │ │ ├── blocktoattr/
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── fixup.go
│ │ │ │ │ │ ├── schema.go
│ │ │ │ │ │ └── variables.go
│ │ │ │ │ ├── data.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eval.go
│ │ │ │ │ ├── funcs/
│ │ │ │ │ │ ├── cidr.go
│ │ │ │ │ │ ├── collection.go
│ │ │ │ │ │ ├── conversion.go
│ │ │ │ │ │ ├── crypto.go
│ │ │ │ │ │ ├── datetime.go
│ │ │ │ │ │ ├── encoding.go
│ │ │ │ │ │ ├── filesystem.go
│ │ │ │ │ │ ├── number.go
│ │ │ │ │ │ └── string.go
│ │ │ │ │ ├── functions.go
│ │ │ │ │ ├── references.go
│ │ │ │ │ └── scope.go
│ │ │ │ ├── moduledeps/
│ │ │ │ │ ├── dependencies.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ └── provider.go
│ │ │ │ ├── plans/
│ │ │ │ │ ├── action.go
│ │ │ │ │ ├── action_string.go
│ │ │ │ │ ├── changes.go
│ │ │ │ │ ├── changes_src.go
│ │ │ │ │ ├── changes_state.go
│ │ │ │ │ ├── changes_sync.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── dynamic_value.go
│ │ │ │ │ ├── objchange/
│ │ │ │ │ │ ├── all_null.go
│ │ │ │ │ │ ├── compatible.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── lcs.go
│ │ │ │ │ │ ├── normalize_obj.go
│ │ │ │ │ │ ├── objchange.go
│ │ │ │ │ │ └── plan_valid.go
│ │ │ │ │ └── plan.go
│ │ │ │ ├── plugin/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── convert/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ └── schema.go
│ │ │ │ │ ├── discovery/
│ │ │ │ │ │ ├── error.go
│ │ │ │ │ │ ├── find.go
│ │ │ │ │ │ ├── get.go
│ │ │ │ │ │ ├── get_cache.go
│ │ │ │ │ │ ├── hashicorp.go
│ │ │ │ │ │ ├── meta.go
│ │ │ │ │ │ ├── meta_set.go
│ │ │ │ │ │ ├── requirements.go
│ │ │ │ │ │ ├── signature.go
│ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ └── version_set.go
│ │ │ │ │ ├── grpc_provider.go
│ │ │ │ │ ├── grpc_provisioner.go
│ │ │ │ │ ├── plugin.go
│ │ │ │ │ ├── resource_provider.go
│ │ │ │ │ ├── resource_provisioner.go
│ │ │ │ │ ├── serve.go
│ │ │ │ │ ├── ui_input.go
│ │ │ │ │ └── ui_output.go
│ │ │ │ ├── providers/
│ │ │ │ │ ├── addressed_types.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ └── resolver.go
│ │ │ │ ├── provisioners/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── factory.go
│ │ │ │ │ └── provisioner.go
│ │ │ │ ├── registry/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── errors.go
│ │ │ │ │ ├── regsrc/
│ │ │ │ │ │ ├── friendly_host.go
│ │ │ │ │ │ ├── module.go
│ │ │ │ │ │ ├── regsrc.go
│ │ │ │ │ │ └── terraform_provider.go
│ │ │ │ │ └── response/
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── module_list.go
│ │ │ │ │ ├── module_provider.go
│ │ │ │ │ ├── module_versions.go
│ │ │ │ │ ├── pagination.go
│ │ │ │ │ ├── provider.go
│ │ │ │ │ ├── provider_list.go
│ │ │ │ │ ├── redirect.go
│ │ │ │ │ └── terraform_provider.go
│ │ │ │ ├── states/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── eachmode_string.go
│ │ │ │ │ ├── instance_generation.go
│ │ │ │ │ ├── instance_object.go
│ │ │ │ │ ├── instance_object_src.go
│ │ │ │ │ ├── module.go
│ │ │ │ │ ├── objectstatus_string.go
│ │ │ │ │ ├── output_value.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_deepcopy.go
│ │ │ │ │ ├── state_equal.go
│ │ │ │ │ ├── state_string.go
│ │ │ │ │ ├── statefile/
│ │ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── file.go
│ │ │ │ │ │ ├── marshal_equal.go
│ │ │ │ │ │ ├── read.go
│ │ │ │ │ │ ├── version0.go
│ │ │ │ │ │ ├── version1.go
│ │ │ │ │ │ ├── version1_upgrade.go
│ │ │ │ │ │ ├── version2.go
│ │ │ │ │ │ ├── version2_upgrade.go
│ │ │ │ │ │ ├── version3.go
│ │ │ │ │ │ ├── version3_upgrade.go
│ │ │ │ │ │ ├── version4.go
│ │ │ │ │ │ └── write.go
│ │ │ │ │ └── sync.go
│ │ │ │ ├── svchost/
│ │ │ │ │ ├── auth/
│ │ │ │ │ │ ├── cache.go
│ │ │ │ │ │ ├── credentials.go
│ │ │ │ │ │ ├── from_map.go
│ │ │ │ │ │ ├── helper_program.go
│ │ │ │ │ │ ├── static.go
│ │ │ │ │ │ └── token_credentials.go
│ │ │ │ │ ├── disco/
│ │ │ │ │ │ ├── disco.go
│ │ │ │ │ │ └── host.go
│ │ │ │ │ ├── label_iter.go
│ │ │ │ │ └── svchost.go
│ │ │ │ ├── terraform/
│ │ │ │ │ ├── context.go
│ │ │ │ │ ├── context_components.go
│ │ │ │ │ ├── context_graph_type.go
│ │ │ │ │ ├── context_import.go
│ │ │ │ │ ├── context_input.go
│ │ │ │ │ ├── diff.go
│ │ │ │ │ ├── edge_destroy.go
│ │ │ │ │ ├── eval.go
│ │ │ │ │ ├── eval_apply.go
│ │ │ │ │ ├── eval_check_prevent_destroy.go
│ │ │ │ │ ├── eval_context.go
│ │ │ │ │ ├── eval_context_builtin.go
│ │ │ │ │ ├── eval_context_mock.go
│ │ │ │ │ ├── eval_count.go
│ │ │ │ │ ├── eval_count_boundary.go
│ │ │ │ │ ├── eval_count_computed.go
│ │ │ │ │ ├── eval_diff.go
│ │ │ │ │ ├── eval_error.go
│ │ │ │ │ ├── eval_filter.go
│ │ │ │ │ ├── eval_filter_operation.go
│ │ │ │ │ ├── eval_if.go
│ │ │ │ │ ├── eval_import_state.go
│ │ │ │ │ ├── eval_lang.go
│ │ │ │ │ ├── eval_local.go
│ │ │ │ │ ├── eval_noop.go
│ │ │ │ │ ├── eval_output.go
│ │ │ │ │ ├── eval_provider.go
│ │ │ │ │ ├── eval_provisioner.go
│ │ │ │ │ ├── eval_read_data.go
│ │ │ │ │ ├── eval_refresh.go
│ │ │ │ │ ├── eval_sequence.go
│ │ │ │ │ ├── eval_state.go
│ │ │ │ │ ├── eval_state_upgrade.go
│ │ │ │ │ ├── eval_validate.go
│ │ │ │ │ ├── eval_validate_selfref.go
│ │ │ │ │ ├── eval_variable.go
│ │ │ │ │ ├── evaltree_provider.go
│ │ │ │ │ ├── evaluate.go
│ │ │ │ │ ├── evaluate_valid.go
│ │ │ │ │ ├── features.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── graph_builder.go
│ │ │ │ │ ├── graph_builder_apply.go
│ │ │ │ │ ├── graph_builder_destroy_plan.go
│ │ │ │ │ ├── graph_builder_eval.go
│ │ │ │ │ ├── graph_builder_import.go
│ │ │ │ │ ├── graph_builder_plan.go
│ │ │ │ │ ├── graph_builder_refresh.go
│ │ │ │ │ ├── graph_builder_validate.go
│ │ │ │ │ ├── graph_dot.go
│ │ │ │ │ ├── graph_interface_subgraph.go
│ │ │ │ │ ├── graph_walk.go
│ │ │ │ │ ├── graph_walk_context.go
│ │ │ │ │ ├── graph_walk_operation.go
│ │ │ │ │ ├── graphtype_string.go
│ │ │ │ │ ├── hook.go
│ │ │ │ │ ├── hook_mock.go
│ │ │ │ │ ├── hook_stop.go
│ │ │ │ │ ├── instancetype.go
│ │ │ │ │ ├── instancetype_string.go
│ │ │ │ │ ├── interpolate.go
│ │ │ │ │ ├── module_dependencies.go
│ │ │ │ │ ├── node_count_boundary.go
│ │ │ │ │ ├── node_data_destroy.go
│ │ │ │ │ ├── node_data_refresh.go
│ │ │ │ │ ├── node_local.go
│ │ │ │ │ ├── node_module_removed.go
│ │ │ │ │ ├── node_module_variable.go
│ │ │ │ │ ├── node_output.go
│ │ │ │ │ ├── node_output_orphan.go
│ │ │ │ │ ├── node_provider.go
│ │ │ │ │ ├── node_provider_abstract.go
│ │ │ │ │ ├── node_provider_disabled.go
│ │ │ │ │ ├── node_provider_eval.go
│ │ │ │ │ ├── node_provisioner.go
│ │ │ │ │ ├── node_resource_abstract.go
│ │ │ │ │ ├── node_resource_apply.go
│ │ │ │ │ ├── node_resource_apply_instance.go
│ │ │ │ │ ├── node_resource_destroy.go
│ │ │ │ │ ├── node_resource_destroy_deposed.go
│ │ │ │ │ ├── node_resource_plan.go
│ │ │ │ │ ├── node_resource_plan_destroy.go
│ │ │ │ │ ├── node_resource_plan_instance.go
│ │ │ │ │ ├── node_resource_plan_orphan.go
│ │ │ │ │ ├── node_resource_refresh.go
│ │ │ │ │ ├── node_resource_validate.go
│ │ │ │ │ ├── node_root_variable.go
│ │ │ │ │ ├── path.go
│ │ │ │ │ ├── plan.go
│ │ │ │ │ ├── provider_mock.go
│ │ │ │ │ ├── provisioner_mock.go
│ │ │ │ │ ├── resource.go
│ │ │ │ │ ├── resource_address.go
│ │ │ │ │ ├── resource_provider.go
│ │ │ │ │ ├── resource_provider_mock.go
│ │ │ │ │ ├── resource_provisioner.go
│ │ │ │ │ ├── resource_provisioner_mock.go
│ │ │ │ │ ├── schemas.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_filter.go
│ │ │ │ │ ├── state_upgrade_v1_to_v2.go
│ │ │ │ │ ├── state_upgrade_v2_to_v3.go
│ │ │ │ │ ├── state_v1.go
│ │ │ │ │ ├── testing.go
│ │ │ │ │ ├── transform.go
│ │ │ │ │ ├── transform_attach_config_provider.go
│ │ │ │ │ ├── transform_attach_config_resource.go
│ │ │ │ │ ├── transform_attach_schema.go
│ │ │ │ │ ├── transform_attach_state.go
│ │ │ │ │ ├── transform_config.go
│ │ │ │ │ ├── transform_config_flat.go
│ │ │ │ │ ├── transform_config_old.go
│ │ │ │ │ ├── transform_count_boundary.go
│ │ │ │ │ ├── transform_destroy_cbd.go
│ │ │ │ │ ├── transform_destroy_edge.go
│ │ │ │ │ ├── transform_diff.go
│ │ │ │ │ ├── transform_expand.go
│ │ │ │ │ ├── transform_import_provider.go
│ │ │ │ │ ├── transform_import_state.go
│ │ │ │ │ ├── transform_local.go
│ │ │ │ │ ├── transform_module_variable.go
│ │ │ │ │ ├── transform_orphan_count.go
│ │ │ │ │ ├── transform_orphan_output.go
│ │ │ │ │ ├── transform_orphan_resource.go
│ │ │ │ │ ├── transform_output.go
│ │ │ │ │ ├── transform_provider.go
│ │ │ │ │ ├── transform_provisioner.go
│ │ │ │ │ ├── transform_reference.go
│ │ │ │ │ ├── transform_removed_modules.go
│ │ │ │ │ ├── transform_resource_count.go
│ │ │ │ │ ├── transform_root.go
│ │ │ │ │ ├── transform_state.go
│ │ │ │ │ ├── transform_targets.go
│ │ │ │ │ ├── transform_transitive_reduction.go
│ │ │ │ │ ├── transform_variable.go
│ │ │ │ │ ├── transform_vertex.go
│ │ │ │ │ ├── ui_input.go
│ │ │ │ │ ├── ui_input_mock.go
│ │ │ │ │ ├── ui_input_prefix.go
│ │ │ │ │ ├── ui_output.go
│ │ │ │ │ ├── ui_output_callback.go
│ │ │ │ │ ├── ui_output_mock.go
│ │ │ │ │ ├── ui_output_provisioner.go
│ │ │ │ │ ├── user_agent.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── valuesourcetype_string.go
│ │ │ │ │ ├── variables.go
│ │ │ │ │ ├── version.go
│ │ │ │ │ ├── version_required.go
│ │ │ │ │ └── walkoperation_string.go
│ │ │ │ ├── tfdiags/
│ │ │ │ │ ├── config_traversals.go
│ │ │ │ │ ├── contextual.go
│ │ │ │ │ ├── diagnostic.go
│ │ │ │ │ ├── diagnostic_base.go
│ │ │ │ │ ├── diagnostics.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── error.go
│ │ │ │ │ ├── hcl.go
│ │ │ │ │ ├── rpc_friendly.go
│ │ │ │ │ ├── severity_string.go
│ │ │ │ │ ├── simple_warning.go
│ │ │ │ │ ├── source_range.go
│ │ │ │ │ └── sourceless.go
│ │ │ │ └── version/
│ │ │ │ └── version.go
│ │ │ ├── terraform-config-inspect/
│ │ │ │ ├── LICENSE
│ │ │ │ └── tfconfig/
│ │ │ │ ├── diagnostic.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── load.go
│ │ │ │ ├── load_hcl.go
│ │ │ │ ├── load_legacy.go
│ │ │ │ ├── module.go
│ │ │ │ ├── module_call.go
│ │ │ │ ├── output.go
│ │ │ │ ├── provider_ref.go
│ │ │ │ ├── resource.go
│ │ │ │ ├── schema.go
│ │ │ │ ├── source_pos.go
│ │ │ │ └── variable.go
│ │ │ └── yamux/
│ │ │ ├── LICENSE
│ │ │ ├── addr.go
│ │ │ ├── const.go
│ │ │ ├── mux.go
│ │ │ ├── session.go
│ │ │ ├── stream.go
│ │ │ └── util.go
│ │ ├── jmespath/
│ │ │ └── go-jmespath/
│ │ │ ├── LICENSE
│ │ │ ├── api.go
│ │ │ ├── astnodetype_string.go
│ │ │ ├── functions.go
│ │ │ ├── interpreter.go
│ │ │ ├── lexer.go
│ │ │ ├── parser.go
│ │ │ ├── toktype_string.go
│ │ │ └── util.go
│ │ ├── mattn/
│ │ │ ├── go-colorable/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── colorable_appengine.go
│ │ │ │ ├── colorable_others.go
│ │ │ │ ├── colorable_windows.go
│ │ │ │ └── noncolorable.go
│ │ │ └── go-isatty/
│ │ │ ├── LICENSE
│ │ │ ├── doc.go
│ │ │ ├── isatty_android.go
│ │ │ ├── isatty_bsd.go
│ │ │ ├── isatty_others.go
│ │ │ ├── isatty_solaris.go
│ │ │ ├── isatty_tcgets.go
│ │ │ └── isatty_windows.go
│ │ ├── mitchellh/
│ │ │ ├── cli/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── autocomplete.go
│ │ │ │ ├── cli.go
│ │ │ │ ├── command.go
│ │ │ │ ├── command_mock.go
│ │ │ │ ├── help.go
│ │ │ │ ├── ui.go
│ │ │ │ ├── ui_colored.go
│ │ │ │ ├── ui_concurrent.go
│ │ │ │ ├── ui_mock.go
│ │ │ │ └── ui_writer.go
│ │ │ ├── colorstring/
│ │ │ │ ├── LICENSE
│ │ │ │ └── colorstring.go
│ │ │ ├── copystructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── copier_time.go
│ │ │ │ └── copystructure.go
│ │ │ ├── go-homedir/
│ │ │ │ ├── LICENSE
│ │ │ │ └── homedir.go
│ │ │ ├── go-testing-interface/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── testing.go
│ │ │ │ └── testing_go19.go
│ │ │ ├── go-wordwrap/
│ │ │ │ ├── LICENSE.md
│ │ │ │ └── wordwrap.go
│ │ │ ├── hashstructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── hashstructure.go
│ │ │ │ └── include.go
│ │ │ ├── mapstructure/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── decode_hooks.go
│ │ │ │ ├── error.go
│ │ │ │ └── mapstructure.go
│ │ │ └── reflectwalk/
│ │ │ ├── LICENSE
│ │ │ ├── location.go
│ │ │ ├── location_string.go
│ │ │ └── reflectwalk.go
│ │ ├── oklog/
│ │ │ └── run/
│ │ │ ├── LICENSE
│ │ │ └── group.go
│ │ ├── posener/
│ │ │ └── complete/
│ │ │ ├── LICENSE.txt
│ │ │ ├── args.go
│ │ │ ├── cmd/
│ │ │ │ ├── cmd.go
│ │ │ │ └── install/
│ │ │ │ ├── bash.go
│ │ │ │ ├── fish.go
│ │ │ │ ├── install.go
│ │ │ │ ├── utils.go
│ │ │ │ └── zsh.go
│ │ │ ├── command.go
│ │ │ ├── complete.go
│ │ │ ├── doc.go
│ │ │ ├── log.go
│ │ │ ├── match/
│ │ │ │ ├── file.go
│ │ │ │ ├── match.go
│ │ │ │ └── prefix.go
│ │ │ ├── predict.go
│ │ │ ├── predict_files.go
│ │ │ ├── predict_set.go
│ │ │ └── utils.go
│ │ ├── spf13/
│ │ │ └── afero/
│ │ │ ├── LICENSE.txt
│ │ │ ├── afero.go
│ │ │ ├── basepath.go
│ │ │ ├── cacheOnReadFs.go
│ │ │ ├── const_bsds.go
│ │ │ ├── const_win_unix.go
│ │ │ ├── copyOnWriteFs.go
│ │ │ ├── httpFs.go
│ │ │ ├── ioutil.go
│ │ │ ├── lstater.go
│ │ │ ├── match.go
│ │ │ ├── mem/
│ │ │ │ ├── dir.go
│ │ │ │ ├── dirmap.go
│ │ │ │ └── file.go
│ │ │ ├── memmap.go
│ │ │ ├── os.go
│ │ │ ├── path.go
│ │ │ ├── readonlyfs.go
│ │ │ ├── regexpfs.go
│ │ │ ├── unionFile.go
│ │ │ └── util.go
│ │ ├── ulikunitz/
│ │ │ └── xz/
│ │ │ ├── LICENSE
│ │ │ ├── bits.go
│ │ │ ├── crc.go
│ │ │ ├── example.go
│ │ │ ├── format.go
│ │ │ ├── internal/
│ │ │ │ ├── hash/
│ │ │ │ │ ├── cyclic_poly.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── rabin_karp.go
│ │ │ │ │ └── roller.go
│ │ │ │ └── xlog/
│ │ │ │ └── xlog.go
│ │ │ ├── lzma/
│ │ │ │ ├── bintree.go
│ │ │ │ ├── bitops.go
│ │ │ │ ├── breader.go
│ │ │ │ ├── buffer.go
│ │ │ │ ├── bytewriter.go
│ │ │ │ ├── decoder.go
│ │ │ │ ├── decoderdict.go
│ │ │ │ ├── directcodec.go
│ │ │ │ ├── distcodec.go
│ │ │ │ ├── encoder.go
│ │ │ │ ├── encoderdict.go
│ │ │ │ ├── hashtable.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header2.go
│ │ │ │ ├── lengthcodec.go
│ │ │ │ ├── literalcodec.go
│ │ │ │ ├── matchalgorithm.go
│ │ │ │ ├── operation.go
│ │ │ │ ├── prob.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── rangecodec.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── reader2.go
│ │ │ │ ├── state.go
│ │ │ │ ├── treecodecs.go
│ │ │ │ ├── writer.go
│ │ │ │ └── writer2.go
│ │ │ ├── lzmafilter.go
│ │ │ ├── reader.go
│ │ │ └── writer.go
│ │ ├── vmihailenco/
│ │ │ └── msgpack/
│ │ │ ├── LICENSE
│ │ │ ├── appengine.go
│ │ │ ├── codes/
│ │ │ │ └── codes.go
│ │ │ ├── decode.go
│ │ │ ├── decode_map.go
│ │ │ ├── decode_number.go
│ │ │ ├── decode_query.go
│ │ │ ├── decode_slice.go
│ │ │ ├── decode_string.go
│ │ │ ├── decode_value.go
│ │ │ ├── encode.go
│ │ │ ├── encode_map.go
│ │ │ ├── encode_number.go
│ │ │ ├── encode_slice.go
│ │ │ ├── encode_value.go
│ │ │ ├── ext.go
│ │ │ ├── msgpack.go
│ │ │ ├── tag.go
│ │ │ ├── time.go
│ │ │ └── types.go
│ │ └── zclconf/
│ │ └── go-cty/
│ │ ├── LICENSE
│ │ └── cty/
│ │ ├── capsule.go
│ │ ├── collection.go
│ │ ├── convert/
│ │ │ ├── compare_types.go
│ │ │ ├── conversion.go
│ │ │ ├── conversion_collection.go
│ │ │ ├── conversion_dynamic.go
│ │ │ ├── conversion_object.go
│ │ │ ├── conversion_primitive.go
│ │ │ ├── conversion_tuple.go
│ │ │ ├── doc.go
│ │ │ ├── mismatch_msg.go
│ │ │ ├── public.go
│ │ │ ├── sort_types.go
│ │ │ └── unify.go
│ │ ├── doc.go
│ │ ├── element_iterator.go
│ │ ├── error.go
│ │ ├── function/
│ │ │ ├── argument.go
│ │ │ ├── doc.go
│ │ │ ├── error.go
│ │ │ ├── function.go
│ │ │ ├── stdlib/
│ │ │ │ ├── bool.go
│ │ │ │ ├── bytes.go
│ │ │ │ ├── collection.go
│ │ │ │ ├── csv.go
│ │ │ │ ├── datetime.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── format.go
│ │ │ │ ├── format_fsm.go
│ │ │ │ ├── general.go
│ │ │ │ ├── json.go
│ │ │ │ ├── number.go
│ │ │ │ ├── regexp.go
│ │ │ │ ├── sequence.go
│ │ │ │ ├── set.go
│ │ │ │ └── string.go
│ │ │ └── unpredictable.go
│ │ ├── gob.go
│ │ ├── gocty/
│ │ │ ├── doc.go
│ │ │ ├── helpers.go
│ │ │ ├── in.go
│ │ │ ├── out.go
│ │ │ └── type_implied.go
│ │ ├── helper.go
│ │ ├── json/
│ │ │ ├── doc.go
│ │ │ ├── marshal.go
│ │ │ ├── simple.go
│ │ │ ├── type.go
│ │ │ ├── type_implied.go
│ │ │ ├── unmarshal.go
│ │ │ └── value.go
│ │ ├── json.go
│ │ ├── list_type.go
│ │ ├── map_type.go
│ │ ├── msgpack/
│ │ │ ├── doc.go
│ │ │ ├── dynamic.go
│ │ │ ├── infinity.go
│ │ │ ├── marshal.go
│ │ │ ├── type_implied.go
│ │ │ ├── unknown.go
│ │ │ └── unmarshal.go
│ │ ├── null.go
│ │ ├── object_type.go
│ │ ├── path.go
│ │ ├── path_set.go
│ │ ├── primitive_type.go
│ │ ├── set/
│ │ │ ├── gob.go
│ │ │ ├── iterator.go
│ │ │ ├── ops.go
│ │ │ ├── rules.go
│ │ │ └── set.go
│ │ ├── set_helper.go
│ │ ├── set_internals.go
│ │ ├── set_type.go
│ │ ├── tuple_type.go
│ │ ├── type.go
│ │ ├── type_conform.go
│ │ ├── types_to_register.go
│ │ ├── unknown.go
│ │ ├── unknown_as_null.go
│ │ ├── value.go
│ │ ├── value_init.go
│ │ ├── value_ops.go
│ │ └── walk.go
│ ├── go.opencensus.io/
│ │ ├── LICENSE
│ │ ├── internal/
│ │ │ ├── internal.go
│ │ │ ├── sanitize.go
│ │ │ ├── tagencoding/
│ │ │ │ └── tagencoding.go
│ │ │ └── traceinternals.go
│ │ ├── metric/
│ │ │ ├── metricdata/
│ │ │ │ ├── doc.go
│ │ │ │ ├── exemplar.go
│ │ │ │ ├── label.go
│ │ │ │ ├── metric.go
│ │ │ │ ├── point.go
│ │ │ │ ├── type_string.go
│ │ │ │ └── unit.go
│ │ │ └── metricproducer/
│ │ │ ├── manager.go
│ │ │ └── producer.go
│ │ ├── opencensus.go
│ │ ├── plugin/
│ │ │ └── ochttp/
│ │ │ ├── client.go
│ │ │ ├── client_stats.go
│ │ │ ├── doc.go
│ │ │ ├── propagation/
│ │ │ │ └── b3/
│ │ │ │ └── b3.go
│ │ │ ├── route.go
│ │ │ ├── server.go
│ │ │ ├── span_annotating_client_trace.go
│ │ │ ├── stats.go
│ │ │ ├── trace.go
│ │ │ └── wrapped_body.go
│ │ ├── resource/
│ │ │ └── resource.go
│ │ ├── stats/
│ │ │ ├── doc.go
│ │ │ ├── internal/
│ │ │ │ └── record.go
│ │ │ ├── measure.go
│ │ │ ├── measure_float64.go
│ │ │ ├── measure_int64.go
│ │ │ ├── record.go
│ │ │ ├── units.go
│ │ │ └── view/
│ │ │ ├── aggregation.go
│ │ │ ├── aggregation_data.go
│ │ │ ├── collector.go
│ │ │ ├── doc.go
│ │ │ ├── export.go
│ │ │ ├── view.go
│ │ │ ├── view_to_metric.go
│ │ │ ├── worker.go
│ │ │ └── worker_commands.go
│ │ ├── tag/
│ │ │ ├── context.go
│ │ │ ├── doc.go
│ │ │ ├── key.go
│ │ │ ├── map.go
│ │ │ ├── map_codec.go
│ │ │ ├── metadata.go
│ │ │ ├── profile_19.go
│ │ │ ├── profile_not19.go
│ │ │ └── validate.go
│ │ └── trace/
│ │ ├── basetypes.go
│ │ ├── config.go
│ │ ├── doc.go
│ │ ├── evictedqueue.go
│ │ ├── export.go
│ │ ├── internal/
│ │ │ └── internal.go
│ │ ├── lrumap.go
│ │ ├── propagation/
│ │ │ └── propagation.go
│ │ ├── sampling.go
│ │ ├── spanbucket.go
│ │ ├── spanstore.go
│ │ ├── status_codes.go
│ │ ├── trace.go
│ │ ├── trace_go11.go
│ │ ├── trace_nongo11.go
│ │ └── tracestate/
│ │ └── tracestate.go
│ ├── golang.org/
│ │ └── x/
│ │ ├── crypto/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── bcrypt/
│ │ │ │ ├── base64.go
│ │ │ │ └── bcrypt.go
│ │ │ ├── blowfish/
│ │ │ │ ├── block.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── const.go
│ │ │ ├── cast5/
│ │ │ │ └── cast5.go
│ │ │ └── openpgp/
│ │ │ ├── armor/
│ │ │ │ ├── armor.go
│ │ │ │ └── encode.go
│ │ │ ├── canonical_text.go
│ │ │ ├── elgamal/
│ │ │ │ └── elgamal.go
│ │ │ ├── errors/
│ │ │ │ └── errors.go
│ │ │ ├── keys.go
│ │ │ ├── packet/
│ │ │ │ ├── compressed.go
│ │ │ │ ├── config.go
│ │ │ │ ├── encrypted_key.go
│ │ │ │ ├── literal.go
│ │ │ │ ├── ocfb.go
│ │ │ │ ├── one_pass_signature.go
│ │ │ │ ├── opaque.go
│ │ │ │ ├── packet.go
│ │ │ │ ├── private_key.go
│ │ │ │ ├── public_key.go
│ │ │ │ ├── public_key_v3.go
│ │ │ │ ├── reader.go
│ │ │ │ ├── signature.go
│ │ │ │ ├── signature_v3.go
│ │ │ │ ├── symmetric_key_encrypted.go
│ │ │ │ ├── symmetrically_encrypted.go
│ │ │ │ ├── userattribute.go
│ │ │ │ └── userid.go
│ │ │ ├── read.go
│ │ │ ├── s2k/
│ │ │ │ └── s2k.go
│ │ │ └── write.go
│ │ ├── net/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── context/
│ │ │ │ ├── context.go
│ │ │ │ ├── ctxhttp/
│ │ │ │ │ └── ctxhttp.go
│ │ │ │ ├── go17.go
│ │ │ │ ├── go19.go
│ │ │ │ ├── pre_go17.go
│ │ │ │ └── pre_go19.go
│ │ │ ├── http/
│ │ │ │ └── httpguts/
│ │ │ │ ├── guts.go
│ │ │ │ └── httplex.go
│ │ │ ├── http2/
│ │ │ │ ├── ciphers.go
│ │ │ │ ├── client_conn_pool.go
│ │ │ │ ├── databuffer.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── flow.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── go111.go
│ │ │ │ ├── gotrack.go
│ │ │ │ ├── headermap.go
│ │ │ │ ├── hpack/
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── hpack.go
│ │ │ │ │ ├── huffman.go
│ │ │ │ │ └── tables.go
│ │ │ │ ├── http2.go
│ │ │ │ ├── not_go111.go
│ │ │ │ ├── pipe.go
│ │ │ │ ├── server.go
│ │ │ │ ├── transport.go
│ │ │ │ ├── write.go
│ │ │ │ ├── writesched.go
│ │ │ │ ├── writesched_priority.go
│ │ │ │ └── writesched_random.go
│ │ │ ├── idna/
│ │ │ │ ├── idna10.0.0.go
│ │ │ │ ├── idna9.0.0.go
│ │ │ │ ├── punycode.go
│ │ │ │ ├── tables10.0.0.go
│ │ │ │ ├── tables11.0.0.go
│ │ │ │ ├── tables9.0.0.go
│ │ │ │ ├── trie.go
│ │ │ │ └── trieval.go
│ │ │ ├── internal/
│ │ │ │ └── timeseries/
│ │ │ │ └── timeseries.go
│ │ │ └── trace/
│ │ │ ├── events.go
│ │ │ ├── histogram.go
│ │ │ └── trace.go
│ │ ├── oauth2/
│ │ │ ├── LICENSE
│ │ │ ├── google/
│ │ │ │ ├── appengine.go
│ │ │ │ ├── appengine_gen1.go
│ │ │ │ ├── appengine_gen2_flex.go
│ │ │ │ ├── default.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── google.go
│ │ │ │ ├── jwt.go
│ │ │ │ └── sdk.go
│ │ │ ├── internal/
│ │ │ │ ├── client_appengine.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── oauth2.go
│ │ │ │ ├── token.go
│ │ │ │ └── transport.go
│ │ │ ├── jws/
│ │ │ │ └── jws.go
│ │ │ ├── jwt/
│ │ │ │ └── jwt.go
│ │ │ ├── oauth2.go
│ │ │ ├── token.go
│ │ │ └── transport.go
│ │ ├── sys/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ └── unix/
│ │ │ ├── affinity_linux.go
│ │ │ ├── aliases.go
│ │ │ ├── asm_aix_ppc64.s
│ │ │ ├── asm_darwin_386.s
│ │ │ ├── asm_darwin_amd64.s
│ │ │ ├── asm_darwin_arm.s
│ │ │ ├── asm_darwin_arm64.s
│ │ │ ├── asm_dragonfly_amd64.s
│ │ │ ├── asm_freebsd_386.s
│ │ │ ├── asm_freebsd_amd64.s
│ │ │ ├── asm_freebsd_arm.s
│ │ │ ├── asm_freebsd_arm64.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_mips64x.s
│ │ │ ├── asm_linux_mipsx.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_linux_riscv64.s
│ │ │ ├── asm_linux_s390x.s
│ │ │ ├── asm_netbsd_386.s
│ │ │ ├── asm_netbsd_amd64.s
│ │ │ ├── asm_netbsd_arm.s
│ │ │ ├── asm_netbsd_arm64.s
│ │ │ ├── asm_openbsd_386.s
│ │ │ ├── asm_openbsd_amd64.s
│ │ │ ├── asm_openbsd_arm.s
│ │ │ ├── asm_openbsd_arm64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── bluetooth_linux.go
│ │ │ ├── cap_freebsd.go
│ │ │ ├── constants.go
│ │ │ ├── dev_aix_ppc.go
│ │ │ ├── dev_aix_ppc64.go
│ │ │ ├── dev_darwin.go
│ │ │ ├── dev_dragonfly.go
│ │ │ ├── dev_freebsd.go
│ │ │ ├── dev_linux.go
│ │ │ ├── dev_netbsd.go
│ │ │ ├── dev_openbsd.go
│ │ │ ├── dirent.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── env_unix.go
│ │ │ ├── errors_freebsd_386.go
│ │ │ ├── errors_freebsd_amd64.go
│ │ │ ├── errors_freebsd_arm.go
│ │ │ ├── fcntl.go
│ │ │ ├── fcntl_darwin.go
│ │ │ ├── fcntl_linux_32bit.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── ioctl.go
│ │ │ ├── mkasm_darwin.go
│ │ │ ├── mkpost.go
│ │ │ ├── mksyscall.go
│ │ │ ├── mksyscall_aix_ppc.go
│ │ │ ├── mksyscall_aix_ppc64.go
│ │ │ ├── mksyscall_solaris.go
│ │ │ ├── mksysctl_openbsd.go
│ │ │ ├── mksysnum.go
│ │ │ ├── pagesize_unix.go
│ │ │ ├── pledge_openbsd.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_aix.go
│ │ │ ├── syscall_aix_ppc.go
│ │ │ ├── syscall_aix_ppc64.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_386.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_darwin_libSystem.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_arm64.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_amd64_gc.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_gc.go
│ │ │ ├── syscall_linux_gc_386.go
│ │ │ ├── syscall_linux_gccgo_386.go
│ │ │ ├── syscall_linux_gccgo_arm.go
│ │ │ ├── syscall_linux_mips64x.go
│ │ │ ├── syscall_linux_mipsx.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_linux_riscv64.go
│ │ │ ├── syscall_linux_s390x.go
│ │ │ ├── syscall_linux_sparc64.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_netbsd_arm64.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_openbsd_arm.go
│ │ │ ├── syscall_openbsd_arm64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_gc.go
│ │ │ ├── syscall_unix_gc_ppc64x.go
│ │ │ ├── timestruct.go
│ │ │ ├── types_aix.go
│ │ │ ├── types_darwin.go
│ │ │ ├── types_dragonfly.go
│ │ │ ├── types_freebsd.go
│ │ │ ├── types_netbsd.go
│ │ │ ├── types_openbsd.go
│ │ │ ├── types_solaris.go
│ │ │ ├── unveil_openbsd.go
│ │ │ ├── xattr_bsd.go
│ │ │ ├── zerrors_aix_ppc.go
│ │ │ ├── zerrors_aix_ppc64.go
│ │ │ ├── zerrors_darwin_386.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_freebsd_arm64.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_mips.go
│ │ │ ├── zerrors_linux_mips64.go
│ │ │ ├── zerrors_linux_mips64le.go
│ │ │ ├── zerrors_linux_mipsle.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_linux_riscv64.go
│ │ │ ├── zerrors_linux_s390x.go
│ │ │ ├── zerrors_linux_sparc64.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_netbsd_arm64.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_openbsd_arm.go
│ │ │ ├── zerrors_openbsd_arm64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zptrace386_linux.go
│ │ │ ├── zptracearm_linux.go
│ │ │ ├── zptracemips_linux.go
│ │ │ ├── zptracemipsle_linux.go
│ │ │ ├── zsyscall_aix_ppc.go
│ │ │ ├── zsyscall_aix_ppc64.go
│ │ │ ├── zsyscall_aix_ppc64_gc.go
│ │ │ ├── zsyscall_aix_ppc64_gccgo.go
│ │ │ ├── zsyscall_darwin_386.1_11.go
│ │ │ ├── zsyscall_darwin_386.go
│ │ │ ├── zsyscall_darwin_386.s
│ │ │ ├── zsyscall_darwin_amd64.1_11.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_amd64.s
│ │ │ ├── zsyscall_darwin_arm.1_11.go
│ │ │ ├── zsyscall_darwin_arm.go
│ │ │ ├── zsyscall_darwin_arm.s
│ │ │ ├── zsyscall_darwin_arm64.1_11.go
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_darwin_arm64.s
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_freebsd_arm64.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_mips.go
│ │ │ ├── zsyscall_linux_mips64.go
│ │ │ ├── zsyscall_linux_mips64le.go
│ │ │ ├── zsyscall_linux_mipsle.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_linux_riscv64.go
│ │ │ ├── zsyscall_linux_s390x.go
│ │ │ ├── zsyscall_linux_sparc64.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_netbsd_arm64.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_openbsd_arm.go
│ │ │ ├── zsyscall_openbsd_arm64.go
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsysctl_openbsd_386.go
│ │ │ ├── zsysctl_openbsd_amd64.go
│ │ │ ├── zsysctl_openbsd_arm.go
│ │ │ ├── zsysctl_openbsd_arm64.go
│ │ │ ├── zsysnum_darwin_386.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_freebsd_arm64.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_mips.go
│ │ │ ├── zsysnum_linux_mips64.go
│ │ │ ├── zsysnum_linux_mips64le.go
│ │ │ ├── zsysnum_linux_mipsle.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_linux_riscv64.go
│ │ │ ├── zsysnum_linux_s390x.go
│ │ │ ├── zsysnum_linux_sparc64.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_netbsd_arm64.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_openbsd_arm.go
│ │ │ ├── zsysnum_openbsd_arm64.go
│ │ │ ├── ztypes_aix_ppc.go
│ │ │ ├── ztypes_aix_ppc64.go
│ │ │ ├── ztypes_darwin_386.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_freebsd_arm64.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_mips.go
│ │ │ ├── ztypes_linux_mips64.go
│ │ │ ├── ztypes_linux_mips64le.go
│ │ │ ├── ztypes_linux_mipsle.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_linux_riscv64.go
│ │ │ ├── ztypes_linux_s390x.go
│ │ │ ├── ztypes_linux_sparc64.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_netbsd_arm64.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ ├── ztypes_openbsd_arm.go
│ │ │ ├── ztypes_openbsd_arm64.go
│ │ │ └── ztypes_solaris_amd64.go
│ │ ├── text/
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── secure/
│ │ │ │ └── bidirule/
│ │ │ │ ├── bidirule.go
│ │ │ │ ├── bidirule10.0.0.go
│ │ │ │ └── bidirule9.0.0.go
│ │ │ ├── transform/
│ │ │ │ └── transform.go
│ │ │ └── unicode/
│ │ │ ├── bidi/
│ │ │ │ ├── bidi.go
│ │ │ │ ├── bracket.go
│ │ │ │ ├── core.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── gen_ranges.go
│ │ │ │ ├── gen_trieval.go
│ │ │ │ ├── prop.go
│ │ │ │ ├── tables10.0.0.go
│ │ │ │ ├── tables11.0.0.go
│ │ │ │ ├── tables9.0.0.go
│ │ │ │ └── trieval.go
│ │ │ └── norm/
│ │ │ ├── composition.go
│ │ │ ├── forminfo.go
│ │ │ ├── input.go
│ │ │ ├── iter.go
│ │ │ ├── maketables.go
│ │ │ ├── normalize.go
│ │ │ ├── readwriter.go
│ │ │ ├── tables10.0.0.go
│ │ │ ├── tables11.0.0.go
│ │ │ ├── tables9.0.0.go
│ │ │ ├── transform.go
│ │ │ ├── trie.go
│ │ │ └── triegen.go
│ │ └── time/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── rate/
│ │ └── rate.go
│ └── google.golang.org/
│ ├── api/
│ │ ├── LICENSE
│ │ ├── gensupport/
│ │ │ ├── backoff.go
│ │ │ ├── buffer.go
│ │ │ ├── doc.go
│ │ │ ├── header.go
│ │ │ ├── json.go
│ │ │ ├── jsonfloat.go
│ │ │ ├── media.go
│ │ │ ├── params.go
│ │ │ ├── resumable.go
│ │ │ ├── retry.go
│ │ │ └── send.go
│ │ ├── googleapi/
│ │ │ ├── googleapi.go
│ │ │ ├── internal/
│ │ │ │ └── uritemplates/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── uritemplates.go
│ │ │ │ └── utils.go
│ │ │ ├── transport/
│ │ │ │ └── apikey.go
│ │ │ └── types.go
│ │ ├── internal/
│ │ │ ├── creds.go
│ │ │ ├── pool.go
│ │ │ └── settings.go
│ │ ├── iterator/
│ │ │ └── iterator.go
│ │ ├── option/
│ │ │ ├── credentials_go19.go
│ │ │ ├── credentials_notgo19.go
│ │ │ └── option.go
│ │ ├── storage/
│ │ │ └── v1/
│ │ │ └── storage-gen.go
│ │ └── transport/
│ │ └── http/
│ │ ├── dial.go
│ │ ├── dial_appengine.go
│ │ └── internal/
│ │ └── propagation/
│ │ └── http.go
│ ├── appengine/
│ │ ├── LICENSE
│ │ ├── appengine.go
│ │ ├── appengine_vm.go
│ │ ├── datastore/
│ │ │ ├── datastore.go
│ │ │ ├── doc.go
│ │ │ ├── internal/
│ │ │ │ ├── cloudkey/
│ │ │ │ │ └── cloudkey.go
│ │ │ │ └── cloudpb/
│ │ │ │ └── entity.pb.go
│ │ │ ├── key.go
│ │ │ ├── keycompat.go
│ │ │ ├── load.go
│ │ │ ├── metadata.go
│ │ │ ├── prop.go
│ │ │ ├── query.go
│ │ │ ├── save.go
│ │ │ └── transaction.go
│ │ ├── errors.go
│ │ ├── identity.go
│ │ ├── internal/
│ │ │ ├── api.go
│ │ │ ├── api_classic.go
│ │ │ ├── api_common.go
│ │ │ ├── app_id.go
│ │ │ ├── app_identity/
│ │ │ │ └── app_identity_service.pb.go
│ │ │ ├── base/
│ │ │ │ └── api_base.pb.go
│ │ │ ├── datastore/
│ │ │ │ └── datastore_v3.pb.go
│ │ │ ├── identity.go
│ │ │ ├── identity_classic.go
│ │ │ ├── identity_flex.go
│ │ │ ├── identity_vm.go
│ │ │ ├── internal.go
│ │ │ ├── log/
│ │ │ │ └── log_service.pb.go
│ │ │ ├── main.go
│ │ │ ├── main_common.go
│ │ │ ├── main_vm.go
│ │ │ ├── metadata.go
│ │ │ ├── modules/
│ │ │ │ └── modules_service.pb.go
│ │ │ ├── net.go
│ │ │ ├── remote_api/
│ │ │ │ └── remote_api.pb.go
│ │ │ ├── transaction.go
│ │ │ └── urlfetch/
│ │ │ └── urlfetch_service.pb.go
│ │ ├── namespace.go
│ │ ├── timeout.go
│ │ └── urlfetch/
│ │ └── urlfetch.go
│ ├── genproto/
│ │ ├── LICENSE
│ │ └── googleapis/
│ │ ├── api/
│ │ │ └── annotations/
│ │ │ ├── annotations.pb.go
│ │ │ ├── client.pb.go
│ │ │ ├── field_behavior.pb.go
│ │ │ ├── http.pb.go
│ │ │ └── resource.pb.go
│ │ ├── iam/
│ │ │ └── v1/
│ │ │ ├── iam_policy.pb.go
│ │ │ └── policy.pb.go
│ │ ├── rpc/
│ │ │ ├── code/
│ │ │ │ └── code.pb.go
│ │ │ └── status/
│ │ │ └── status.pb.go
│ │ └── type/
│ │ └── expr/
│ │ └── expr.pb.go
│ └── grpc/
│ ├── LICENSE
│ ├── backoff.go
│ ├── balancer/
│ │ ├── balancer.go
│ │ ├── base/
│ │ │ ├── balancer.go
│ │ │ └── base.go
│ │ └── roundrobin/
│ │ └── roundrobin.go
│ ├── balancer.go
│ ├── balancer_conn_wrappers.go
│ ├── balancer_v1_wrapper.go
│ ├── binarylog/
│ │ └── grpc_binarylog_v1/
│ │ └── binarylog.pb.go
│ ├── call.go
│ ├── clientconn.go
│ ├── codec.go
│ ├── codes/
│ │ ├── code_string.go
│ │ └── codes.go
│ ├── connectivity/
│ │ └── connectivity.go
│ ├── credentials/
│ │ ├── credentials.go
│ │ ├── internal/
│ │ │ ├── syscallconn.go
│ │ │ └── syscallconn_appengine.go
│ │ └── tls13.go
│ ├── dialoptions.go
│ ├── doc.go
│ ├── encoding/
│ │ ├── encoding.go
│ │ └── proto/
│ │ └── proto.go
│ ├── grpclog/
│ │ ├── grpclog.go
│ │ ├── logger.go
│ │ └── loggerv2.go
│ ├── health/
│ │ ├── client.go
│ │ ├── grpc_health_v1/
│ │ │ └── health.pb.go
│ │ └── server.go
│ ├── interceptor.go
│ ├── internal/
│ │ ├── backoff/
│ │ │ └── backoff.go
│ │ ├── balancerload/
│ │ │ └── load.go
│ │ ├── binarylog/
│ │ │ ├── binarylog.go
│ │ │ ├── binarylog_testutil.go
│ │ │ ├── env_config.go
│ │ │ ├── method_logger.go
│ │ │ ├── sink.go
│ │ │ └── util.go
│ │ ├── channelz/
│ │ │ ├── funcs.go
│ │ │ ├── types.go
│ │ │ ├── types_linux.go
│ │ │ ├── types_nonlinux.go
│ │ │ ├── util_linux.go
│ │ │ └── util_nonlinux.go
│ │ ├── envconfig/
│ │ │ └── envconfig.go
│ │ ├── grpcrand/
│ │ │ └── grpcrand.go
│ │ ├── grpcsync/
│ │ │ └── event.go
│ │ ├── internal.go
│ │ ├── syscall/
│ │ │ ├── syscall_linux.go
│ │ │ └── syscall_nonlinux.go
│ │ └── transport/
│ │ ├── bdp_estimator.go
│ │ ├── controlbuf.go
│ │ ├── defaults.go
│ │ ├── flowcontrol.go
│ │ ├── handler_server.go
│ │ ├── http2_client.go
│ │ ├── http2_server.go
│ │ ├── http_util.go
│ │ ├── log.go
│ │ └── transport.go
│ ├── keepalive/
│ │ └── keepalive.go
│ ├── metadata/
│ │ └── metadata.go
│ ├── naming/
│ │ ├── dns_resolver.go
│ │ └── naming.go
│ ├── peer/
│ │ └── peer.go
│ ├── picker_wrapper.go
│ ├── pickfirst.go
│ ├── preloader.go
│ ├── proxy.go
│ ├── resolver/
│ │ ├── dns/
│ │ │ └── dns_resolver.go
│ │ ├── passthrough/
│ │ │ └── passthrough.go
│ │ └── resolver.go
│ ├── resolver_conn_wrapper.go
│ ├── rpc_util.go
│ ├── server.go
│ ├── service_config.go
│ ├── serviceconfig/
│ │ └── serviceconfig.go
│ ├── stats/
│ │ ├── handlers.go
│ │ └── stats.go
│ ├── status/
│ │ └── status.go
│ ├── stream.go
│ ├── tap/
│ │ └── tap.go
│ ├── test/
│ │ └── bufconn/
│ │ └── bufconn.go
│ ├── trace.go
│ └── version.go
└── vultr/
├── config.go
├── data_source_application.go
├── data_source_bare_metal_plan.go
├── data_source_common_schema.go
├── data_source_firewall_group.go
├── data_source_network.go
├── data_source_os.go
├── data_source_plan.go
├── data_source_region.go
├── data_source_snapshot.go
├── data_source_ssh_key.go
├── data_source_startup_script.go
├── filter.go
├── provider.go
├── provider_test.go
├── resource_bare_metal.go
├── resource_block_storage.go
├── resource_dns_domain.go
├── resource_dns_record.go
├── resource_firewall_group.go
├── resource_firewall_rule.go
├── resource_firewall_rule_test.go
├── resource_instance.go
├── resource_ipv4.go
├── resource_network.go
├── resource_reserved_ip.go
├── resource_ssh_key.go
├── resource_startup_script.go
├── validators.go
└── wait.go
Copy disabled (too large)
Download .txt
Showing preview only (10,399K chars total). Download the full file to get everything.
SYMBOL INDEX (128221 symbols across 1788 files)
FILE: main.go
function main (line 8) | func main() {
FILE: structs/field.go
type Field (line 16) | type Field struct
method Tag (line 24) | func (f *Field) Tag(key string) string {
method Value (line 30) | func (f *Field) Value() interface{} {
method IsEmbedded (line 35) | func (f *Field) IsEmbedded() bool {
method IsExported (line 40) | func (f *Field) IsExported() bool {
method IsZero (line 46) | func (f *Field) IsZero() bool {
method Name (line 54) | func (f *Field) Name() string {
method Kind (line 59) | func (f *Field) Kind() reflect.Kind {
method Set (line 66) | func (f *Field) Set(val interface{}) error {
method Zero (line 89) | func (f *Field) Zero() error {
method Fields (line 102) | func (f *Field) Fields() []*Field {
method Field (line 108) | func (f *Field) Field(name string) *Field {
method FieldOk (line 119) | func (f *Field) FieldOk(name string) (*Field, bool) {
FILE: structs/structs.go
type Struct (line 19) | type Struct struct
method Map (line 79) | func (s *Struct) Map() map[string]interface{} {
method FillMap (line 87) | func (s *Struct) FillMap(out map[string]interface{}) {
method Values (line 172) | func (s *Struct) Values() []interface{} {
method Fields (line 220) | func (s *Struct) Fields() []*Field {
method Names (line 231) | func (s *Struct) Names() []string {
method Field (line 273) | func (s *Struct) Field(name string) *Field {
method FieldOk (line 285) | func (s *Struct) FieldOk(name string) (*Field, bool) {
method IsZero (line 316) | func (s *Struct) IsZero() bool {
method HasZero (line 363) | func (s *Struct) HasZero() bool {
method Name (line 396) | func (s *Struct) Name() string {
method structFields (line 403) | func (s *Struct) structFields() []reflect.StructField {
method nested (line 507) | func (s *Struct) nested(val reflect.Value) interface{} {
function New (line 27) | func New(s interface{}) *Struct {
function getFields (line 243) | func getFields(v reflect.Value, tagName string) []*Field {
function strctVal (line 426) | func strctVal(s interface{}) reflect.Value {
function Map (line 443) | func Map(s interface{}) map[string]interface{} {
function FillMap (line 449) | func FillMap(s interface{}, out map[string]interface{}) {
function Values (line 455) | func Values(s interface{}) []interface{} {
function Fields (line 461) | func Fields(s interface{}) []*Field {
function Names (line 467) | func Names(s interface{}) []string {
function IsZero (line 473) | func IsZero(s interface{}) bool {
function HasZero (line 479) | func HasZero(s interface{}) bool {
function IsStruct (line 485) | func IsStruct(s interface{}) bool {
function Name (line 501) | func Name(s interface{}) string {
FILE: structs/tags.go
type tagOptions (line 6) | type tagOptions
method Has (line 9) | func (t tagOptions) Has(opt string) bool {
function parseTag (line 22) | func parseTag(tag string) (string, tagOptions) {
FILE: vendor/cloud.google.com/go/compute/metadata/metadata.go
constant metadataIP (line 39) | metadataIP = "169.254.169.254"
constant metadataHostEnv (line 46) | metadataHostEnv = "GCE_METADATA_HOST"
constant userAgent (line 48) | userAgent = "gcloud-golang/0.1"
type cachedValue (line 51) | type cachedValue struct
method get (line 96) | func (c *cachedValue) get(cl *Client) (v string, err error) {
type NotDefinedError (line 90) | type NotDefinedError
method Error (line 92) | func (suffix NotDefinedError) Error() string {
function OnGCE (line 119) | func OnGCE() bool {
function initOnGCE (line 124) | func initOnGCE() {
function testOnGCE (line 128) | func testOnGCE() bool {
function systemInfoSuggestsGCE (line 199) | func systemInfoSuggestsGCE() bool {
function Subscribe (line 211) | func Subscribe(suffix string, fn func(v string, ok bool) error) error {
function Get (line 216) | func Get(suffix string) (string, error) { return defaultClient.Get(suffi...
function ProjectID (line 219) | func ProjectID() (string, error) { return defaultClient.ProjectID() }
function NumericProjectID (line 222) | func NumericProjectID() (string, error) { return defaultClient.NumericPr...
function InternalIP (line 225) | func InternalIP() (string, error) { return defaultClient.InternalIP() }
function ExternalIP (line 228) | func ExternalIP() (string, error) { return defaultClient.ExternalIP() }
function Hostname (line 232) | func Hostname() (string, error) { return defaultClient.Hostname() }
function InstanceTags (line 236) | func InstanceTags() ([]string, error) { return defaultClient.InstanceTag...
function InstanceID (line 239) | func InstanceID() (string, error) { return defaultClient.InstanceID() }
function InstanceName (line 242) | func InstanceName() (string, error) { return defaultClient.InstanceName() }
function Zone (line 245) | func Zone() (string, error) { return defaultClient.Zone() }
function InstanceAttributes (line 248) | func InstanceAttributes() ([]string, error) { return defaultClient.Insta...
function ProjectAttributes (line 251) | func ProjectAttributes() ([]string, error) { return defaultClient.Projec...
function InstanceAttributeValue (line 254) | func InstanceAttributeValue(attr string) (string, error) {
function ProjectAttributeValue (line 259) | func ProjectAttributeValue(attr string) (string, error) {
function Scopes (line 264) | func Scopes(serviceAccount string) ([]string, error) { return defaultCli...
function strsContains (line 266) | func strsContains(ss []string, s string) bool {
type Client (line 276) | type Client struct
method getETag (line 288) | func (c *Client) getETag(suffix string) (value, etag string, err error) {
method Get (line 333) | func (c *Client) Get(suffix string) (string, error) {
method getTrimmed (line 338) | func (c *Client) getTrimmed(suffix string) (s string, err error) {
method lines (line 344) | func (c *Client) lines(suffix string) ([]string, error) {
method ProjectID (line 357) | func (c *Client) ProjectID() (string, error) { return projID.get(c) }
method NumericProjectID (line 360) | func (c *Client) NumericProjectID() (string, error) { return projNum.g...
method InstanceID (line 363) | func (c *Client) InstanceID() (string, error) { return instID.get(c) }
method InternalIP (line 366) | func (c *Client) InternalIP() (string, error) {
method ExternalIP (line 371) | func (c *Client) ExternalIP() (string, error) {
method Hostname (line 377) | func (c *Client) Hostname() (string, error) {
method InstanceTags (line 383) | func (c *Client) InstanceTags() ([]string, error) {
method InstanceName (line 396) | func (c *Client) InstanceName() (string, error) {
method Zone (line 405) | func (c *Client) Zone() (string, error) {
method InstanceAttributes (line 417) | func (c *Client) InstanceAttributes() ([]string, error) { return c.lin...
method ProjectAttributes (line 422) | func (c *Client) ProjectAttributes() ([]string, error) { return c.line...
method InstanceAttributeValue (line 432) | func (c *Client) InstanceAttributeValue(attr string) (string, error) {
method ProjectAttributeValue (line 444) | func (c *Client) ProjectAttributeValue(attr string) (string, error) {
method Scopes (line 451) | func (c *Client) Scopes(serviceAccount string) ([]string, error) {
method Subscribe (line 467) | func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) e...
function NewClient (line 282) | func NewClient(c *http.Client) *Client {
type Error (line 504) | type Error struct
method Error (line 511) | func (e *Error) Error() string {
FILE: vendor/cloud.google.com/go/iam/iam.go
type client (line 37) | type client interface
type grpcClient (line 44) | type grpcClient struct
method Get (line 59) | func (g *grpcClient) Get(ctx context.Context, resource string) (*pb.Po...
method Set (line 75) | func (g *grpcClient) Set(ctx context.Context, resource string, p *pb.P...
method Test (line 88) | func (g *grpcClient) Test(ctx context.Context, resource string, perms ...
type Handle (line 108) | type Handle struct
method Policy (line 141) | func (h *Handle) Policy(ctx context.Context) (*Policy, error) {
method SetPolicy (line 153) | func (h *Handle) SetPolicy(ctx context.Context, policy *Policy) error {
method TestPermissions (line 158) | func (h *Handle) TestPermissions(ctx context.Context, permissions []st...
function InternalNewHandle (line 117) | func InternalNewHandle(conn *grpc.ClientConn, resource string) *Handle {
function InternalNewHandleGRPCClient (line 125) | func InternalNewHandleGRPCClient(c pb.IAMPolicyClient, resource string) ...
function InternalNewHandleClient (line 133) | func InternalNewHandleClient(c client, resource string) *Handle {
type RoleName (line 163) | type RoleName
constant Owner (line 167) | Owner RoleName = "roles/owner"
constant Editor (line 168) | Editor RoleName = "roles/editor"
constant Viewer (line 169) | Viewer RoleName = "roles/viewer"
constant AllUsers (line 174) | AllUsers = "allUsers"
constant AllAuthenticatedUsers (line 177) | AllAuthenticatedUsers = "allAuthenticatedUsers"
type Policy (line 184) | type Policy struct
method Members (line 196) | func (p *Policy) Members(r RoleName) []string {
method HasRole (line 205) | func (p *Policy) HasRole(member string, r RoleName) bool {
method Add (line 211) | func (p *Policy) Add(member string, r RoleName) {
method Remove (line 230) | func (p *Policy) Remove(member string, r RoleName) {
method Roles (line 260) | func (p *Policy) Roles() []RoleName {
method binding (line 272) | func (p *Policy) binding(r RoleName) *pb.Binding {
method bindingIndex (line 280) | func (p *Policy) bindingIndex(r RoleName) int {
function memberIndex (line 293) | func memberIndex(m string, b *pb.Binding) int {
function insertMetadata (line 306) | func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Con...
FILE: vendor/cloud.google.com/go/internal/annotate.go
function Annotate (line 35) | func Annotate(err error, msg string) error {
function Annotatef (line 52) | func Annotatef(err error, format string, args ...interface{}) error {
FILE: vendor/cloud.google.com/go/internal/optional/optional.go
type Bool (line 28) | type Bool interface
type String (line 31) | type String interface
type Int (line 34) | type Int interface
type Uint (line 37) | type Uint interface
type Float64 (line 40) | type Float64 interface
type Duration (line 43) | type Duration interface
function ToBool (line 48) | func ToBool(v Bool) bool {
function ToString (line 58) | func ToString(v String) string {
function ToInt (line 68) | func ToInt(v Int) int {
function ToUint (line 78) | func ToUint(v Uint) uint {
function ToFloat64 (line 88) | func ToFloat64(v Float64) float64 {
function ToDuration (line 98) | func ToDuration(v Duration) time.Duration {
function doPanic (line 106) | func doPanic(capType string, v interface{}) {
FILE: vendor/cloud.google.com/go/internal/retry.go
function Retry (line 30) | func Retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err...
function retry (line 34) | func retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err...
FILE: vendor/cloud.google.com/go/internal/trace/trace.go
function StartSpan (line 28) | func StartSpan(ctx context.Context, name string) context.Context {
function EndSpan (line 34) | func EndSpan(ctx context.Context, err error) {
function toStatus (line 44) | func toStatus(err error) trace.Status {
function httpStatusCodeToOCCode (line 56) | func httpStatusCodeToOCCode(httpStatusCode int) int32 {
function TracePrintf (line 90) | func TracePrintf(ctx context.Context, attrMap map[string]interface{}, fo...
FILE: vendor/cloud.google.com/go/internal/version/version.go
constant Repo (line 29) | Repo = "20180226"
function Go (line 33) | func Go() string {
constant develPrefix (line 39) | develPrefix = "devel +"
function goVer (line 41) | func goVer(s string) string {
function notSemverRune (line 69) | func notSemverRune(r rune) bool {
FILE: vendor/cloud.google.com/go/storage/acl.go
type ACLRole (line 28) | type ACLRole
constant RoleOwner (line 31) | RoleOwner ACLRole = "OWNER"
constant RoleReader (line 32) | RoleReader ACLRole = "READER"
constant RoleWriter (line 33) | RoleWriter ACLRole = "WRITER"
type ACLEntity (line 44) | type ACLEntity
constant AllUsers (line 47) | AllUsers ACLEntity = "allUsers"
constant AllAuthenticatedUsers (line 48) | AllAuthenticatedUsers ACLEntity = "allAuthenticatedUsers"
type ACLRule (line 53) | type ACLRule struct
method toRawBucketAccessControl (line 299) | func (r ACLRule) toRawBucketAccessControl(bucket string) *raw.BucketAc...
method toRawObjectAccessControl (line 308) | func (r ACLRule) toRawObjectAccessControl(bucket string) *raw.ObjectAc...
type ProjectTeam (line 63) | type ProjectTeam struct
type ACLHandle (line 69) | type ACLHandle struct
method Delete (line 78) | func (a *ACLHandle) Delete(ctx context.Context, entity ACLEntity) (err...
method Set (line 92) | func (a *ACLHandle) Set(ctx context.Context, entity ACLEntity, role AC...
method List (line 106) | func (a *ACLHandle) List(ctx context.Context) (rules []ACLRule, err er...
method bucketDefaultList (line 119) | func (a *ACLHandle) bucketDefaultList(ctx context.Context) ([]ACLRule,...
method bucketDefaultDelete (line 134) | func (a *ACLHandle) bucketDefaultDelete(ctx context.Context, entity AC...
method bucketList (line 142) | func (a *ACLHandle) bucketList(ctx context.Context) ([]ACLRule, error) {
method bucketSet (line 157) | func (a *ACLHandle) bucketSet(ctx context.Context, entity ACLEntity, r...
method bucketDelete (line 175) | func (a *ACLHandle) bucketDelete(ctx context.Context, entity ACLEntity...
method objectList (line 183) | func (a *ACLHandle) objectList(ctx context.Context) ([]ACLRule, error) {
method objectSet (line 198) | func (a *ACLHandle) objectSet(ctx context.Context, entity ACLEntity, r...
method objectDelete (line 222) | func (a *ACLHandle) objectDelete(ctx context.Context, entity ACLEntity...
method configureCall (line 230) | func (a *ACLHandle) configureCall(ctx context.Context, call interface{...
function toObjectACLRules (line 239) | func toObjectACLRules(items []*raw.ObjectAccessControl) []ACLRule {
function toBucketACLRules (line 247) | func toBucketACLRules(items []*raw.BucketAccessControl) []ACLRule {
function toObjectACLRule (line 255) | func toObjectACLRule(a *raw.ObjectAccessControl) ACLRule {
function toBucketACLRule (line 266) | func toBucketACLRule(a *raw.BucketAccessControl) ACLRule {
function toRawObjectACL (line 277) | func toRawObjectACL(rules []ACLRule) []*raw.ObjectAccessControl {
function toRawBucketACL (line 288) | func toRawBucketACL(rules []ACLRule) []*raw.BucketAccessControl {
function toBucketProjectTeam (line 317) | func toBucketProjectTeam(p *raw.BucketAccessControlProjectTeam) *Project...
function toObjectProjectTeam (line 327) | func toObjectProjectTeam(p *raw.ObjectAccessControlProjectTeam) *Project...
FILE: vendor/cloud.google.com/go/storage/bucket.go
type BucketHandle (line 33) | type BucketHandle struct
method Create (line 67) | func (b *BucketHandle) Create(ctx context.Context, projectID string, a...
method Delete (line 95) | func (b *BucketHandle) Delete(ctx context.Context) (err error) {
method newDeleteCall (line 106) | func (b *BucketHandle) newDeleteCall() (*raw.BucketsDeleteCall, error) {
method ACL (line 121) | func (b *BucketHandle) ACL() *ACLHandle {
method DefaultObjectACL (line 128) | func (b *BucketHandle) DefaultObjectACL() *ACLHandle {
method Object (line 138) | func (b *BucketHandle) Object(name string) *ObjectHandle {
method Attrs (line 155) | func (b *BucketHandle) Attrs(ctx context.Context) (attrs *BucketAttrs,...
method newGetCall (line 177) | func (b *BucketHandle) newGetCall() (*raw.BucketsGetCall, error) {
method Update (line 190) | func (b *BucketHandle) Update(ctx context.Context, uattrs BucketAttrsT...
method newPatchCall (line 212) | func (b *BucketHandle) newPatchCall(uattrs *BucketAttrsToUpdate) (*raw...
method If (line 757) | func (b *BucketHandle) If(conds BucketConditions) *BucketHandle {
method UserProject (line 793) | func (b *BucketHandle) UserProject(projectID string) *BucketHandle {
method LockRetentionPolicy (line 810) | func (b *BucketHandle) LockRetentionPolicy(ctx context.Context) error {
method Objects (line 1037) | func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectI...
method Bucket (line 49) | func (c *Client) Bucket(name string) *BucketHandle {
type BucketAttrs (line 227) | type BucketAttrs struct
method toRawBucket (line 513) | func (b *BucketAttrs) toRawBucket() *raw.Bucket {
type BucketPolicyOnly (line 324) | type BucketPolicyOnly struct
type Lifecycle (line 334) | type Lifecycle struct
type RetentionPolicy (line 350) | type RetentionPolicy struct
method toRawRetentionPolicy (line 843) | func (rp *RetentionPolicy) toRawRetentionPolicy() *raw.BucketRetention...
constant rfc3339Date (line 370) | rfc3339Date = "2006-01-02"
constant DeleteAction (line 374) | DeleteAction = "Delete"
constant SetStorageClassAction (line 378) | SetStorageClassAction = "SetStorageClass"
type LifecycleRule (line 385) | type LifecycleRule struct
type LifecycleAction (line 396) | type LifecycleAction struct
type Liveness (line 410) | type Liveness
constant LiveAndArchived (line 414) | LiveAndArchived Liveness = iota
constant Live (line 416) | Live
constant Archived (line 418) | Archived
type LifecycleCondition (line 425) | type LifecycleCondition struct
type BucketLogging (line 456) | type BucketLogging struct
method toRawBucketLogging (line 979) | func (b *BucketLogging) toRawBucketLogging() *raw.BucketLogging {
type BucketWebsite (line 468) | type BucketWebsite struct
method toRawBucketWebsite (line 999) | func (w *BucketWebsite) toRawBucketWebsite() *raw.BucketWebsite {
function newBucket (line 481) | func newBucket(b *raw.Bucket) (*BucketAttrs, error) {
type CORS (line 561) | type CORS struct
type BucketEncryption (line 583) | type BucketEncryption struct
method toRawBucketEncryption (line 963) | func (e *BucketEncryption) toRawBucketEncryption() *raw.BucketEncrypti...
type BucketAttrsToUpdate (line 592) | type BucketAttrsToUpdate struct
method SetLabel (line 647) | func (ua *BucketAttrsToUpdate) SetLabel(name, value string) {
method DeleteLabel (line 656) | func (ua *BucketAttrsToUpdate) DeleteLabel(name string) {
method toRawBucket (line 663) | func (ua *BucketAttrsToUpdate) toRawBucket() *raw.Bucket {
type BucketConditions (line 766) | type BucketConditions struct
method validate (line 778) | func (c *BucketConditions) validate(method string) error {
function applyBucketConds (line 822) | func applyBucketConds(method string, conds *BucketConditions, call inter...
function toRetentionPolicy (line 852) | func toRetentionPolicy(rp *raw.BucketRetentionPolicy) (*RetentionPolicy,...
function toRawCORS (line 867) | func toRawCORS(c []CORS) []*raw.BucketCors {
function toCORS (line 880) | func toCORS(rc []*raw.BucketCors) []CORS {
function toRawLifecycle (line 893) | func toRawLifecycle(l Lifecycle) *raw.BucketLifecycle {
function toLifecycle (line 928) | func toLifecycle(rl *raw.BucketLifecycle) Lifecycle {
function toBucketEncryption (line 972) | func toBucketEncryption(e *raw.BucketEncryption) *BucketEncryption {
function toBucketLogging (line 989) | func toBucketLogging(b *raw.BucketLogging) *BucketLogging {
function toBucketWebsite (line 1009) | func toBucketWebsite(w *raw.BucketWebsite) *BucketWebsite {
function toBucketPolicyOnly (line 1019) | func toBucketPolicyOnly(b *raw.BucketIamConfiguration) BucketPolicyOnly {
type ObjectIterator (line 1053) | type ObjectIterator struct
method PageInfo (line 1063) | func (it *ObjectIterator) PageInfo() *iterator.PageInfo { return it.pa...
method Next (line 1072) | func (it *ObjectIterator) Next() (*ObjectAttrs, error) {
method fetch (line 1081) | func (it *ObjectIterator) fetch(pageSize int, pageToken string) (strin...
method Buckets (line 1120) | func (c *Client) Buckets(ctx context.Context, projectID string) *BucketI...
type BucketIterator (line 1134) | type BucketIterator struct
method Next (line 1149) | func (it *BucketIterator) Next() (*BucketAttrs, error) {
method PageInfo (line 1159) | func (it *BucketIterator) PageInfo() *iterator.PageInfo { return it.pa...
method fetch (line 1161) | func (it *BucketIterator) fetch(pageSize int, pageToken string) (token...
FILE: vendor/cloud.google.com/go/storage/copy.go
method CopierFrom (line 32) | func (dst *ObjectHandle) CopierFrom(src *ObjectHandle) *Copier {
type Copier (line 37) | type Copier struct
method Run (line 76) | func (c *Copier) Run(ctx context.Context) (attrs *ObjectAttrs, err err...
method callRewrite (line 108) | func (c *Copier) callRewrite(ctx context.Context, rawObj *raw.Object) ...
method ComposerFrom (line 156) | func (dst *ObjectHandle) ComposerFrom(srcs ...*ObjectHandle) *Composer {
type Composer (line 163) | type Composer struct
method Run (line 174) | func (c *Composer) Run(ctx context.Context) (attrs *ObjectAttrs, err e...
FILE: vendor/cloud.google.com/go/storage/go110.go
function shouldRetry (line 21) | func shouldRetry(err error) bool {
FILE: vendor/cloud.google.com/go/storage/iam.go
method IAM (line 27) | func (b *BucketHandle) IAM() *iam.Handle {
type iamClient (line 35) | type iamClient struct
method Get (line 40) | func (c *iamClient) Get(ctx context.Context, resource string) (p *iamp...
method Set (line 60) | func (c *iamClient) Set(ctx context.Context, resource string, p *iampb...
method Test (line 76) | func (c *iamClient) Test(ctx context.Context, resource string, perms [...
function iamToStoragePolicy (line 96) | func iamToStoragePolicy(ip *iampb.Policy) *raw.Policy {
function iamToStorageBindings (line 103) | func iamToStorageBindings(ibs []*iampb.Binding) []*raw.PolicyBindings {
function iamFromStoragePolicy (line 114) | func iamFromStoragePolicy(rp *raw.Policy) *iampb.Policy {
function iamFromStorageBindings (line 121) | func iamFromStorageBindings(rbs []*raw.PolicyBindings) []*iampb.Binding {
FILE: vendor/cloud.google.com/go/storage/invoke.go
function runWithRetry (line 26) | func runWithRetry(ctx context.Context, call func() error) error {
FILE: vendor/cloud.google.com/go/storage/not_go110.go
function shouldRetry (line 26) | func shouldRetry(err error) bool {
FILE: vendor/cloud.google.com/go/storage/notifications.go
type Notification (line 29) | type Notification struct
constant NoPayload (line 60) | NoPayload = "NONE"
constant JSONPayload (line 63) | JSONPayload = "JSON_API_V1"
constant ObjectFinalizeEvent (line 69) | ObjectFinalizeEvent = "OBJECT_FINALIZE"
constant ObjectMetadataUpdateEvent (line 72) | ObjectMetadataUpdateEvent = "OBJECT_METADATA_UPDATE"
constant ObjectDeleteEvent (line 75) | ObjectDeleteEvent = "OBJECT_DELETE"
constant ObjectArchiveEvent (line 79) | ObjectArchiveEvent = "OBJECT_ARCHIVE"
function toNotification (line 82) | func toNotification(rn *raw.Notification) *Notification {
function parseNotificationTopic (line 99) | func parseNotificationTopic(nt string) (projectID, topicID string) {
function toRawNotification (line 107) | func toRawNotification(n *Notification) *raw.Notification {
method AddNotification (line 122) | func (b *BucketHandle) AddNotification(ctx context.Context, n *Notificat...
method Notifications (line 149) | func (b *BucketHandle) Notifications(ctx context.Context) (n map[string]...
function notificationsToMap (line 169) | func notificationsToMap(rns []*raw.Notification) map[string]*Notification {
method DeleteNotification (line 178) | func (b *BucketHandle) DeleteNotification(ctx context.Context, id string...
FILE: vendor/cloud.google.com/go/storage/reader.go
type ReaderObjectAttrs (line 42) | type ReaderObjectAttrs struct
method NewReader (line 75) | func (o *ObjectHandle) NewReader(ctx context.Context) (*Reader, error) {
method NewRangeReader (line 82) | func (o *ObjectHandle) NewRangeReader(ctx context.Context, offset, lengt...
function uncompressedByServer (line 253) | func uncompressedByServer(res *http.Response) bool {
function parseCRC32c (line 260) | func parseCRC32c(res *http.Response) (uint32, bool) {
type Reader (line 281) | type Reader struct
method Close (line 292) | func (r *Reader) Close() error {
method Read (line 296) | func (r *Reader) Read(p []byte) (int, error) {
method readWithRetry (line 316) | func (r *Reader) readWithRetry(p []byte) (int, error) {
method Size (line 350) | func (r *Reader) Size() int64 {
method Remain (line 355) | func (r *Reader) Remain() int64 {
method ContentType (line 362) | func (r *Reader) ContentType() string {
method ContentEncoding (line 369) | func (r *Reader) ContentEncoding() string {
method CacheControl (line 376) | func (r *Reader) CacheControl() string {
method LastModified (line 383) | func (r *Reader) LastModified() (time.Time, error) {
function shouldRetryRead (line 338) | func shouldRetryRead(err error) bool {
FILE: vendor/cloud.google.com/go/storage/storage.go
constant userAgent (line 56) | userAgent = "gcloud-golang-storage/20151204"
constant ScopeFullControl (line 61) | ScopeFullControl = raw.DevstorageFullControlScope
constant ScopeReadOnly (line 65) | ScopeReadOnly = raw.DevstorageReadOnlyScope
constant ScopeReadWrite (line 69) | ScopeReadWrite = raw.DevstorageReadWriteScope
function setClientHeader (line 74) | func setClientHeader(headers http.Header) {
type Client (line 82) | type Client struct
method Close (line 115) | func (c *Client) Close() error {
method ServiceAccount (line 1344) | func (c *Client) ServiceAccount(ctx context.Context, projectID string)...
function NewClient (line 89) | func NewClient(ctx context.Context, opts ...option.ClientOption) (*Clien...
type SigningScheme (line 123) | type SigningScheme
constant SigningSchemeDefault (line 127) | SigningSchemeDefault SigningScheme = iota
constant SigningSchemeV2 (line 130) | SigningSchemeV2
constant SigningSchemeV4 (line 133) | SigningSchemeV4
type SignedURLOptions (line 137) | type SignedURLOptions struct
function v2SanitizeHeaders (line 221) | func v2SanitizeHeaders(hdrs []string) []string {
function v4SanitizeHeaders (line 278) | func v4SanitizeHeaders(hdrs []string) []string {
function SignedURL (line 324) | func SignedURL(bucket, name string, opts *SignedURLOptions) (string, err...
function validateOptions (line 343) | func validateOptions(opts *SignedURLOptions, now time.Time) error {
constant iso8601 (line 375) | iso8601 = "20060102T150405Z"
constant yearMonthDay (line 376) | yearMonthDay = "20060102"
function extractHeaderNames (line 387) | func extractHeaderNames(kvs []string) []string {
function signedURLV4 (line 397) | func signedURLV4(bucket, name string, opts *SignedURLOptions, now time.T...
function sortHeadersByKey (line 483) | func sortHeadersByKey(hdrs []string) []string {
function signedURLV2 (line 502) | func signedURLV2(bucket, name string, opts *SignedURLOptions) (string, e...
type ObjectHandle (line 551) | type ObjectHandle struct
method ACL (line 566) | func (o *ObjectHandle) ACL() *ACLHandle {
method Generation (line 575) | func (o *ObjectHandle) Generation(gen int64) *ObjectHandle {
method If (line 586) | func (o *ObjectHandle) If(conds Conditions) *ObjectHandle {
method Key (line 597) | func (o *ObjectHandle) Key(encryptionKey []byte) *ObjectHandle {
method Attrs (line 605) | func (o *ObjectHandle) Attrs(ctx context.Context) (attrs *ObjectAttrs,...
method Update (line 637) | func (o *ObjectHandle) Update(ctx context.Context, uattrs ObjectAttrsT...
method BucketName (line 731) | func (o *ObjectHandle) BucketName() string {
method ObjectName (line 736) | func (o *ObjectHandle) ObjectName() string {
method Delete (line 768) | func (o *ObjectHandle) Delete(ctx context.Context) error {
method ReadCompressed (line 794) | func (o *ObjectHandle) ReadCompressed(compressed bool) *ObjectHandle {
method NewWriter (line 815) | func (o *ObjectHandle) NewWriter(ctx context.Context) *Writer {
method validate (line 825) | func (o *ObjectHandle) validate() error {
type ObjectAttrsToUpdate (line 751) | type ObjectAttrsToUpdate struct
function parseKey (line 842) | func parseKey(key []byte) (*rsa.PrivateKey, error) {
type ObjectAttrs (line 884) | type ObjectAttrs struct
method toRawObject (line 861) | func (o *ObjectAttrs) toRawObject(bucket string) *raw.Object {
function convertTime (line 1023) | func convertTime(t string) time.Time {
function newObject (line 1031) | func newObject(o *raw.Object) *ObjectAttrs {
function decodeUint32 (line 1076) | func decodeUint32(b64 string) (uint32, error) {
function encodeUint32 (line 1088) | func encodeUint32(u uint32) string {
type Query (line 1094) | type Query struct
type Conditions (line 1121) | type Conditions struct
method validate (line 1155) | func (c *Conditions) validate(method string) error {
method isGenerationValid (line 1168) | func (c *Conditions) isGenerationValid() bool {
method isMetagenerationValid (line 1182) | func (c *Conditions) isMetagenerationValid() bool {
function applyConds (line 1188) | func applyConds(method string, gen int64, conds *Conditions, call interf...
function applySourceConds (line 1228) | func applySourceConds(gen int64, conds *Conditions, call *raw.ObjectsRew...
function setConditionField (line 1258) | func setConditionField(call reflect.Value, name string, value interface{...
function conditionsQuery (line 1270) | func conditionsQuery(gen int64, conds *Conditions) string {
type composeSourceObj (line 1307) | type composeSourceObj struct
method Generation (line 1311) | func (c composeSourceObj) Generation(gen int64) {
method IfGenerationMatch (line 1315) | func (c composeSourceObj) IfGenerationMatch(gen int64) {
function setEncryptionHeaders (line 1323) | func setEncryptionHeaders(headers http.Header, key []byte, copySource bo...
FILE: vendor/cloud.google.com/go/storage/writer.go
type Writer (line 31) | type Writer struct
method open (line 81) | func (w *Writer) open() error {
method Write (line 181) | func (w *Writer) Write(p []byte) (n int, err error) {
method Close (line 211) | func (w *Writer) Close() error {
method monitorCancel (line 232) | func (w *Writer) monitorCancel() {
method CloseWithError (line 250) | func (w *Writer) CloseWithError(err error) error {
method Attrs (line 259) | func (w *Writer) Attrs() *ObjectAttrs {
FILE: vendor/github.com/JamesClonk/vultr/lib/account_info.go
type AccountInfo (line 10) | type AccountInfo struct
method UnmarshalJSON (line 28) | func (a *AccountInfo) UnmarshalJSON(data []byte) (err error) {
method GetAccountInfo (line 18) | func (c *Client) GetAccountInfo() (info AccountInfo, err error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/applications.go
type Application (line 9) | type Application struct
type applications (line 17) | type applications
method Len (line 19) | func (s applications) Len() int { return len(s) }
method Swap (line 20) | func (s applications) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 21) | func (s applications) Less(i, j int) bool {
method GetApplications (line 26) | func (c *Client) GetApplications() ([]Application, error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/backup.go
type Backup (line 11) | type Backup struct
type backups (line 19) | type backups
method Len (line 21) | func (bs backups) Len() int { return len(bs) }
method Swap (line 22) | func (bs backups) Swap(i, j int) { bs[i], bs[j] = bs[j], bs[i] }
method Less (line 25) | func (bs backups) Less(i, j int) bool {
method GetBackups (line 33) | func (c *Client) GetBackups(id string, backupid string) ([]Backup, error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/bare_metal.go
type BareMetalServer (line 14) | type BareMetalServer struct
method UnmarshalJSON (line 67) | func (b *BareMetalServer) UnmarshalJSON(data []byte) error {
type BareMetalServerOptions (line 37) | type BareMetalServerOptions struct
type bareMetalServers (line 50) | type bareMetalServers
method Len (line 52) | func (b bareMetalServers) Len() int { return len(b) }
method Swap (line 53) | func (b bareMetalServers) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
method Less (line 54) | func (b bareMetalServers) Less(i, j int) bool {
method GetBareMetalServers (line 153) | func (c *Client) GetBareMetalServers() ([]BareMetalServer, error) {
method GetBareMetalServersByTag (line 168) | func (c *Client) GetBareMetalServersByTag(tag string) ([]BareMetalServer...
method GetBareMetalServer (line 183) | func (c *Client) GetBareMetalServer(id string) (BareMetalServer, error) {
method CreateBareMetalServer (line 192) | func (c *Client) CreateBareMetalServer(name string, regionID, planID, os...
method RenameBareMetalServer (line 252) | func (c *Client) RenameBareMetalServer(id, name string) error {
method TagBareMetalServer (line 262) | func (c *Client) TagBareMetalServer(id, tag string) error {
method HaltBareMetalServer (line 272) | func (c *Client) HaltBareMetalServer(id string) error {
method RebootBareMetalServer (line 281) | func (c *Client) RebootBareMetalServer(id string) error {
method ReinstallBareMetalServer (line 290) | func (c *Client) ReinstallBareMetalServer(id string) error {
method ChangeOSofBareMetalServer (line 299) | func (c *Client) ChangeOSofBareMetalServer(id string, osID int) error {
method ListOSforBareMetalServer (line 309) | func (c *Client) ListOSforBareMetalServer(id string) ([]OS, error) {
method DeleteBareMetalServer (line 324) | func (c *Client) DeleteBareMetalServer(id string) error {
method BandwidthOfBareMetalServer (line 333) | func (c *Client) BandwidthOfBareMetalServer(id string) ([]map[string]str...
method ChangeApplicationofBareMetalServer (line 376) | func (c *Client) ChangeApplicationofBareMetalServer(id string, appID str...
method ListApplicationsforBareMetalServer (line 386) | func (c *Client) ListApplicationsforBareMetalServer(id string) ([]Applic...
FILE: vendor/github.com/JamesClonk/vultr/lib/bare_metal_plans.go
type BareMetalPlan (line 9) | type BareMetalPlan struct
type bareMetalPlans (line 22) | type bareMetalPlans
method Len (line 24) | func (b bareMetalPlans) Len() int { return len(b) }
method Swap (line 25) | func (b bareMetalPlans) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
method Less (line 26) | func (b bareMetalPlans) Less(i, j int) bool {
method GetBareMetalPlans (line 57) | func (c *Client) GetBareMetalPlans() ([]BareMetalPlan, error) {
method GetAvailableBareMetalPlansForRegion (line 73) | func (c *Client) GetAvailableBareMetalPlansForRegion(id int) ([]int, err...
FILE: vendor/github.com/JamesClonk/vultr/lib/block_storage.go
type BlockStorage (line 13) | type BlockStorage struct
method UnmarshalJSON (line 46) | func (b *BlockStorage) UnmarshalJSON(data []byte) (err error) {
type blockstorages (line 24) | type blockstorages
method Len (line 26) | func (b blockstorages) Len() int { return len(b) }
method Swap (line 27) | func (b blockstorages) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
method Less (line 28) | func (b blockstorages) Less(i, j int) bool {
method GetBlockStorages (line 107) | func (c *Client) GetBlockStorages() (storages []BlockStorage, err error) {
method GetBlockStorage (line 116) | func (c *Client) GetBlockStorage(id string) (BlockStorage, error) {
method CreateBlockStorage (line 131) | func (c *Client) CreateBlockStorage(name string, regionID, size int) (Bl...
method ResizeBlockStorage (line 150) | func (c *Client) ResizeBlockStorage(id string, size int) error {
method LabelBlockStorage (line 163) | func (c *Client) LabelBlockStorage(id, name string) error {
method AttachBlockStorage (line 176) | func (c *Client) AttachBlockStorage(id, serverID string) error {
method DetachBlockStorage (line 189) | func (c *Client) DetachBlockStorage(id string) error {
method DeleteBlockStorage (line 201) | func (c *Client) DeleteBlockStorage(id string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/client.go
constant Version (line 23) | Version = "2.0.1"
constant APIVersion (line 26) | APIVersion = "v1"
constant DefaultEndpoint (line 29) | DefaultEndpoint = "https://api.vultr.com/"
constant mediaType (line 31) | mediaType = "application/json"
type Client (line 42) | type Client struct
method get (line 131) | func (c *Client) get(path string, data interface{}) error {
method post (line 139) | func (c *Client) post(path string, values url.Values, data interface{}...
method OnRequestCompleted (line 148) | func (c *Client) OnRequestCompleted(rc RequestCompletionCallback) {
method newRequest (line 152) | func (c *Client) newRequest(method string, path string, body io.Reader...
method do (line 175) | func (c *Client) do(req *http.Request, data interface{}) error {
type RequestCompletionCallback (line 66) | type RequestCompletionCallback
type Options (line 69) | type Options struct
function NewClient (line 87) | func NewClient(apiKey string, options *Options) *Client {
function apiPath (line 127) | func apiPath(path string) string {
function backoffDuration (line 242) | func backoffDuration(retryCount int) time.Duration {
function isCodeRetryable (line 254) | func isCodeRetryable(statusCode int) bool {
FILE: vendor/github.com/JamesClonk/vultr/lib/dns.go
type DNSDomain (line 11) | type DNSDomain struct
type dnsdomains (line 16) | type dnsdomains
method Len (line 18) | func (d dnsdomains) Len() int { return len(d) }
method Swap (line 19) | func (d dnsdomains) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
method Less (line 20) | func (d dnsdomains) Less(i, j int) bool {
type DNSRecord (line 25) | type DNSRecord struct
type dnsrecords (line 34) | type dnsrecords
method Len (line 36) | func (d dnsrecords) Len() int { return len(d) }
method Swap (line 37) | func (d dnsrecords) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
method Less (line 38) | func (d dnsrecords) Less(i, j int) bool {
method GetDNSDomains (line 54) | func (c *Client) GetDNSDomains() (domains []DNSDomain, err error) {
method GetDNSRecords (line 63) | func (c *Client) GetDNSRecords(domain string) (records []DNSRecord, err ...
method CreateDNSDomain (line 72) | func (c *Client) CreateDNSDomain(domain, serverIP string) error {
method DeleteDNSDomain (line 85) | func (c *Client) DeleteDNSDomain(domain string) error {
method CreateDNSRecord (line 97) | func (c *Client) CreateDNSRecord(domain, name, rtype, data string, prior...
method UpdateDNSRecord (line 114) | func (c *Client) UpdateDNSRecord(domain string, dnsrecord DNSRecord) err...
method DeleteDNSRecord (line 140) | func (c *Client) DeleteDNSRecord(domain string, recordID int) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/firewall.go
type FirewallGroup (line 14) | type FirewallGroup struct
type FirewallRule (line 25) | type FirewallRule struct
method UnmarshalJSON (line 55) | func (r *FirewallRule) UnmarshalJSON(data []byte) (err error) {
type firewallGroups (line 34) | type firewallGroups
method Len (line 36) | func (f firewallGroups) Len() int { return len(f) }
method Swap (line 37) | func (f firewallGroups) Swap(i, j int) { f[i], f[j] = f[j], f[i] }
method Less (line 38) | func (f firewallGroups) Less(i, j int) bool {
type firewallRules (line 43) | type firewallRules
method Len (line 45) | func (r firewallRules) Len() int { return len(r) }
method Swap (line 46) | func (r firewallRules) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
method Less (line 47) | func (r firewallRules) Less(i, j int) bool {
method GetFirewallGroups (line 107) | func (c *Client) GetFirewallGroups() ([]FirewallGroup, error) {
method GetFirewallGroup (line 122) | func (c *Client) GetFirewallGroup(id string) (FirewallGroup, error) {
method CreateFirewallGroup (line 137) | func (c *Client) CreateFirewallGroup(description string) (string, error) {
method DeleteFirewallGroup (line 154) | func (c *Client) DeleteFirewallGroup(groupID string) error {
method SetFirewallGroupDescription (line 166) | func (c *Client) SetFirewallGroupDescription(groupID, description string...
method GetFirewallRules (line 179) | func (c *Client) GetFirewallRules(groupID string) ([]FirewallRule, error) {
method CreateFirewallRule (line 202) | func (c *Client) CreateFirewallRule(groupID, protocol, port string,
method DeleteFirewallRule (line 248) | func (c *Client) DeleteFirewallRule(ruleNumber int, groupID string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/ip.go
type IPv4 (line 10) | type IPv4 struct
type ipv4s (line 19) | type ipv4s
method Len (line 21) | func (s ipv4s) Len() int { return len(s) }
method Swap (line 22) | func (s ipv4s) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 23) | func (s ipv4s) Less(i, j int) bool {
type IPv6 (line 34) | type IPv6 struct
type ipv6s (line 41) | type ipv6s
method Len (line 43) | func (s ipv6s) Len() int { return len(s) }
method Swap (line 44) | func (s ipv6s) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 45) | func (s ipv6s) Less(i, j int) bool {
type ReverseDNSIPv6 (line 56) | type ReverseDNSIPv6 struct
type reverseDNSIPv6s (line 61) | type reverseDNSIPv6s
method Len (line 63) | func (s reverseDNSIPv6s) Len() int { return len(s) }
method Swap (line 64) | func (s reverseDNSIPv6s) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 65) | func (s reverseDNSIPv6s) Less(i, j int) bool { return s[i].IP < s[j].IP }
method ListIPv4 (line 68) | func (c *Client) ListIPv4(id string) (list []IPv4, err error) {
method CreateIPv4 (line 84) | func (c *Client) CreateIPv4(id string, reboot bool) error {
method DeleteIPv4 (line 97) | func (c *Client) DeleteIPv4(id, ip string) error {
method ListIPv6 (line 110) | func (c *Client) ListIPv6(id string) (list []IPv6, err error) {
method ListIPv6ReverseDNS (line 126) | func (c *Client) ListIPv6ReverseDNS(id string) (list []ReverseDNSIPv6, e...
method DeleteIPv6ReverseDNS (line 142) | func (c *Client) DeleteIPv6ReverseDNS(id string, ip string) error {
method SetIPv6ReverseDNS (line 155) | func (c *Client) SetIPv6ReverseDNS(id, ip, entry string) error {
method DefaultIPv4ReverseDNS (line 169) | func (c *Client) DefaultIPv4ReverseDNS(id, ip string) error {
method SetIPv4ReverseDNS (line 182) | func (c *Client) SetIPv4ReverseDNS(id, ip, entry string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/iso.go
type ISO (line 9) | type ISO struct
type isos (line 17) | type isos
method Len (line 19) | func (s isos) Len() int { return len(s) }
method Swap (line 20) | func (s isos) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 21) | func (s isos) Less(i, j int) bool {
method GetISO (line 32) | func (c *Client) GetISO() ([]ISO, error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/network.go
type Network (line 12) | type Network struct
type networks (line 21) | type networks
method Len (line 23) | func (n networks) Len() int { return len(n) }
method Swap (line 24) | func (n networks) Swap(i, j int) { n[i], n[j] = n[j], n[i] }
method Less (line 25) | func (n networks) Less(i, j int) bool {
method GetNetworks (line 36) | func (c *Client) GetNetworks() (nets []Network, err error) {
method CreateNetwork (line 50) | func (c *Client) CreateNetwork(regionID int, description string, subnet ...
method DeleteNetwork (line 76) | func (c *Client) DeleteNetwork(id string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/os.go
type OS (line 9) | type OS struct
type oses (line 18) | type oses
method Len (line 20) | func (s oses) Len() int { return len(s) }
method Swap (line 21) | func (s oses) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 22) | func (s oses) Less(i, j int) bool { return strings.ToLower(s[i].Name) ...
method GetOS (line 25) | func (c *Client) GetOS() ([]OS, error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/plans.go
type Plan (line 11) | type Plan struct
type plans (line 24) | type plans
method Len (line 26) | func (p plans) Len() int { return len(p) }
method Swap (line 27) | func (p plans) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
method Less (line 28) | func (p plans) Less(i, j int) bool {
method GetPlans (line 59) | func (c *Client) GetPlans() ([]Plan, error) {
method GetAvailablePlansForRegion (line 75) | func (c *Client) GetAvailablePlansForRegion(id int) (planIDs []int, err ...
FILE: vendor/github.com/JamesClonk/vultr/lib/regions.go
type Region (line 6) | type Region struct
type regions (line 17) | type regions
method Len (line 19) | func (s regions) Len() int { return len(s) }
method Swap (line 20) | func (s regions) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 21) | func (s regions) Less(i, j int) bool {
method GetRegions (line 32) | func (c *Client) GetRegions() ([]Region, error) {
FILE: vendor/github.com/JamesClonk/vultr/lib/reservedip.go
type IP (line 13) | type IP struct
method UnmarshalJSON (line 45) | func (i *IP) UnmarshalJSON(data []byte) (err error) {
type ips (line 23) | type ips
method Len (line 25) | func (s ips) Len() int { return len(s) }
method Swap (line 26) | func (s ips) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 27) | func (s ips) Less(i, j int) bool {
method ListReservedIP (line 105) | func (c *Client) ListReservedIP() ([]IP, error) {
method GetReservedIP (line 122) | func (c *Client) GetReservedIP(id string) (IP, error) {
method CreateReservedIP (line 136) | func (c *Client) CreateReservedIP(regionID int, ipType string, label str...
method DestroyReservedIP (line 154) | func (c *Client) DestroyReservedIP(id string) error {
method AttachReservedIP (line 162) | func (c *Client) AttachReservedIP(ip string, serverID string) error {
method DetachReservedIP (line 171) | func (c *Client) DetachReservedIP(serverID string, ip string) error {
method ConvertReservedIP (line 180) | func (c *Client) ConvertReservedIP(serverID string, ip string) (string, ...
FILE: vendor/github.com/JamesClonk/vultr/lib/scripts.go
type StartupScript (line 12) | type StartupScript struct
method UnmarshalJSON (line 29) | func (s *StartupScript) UnmarshalJSON(data []byte) (err error) {
type startupscripts (line 19) | type startupscripts
method Len (line 21) | func (s startupscripts) Len() int { return len(s) }
method Swap (line 22) | func (s startupscripts) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 23) | func (s startupscripts) Less(i, j int) bool {
method GetStartupScripts (line 48) | func (c *Client) GetStartupScripts() (scripts []StartupScript, err error) {
method GetStartupScript (line 65) | func (c *Client) GetStartupScript(id string) (StartupScript, error) {
method CreateStartupScript (line 80) | func (c *Client) CreateStartupScript(name, content, scriptType string) (...
method UpdateStartupScript (line 99) | func (c *Client) UpdateStartupScript(script StartupScript) error {
method DeleteStartupScript (line 117) | func (c *Client) DeleteStartupScript(id string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/servers.go
type Server (line 14) | type Server struct
method UnmarshalJSON (line 101) | func (s *Server) UnmarshalJSON(data []byte) (err error) {
type ServerOptions (line 47) | type ServerOptions struct
type servers (line 66) | type servers
method Len (line 68) | func (s servers) Len() int { return len(s) }
method Swap (line 69) | func (s servers) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 70) | func (s servers) Less(i, j int) bool {
type AppInfo (line 81) | type AppInfo struct
type V6Network (line 86) | type V6Network struct
type ISOStatus (line 93) | type ISOStatus struct
method GetServers (line 229) | func (c *Client) GetServers() (serverList []Server, err error) {
method GetServersByTag (line 243) | func (c *Client) GetServersByTag(tag string) (serverList []Server, err e...
method GetServer (line 257) | func (c *Client) GetServer(id string) (server Server, err error) {
method CreateServer (line 265) | func (c *Client) CreateServer(name string, regionID, planID, osID int, o...
method RenameServer (line 357) | func (c *Client) RenameServer(id, name string) error {
method TagServer (line 370) | func (c *Client) TagServer(id, tag string) error {
method StartServer (line 383) | func (c *Client) StartServer(id string) error {
method HaltServer (line 395) | func (c *Client) HaltServer(id string) error {
method RebootServer (line 407) | func (c *Client) RebootServer(id string) error {
method ReinstallServer (line 419) | func (c *Client) ReinstallServer(id string) error {
method ChangeOSofServer (line 431) | func (c *Client) ChangeOSofServer(id string, osID int) error {
method ListOSforServer (line 444) | func (c *Client) ListOSforServer(id string) (os []OS, err error) {
method AttachISOtoServer (line 458) | func (c *Client) AttachISOtoServer(id string, isoID int) error {
method DetachISOfromServer (line 471) | func (c *Client) DetachISOfromServer(id string) error {
method GetISOStatusofServer (line 483) | func (c *Client) GetISOStatusofServer(id string) (isoStatus ISOStatus, e...
method RestoreBackup (line 491) | func (c *Client) RestoreBackup(id, backupID string) error {
method RestoreSnapshot (line 504) | func (c *Client) RestoreSnapshot(id, snapshotID string) error {
method DeleteServer (line 517) | func (c *Client) DeleteServer(id string) error {
method SetFirewallGroup (line 529) | func (c *Client) SetFirewallGroup(id, firewallgroup string) error {
method UnsetFirewallGroup (line 542) | func (c *Client) UnsetFirewallGroup(id string) error {
method BandwidthOfServer (line 547) | func (c *Client) BandwidthOfServer(id string) (bandwidth []map[string]st...
method ChangeApplicationofServer (line 575) | func (c *Client) ChangeApplicationofServer(id string, appID string) error {
method ListApplicationsforServer (line 588) | func (c *Client) ListApplicationsforServer(id string) (apps []Applicatio...
method GetApplicationInfo (line 602) | func (c *Client) GetApplicationInfo(id string) (appInfo AppInfo, err err...
type PrivateNetwork (line 610) | type PrivateNetwork struct
type privateNetworks (line 616) | type privateNetworks
method Len (line 618) | func (p privateNetworks) Len() int { return len(p) }
method Swap (line 619) | func (p privateNetworks) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
method Less (line 620) | func (p privateNetworks) Less(i, j int) bool {
method ListPrivateNetworksForServer (line 625) | func (c *Client) ListPrivateNetworksForServer(id string) (nets []Private...
method DisablePrivateNetworkForServer (line 639) | func (c *Client) DisablePrivateNetworkForServer(id, networkID string) er...
method EnablePrivateNetworkForServer (line 651) | func (c *Client) EnablePrivateNetworkForServer(id, networkID string) err...
type BackupSchedule (line 664) | type BackupSchedule struct
type BackupScheduleResponse (line 673) | type BackupScheduleResponse struct
method BackupGetSchedule (line 679) | func (c *Client) BackupGetSchedule(id string) (*BackupScheduleResponse, ...
method BackupSetSchedule (line 691) | func (c *Client) BackupSetSchedule(id string, bs BackupSchedule) error {
method ChangePlanOfServer (line 703) | func (c *Client) ChangePlanOfServer(id string, planID int) error {
method ListUpgradePlansForServer (line 717) | func (c *Client) ListUpgradePlansForServer(id string) (planIDs []int, er...
FILE: vendor/github.com/JamesClonk/vultr/lib/snapshots.go
type Snapshot (line 10) | type Snapshot struct
type snapshots (line 20) | type snapshots
method Len (line 22) | func (s snapshots) Len() int { return len(s) }
method Swap (line 23) | func (s snapshots) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 24) | func (s snapshots) Less(i, j int) bool {
method GetSnapshots (line 35) | func (c *Client) GetSnapshots() (snapshotList []Snapshot, err error) {
method CreateSnapshot (line 49) | func (c *Client) CreateSnapshot(id, description string) (Snapshot, error) {
method DeleteSnapshot (line 65) | func (c *Client) DeleteSnapshot(id string) error {
FILE: vendor/github.com/JamesClonk/vultr/lib/sshkeys.go
type SSHKey (line 10) | type SSHKey struct
type sshkeys (line 17) | type sshkeys
method Len (line 19) | func (s sshkeys) Len() int { return len(s) }
method Swap (line 20) | func (s sshkeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
method Less (line 21) | func (s sshkeys) Less(i, j int) bool { return strings.ToLower(s[i].Nam...
method GetSSHKeys (line 24) | func (c *Client) GetSSHKeys() (keys []SSHKey, err error) {
method CreateSSHKey (line 38) | func (c *Client) CreateSSHKey(name, key string) (SSHKey, error) {
method UpdateSSHKey (line 55) | func (c *Client) UpdateSSHKey(key SSHKey) error {
method DeleteSSHKey (line 73) | func (c *Client) DeleteSSHKey(id string) error {
FILE: vendor/github.com/agext/levenshtein/levenshtein.go
function Calculate (line 37) | func Calculate(str1, str2 []rune, maxCost, insCost, subCost, delCost int...
function Distance (line 196) | func Distance(str1, str2 string, p *Params) int {
function Similarity (line 211) | func Similarity(str1, str2 string, p *Params) float64 {
function Match (line 227) | func Match(str1, str2 string, p *Params) float64 {
FILE: vendor/github.com/agext/levenshtein/params.go
type Params (line 19) | type Params struct
method Clone (line 50) | func (p *Params) Clone() *Params {
method InsCost (line 68) | func (p *Params) InsCost(v int) *Params {
method SubCost (line 77) | func (p *Params) SubCost(v int) *Params {
method DelCost (line 86) | func (p *Params) DelCost(v int) *Params {
method MaxCost (line 97) | func (p *Params) MaxCost(v int) *Params {
method MinScore (line 108) | func (p *Params) MinScore(v float64) *Params {
method BonusPrefix (line 118) | func (p *Params) BonusPrefix(v int) *Params {
method BonusScale (line 130) | func (p *Params) BonusScale(v float64) *Params {
method BonusThreshold (line 147) | func (p *Params) BonusThreshold(v float64) *Params {
function NewParams (line 35) | func NewParams() *Params {
FILE: vendor/github.com/apparentlymart/go-cidr/cidr/cidr.go
function Subnet (line 30) | func Subnet(base *net.IPNet, newBits int, num int) (*net.IPNet, error) {
function Host (line 56) | func Host(base *net.IPNet, num int) (net.IP, error) {
function AddressRange (line 84) | func AddressRange(network *net.IPNet) (net.IP, net.IP) {
function AddressCount (line 114) | func AddressCount(network *net.IPNet) uint64 {
function VerifyNoOverlap (line 122) | func VerifyNoOverlap(subnets []*net.IPNet, CIDRBlock *net.IPNet) error {
function PreviousSubnet (line 150) | func PreviousSubnet(network *net.IPNet, prefixLen int) (*net.IPNet, bool) {
function NextSubnet (line 166) | func NextSubnet(network *net.IPNet, prefixLen int) (*net.IPNet, bool) {
function Inc (line 180) | func Inc(IP net.IP) net.IP {
function Dec (line 194) | func Dec(IP net.IP) net.IP {
function checkIPv4 (line 208) | func checkIPv4(ip net.IP) net.IP {
FILE: vendor/github.com/apparentlymart/go-cidr/cidr/wrangling.go
function ipToInt (line 9) | func ipToInt(ip net.IP) (*big.Int, int) {
function intToIP (line 21) | func intToIP(ipInt *big.Int, bits int) net.IP {
function insertNumIntoIP (line 32) | func insertNumIntoIP(ip net.IP, num int, prefixLen int) net.IP {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/all_tokens.go
function AllTokens (line 10) | func AllTokens(buf []byte, splitFunc bufio.SplitFunc) ([][]byte, error) {
function TokenCount (line 22) | func TokenCount(buf []byte, splitFunc bufio.SplitFunc) (int, error) {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/grapheme_clusters.go
constant graphclust_start (line 4937) | graphclust_start int = 1974
constant graphclust_first_final (line 4938) | graphclust_first_final int = 1974
constant graphclust_error (line 4939) | graphclust_error int = 0
constant graphclust_en_main (line 4941) | graphclust_en_main int = 1974
function ScanGraphemeClusters (line 4951) | func ScanGraphemeClusters(data []byte, atEOF bool) (int, []byte, error) {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/make_tables.go
function main (line 46) | func main() {
function openReader (line 68) | func openReader(file string) (input io.ReadCloser) {
function loadUnicodeData (line 89) | func loadUnicodeData(filename string, propertyRanges map[string]*unicode...
constant comment (line 104) | comment = "#"
constant sep (line 105) | sep = ";"
constant rnge (line 106) | rnge = ".."
function parseLine (line 108) | func parseLine(line string, propertyRanges map[string]*unicode.RangeTabl...
function addR16ToTable (line 194) | func addR16ToTable(r *unicode.RangeTable, r16 unicode.Range16) {
function addR32ToTable (line 204) | func addR32ToTable(r *unicode.RangeTable, r32 unicode.Range32) {
function generateTables (line 211) | func generateTables(prefix string, propertyRanges map[string]*unicode.Ra...
function generateRangeTable (line 242) | func generateRangeTable(rt *unicode.RangeTable) string {
constant fileHeader (line 263) | fileHeader = `// Generated by running
function setupOutput (line 274) | func setupOutput() {
function startGofmt (line 279) | func startGofmt() io.Writer {
function flushOutput (line 302) | func flushOutput() {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/make_test_tables.go
function main (line 45) | func main() {
function openReader (line 67) | func openReader(file string) (input io.ReadCloser) {
function loadUnicodeData (line 88) | func loadUnicodeData(filename string, tests []test) []test {
constant comment (line 104) | comment = "#"
constant brk (line 105) | brk = "÷"
constant nbrk (line 106) | nbrk = "×"
type test (line 108) | type test
function parseLine (line 110) | func parseLine(line string, tests []test) []test {
function generateTestTables (line 146) | func generateTestTables(prefix string, tests []test) {
function generateTest (line 157) | func generateTest(t test) string {
constant fileHeader (line 166) | fileHeader = `// Generated by running
constant testHeader (line 173) | testHeader = `var unicode%sTests = []struct {
function setupOutput (line 179) | func setupOutput() {
function startGofmt (line 184) | func startGofmt() io.Writer {
function flushOutput (line 207) | func flushOutput() {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/tables.go
type _GraphemeRuneRange (line 1452) | type _GraphemeRuneRange
method String (line 1494) | func (rng *_GraphemeRuneRange) String() string {
function _GraphemeRuneType (line 1454) | func _GraphemeRuneType(r rune) *_GraphemeRuneRange {
type _WordRuneRange (line 2849) | type _WordRuneRange
method String (line 2899) | func (rng *_WordRuneRange) String() string {
function _WordRuneType (line 2851) | func _WordRuneType(r rune) *_WordRuneRange {
type _SentenceRuneRange (line 5631) | type _SentenceRuneRange
method String (line 5667) | func (rng *_SentenceRuneRange) String() string {
function _SentenceRuneType (line 5633) | func _SentenceRuneType(r rune) *_SentenceRuneRange {
FILE: vendor/github.com/apparentlymart/go-textseg/textseg/utf8_seqs.go
function ScanUTF8Sequences (line 10) | func ScanUTF8Sequences(data []byte, atEOF bool) (int, []byte, error) {
FILE: vendor/github.com/armon/go-radix/radix.go
type WalkFn (line 11) | type WalkFn
type leafNode (line 14) | type leafNode struct
type edge (line 20) | type edge struct
type node (line 25) | type node struct
method isLeaf (line 38) | func (n *node) isLeaf() bool {
method addEdge (line 42) | func (n *node) addEdge(e edge) {
method updateEdge (line 47) | func (n *node) updateEdge(label byte, node *node) {
method getEdge (line 59) | func (n *node) getEdge(label byte) *node {
method delEdge (line 70) | func (n *node) delEdge(label byte) {
method mergeChild (line 339) | func (n *node) mergeChild() {
type edges (line 82) | type edges
method Len (line 84) | func (e edges) Len() int {
method Less (line 88) | func (e edges) Less(i, j int) bool {
method Swap (line 92) | func (e edges) Swap(i, j int) {
method Sort (line 96) | func (e edges) Sort() {
type Tree (line 104) | type Tree struct
method Len (line 125) | func (t *Tree) Len() int {
method Insert (line 147) | func (t *Tree) Insert(s string, v interface{}) (interface{}, bool) {
method Delete (line 237) | func (t *Tree) Delete(s string) (interface{}, bool) {
method DeletePrefix (line 295) | func (t *Tree) DeletePrefix(s string) int {
method deletePrefix (line 300) | func (t *Tree) deletePrefix(parent, n *node, prefix string) int {
method Get (line 349) | func (t *Tree) Get(s string) (interface{}, bool) {
method LongestPrefix (line 379) | func (t *Tree) LongestPrefix(s string) (string, interface{}, bool) {
method Minimum (line 414) | func (t *Tree) Minimum() (string, interface{}, bool) {
method Maximum (line 430) | func (t *Tree) Maximum() (string, interface{}, bool) {
method Walk (line 446) | func (t *Tree) Walk(fn WalkFn) {
method WalkPrefix (line 451) | func (t *Tree) WalkPrefix(prefix string, fn WalkFn) {
method WalkPath (line 486) | func (t *Tree) WalkPath(path string, fn WalkFn) {
method ToMap (line 533) | func (t *Tree) ToMap() map[string]interface{} {
function New (line 110) | func New() *Tree {
function NewFromMap (line 116) | func NewFromMap(m map[string]interface{}) *Tree {
function longestPrefix (line 131) | func longestPrefix(k1, k2 string) int {
function recursiveWalk (line 517) | func recursiveWalk(n *node, fn WalkFn) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go
type Error (line 31) | type Error interface
type BatchError (line 51) | type BatchError interface
type BatchedErrors (line 70) | type BatchedErrors interface
function New (line 82) | func New(code, message string, origErr error) Error {
function NewBatchError (line 92) | func NewBatchError(code, message string, errs []error) BatchedErrors {
type RequestFailure (line 129) | type RequestFailure interface
function NewRequestFailure (line 147) | func NewRequestFailure(err Error, statusCode int, reqID string) RequestF...
type UnmarshalError (line 152) | type UnmarshalError interface
function NewUnmarshalError (line 159) | func NewUnmarshalError(err error, msg string, bytes []byte) UnmarshalErr...
FILE: vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go
function SprintError (line 12) | func SprintError(code, message, extra string, origErr error) string {
type baseError (line 28) | type baseError struct
method Error (line 65) | func (b baseError) Error() string {
method String (line 76) | func (b baseError) String() string {
method Code (line 81) | func (b baseError) Code() string {
method Message (line 86) | func (b baseError) Message() string {
method OrigErr (line 93) | func (b baseError) OrigErr() error {
method OrigErrs (line 110) | func (b baseError) OrigErrs() []error {
function newBaseError (line 50) | func newBaseError(code, message string, origErrs []error) *baseError {
type awsError (line 116) | type awsError
type requestError (line 121) | type requestError struct
method Error (line 146) | func (r requestError) Error() string {
method String (line 154) | func (r requestError) String() string {
method StatusCode (line 159) | func (r requestError) StatusCode() int {
method RequestID (line 164) | func (r requestError) RequestID() string {
method OrigErrs (line 170) | func (r requestError) OrigErrs() []error {
function newRequestError (line 136) | func newRequestError(err Error, statusCode int, requestID string) *reque...
type unmarshalError (line 177) | type unmarshalError struct
method Error (line 184) | func (e unmarshalError) Error() string {
method String (line 191) | func (e unmarshalError) String() string {
method Bytes (line 196) | func (e unmarshalError) Bytes() []byte {
type errorList (line 201) | type errorList
method Error (line 206) | func (e errorList) Error() string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go
function Copy (line 15) | func Copy(dst, src interface{}) {
function CopyOf (line 26) | func CopyOf(src interface{}) (dst interface{}) {
function rcopy (line 37) | func rcopy(dst, src reflect.Value, root bool) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go
function DeepEqual (line 13) | func DeepEqual(a, b interface{}) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go
function rValuesAtPath (line 16) | func rValuesAtPath(v interface{}, path string, createPath, caseSensitive...
function ValuesAtPath (line 158) | func ValuesAtPath(i interface{}, path string) ([]interface{}, error) {
function SetValueAtPath (line 187) | func SetValueAtPath(i interface{}, path string, v interface{}) {
function setValue (line 198) | func setValue(dstVal reflect.Value, src interface{}) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go
function Prettify (line 12) | func Prettify(i interface{}) string {
function prettify (line 20) | func prettify(v reflect.Value, indent int, buf *bytes.Buffer) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
function StringValue (line 11) | func StringValue(i interface{}) string {
function stringValue (line 17) | func stringValue(v reflect.Value, indent int, buf *bytes.Buffer) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/client/client.go
type Config (line 12) | type Config struct
type ConfigProvider (line 28) | type ConfigProvider interface
type ConfigNoResolveEndpointProvider (line 35) | type ConfigNoResolveEndpointProvider interface
type Client (line 41) | type Client struct
method NewRequest (line 83) | func (c *Client) NewRequest(operation *request.Operation, params inter...
method AddDebugHandlers (line 89) | func (c *Client) AddDebugHandlers() {
function New (line 50) | func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Hand...
FILE: vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go
type DefaultRetryer (line 23) | type DefaultRetryer struct
method MaxRetries (line 29) | func (d DefaultRetryer) MaxRetries() int {
method RetryRules (line 34) | func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {
method ShouldRetry (line 58) | func (d DefaultRetryer) ShouldRetry(r *request.Request) bool {
method shouldThrottle (line 72) | func (d DefaultRetryer) shouldThrottle(r *request.Request) bool {
function getRetryDelay (line 87) | func getRetryDelay(r *request.Request) (time.Duration, bool) {
function canUseRetryAfterHeader (line 107) | func canUseRetryAfterHeader(r *request.Request) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/client/logger.go
constant logReqMsg (line 14) | logReqMsg = `DEBUG: Request %s/%s Details:
constant logReqErrMsg (line 19) | logReqErrMsg = `DEBUG ERROR: Request %s/%s:
type logWriter (line 24) | type logWriter struct
method Write (line 31) | func (logger *logWriter) Write(b []byte) (int, error) {
type teeReaderCloser (line 35) | type teeReaderCloser struct
method Close (line 43) | func (reader *teeReaderCloser) Close() error {
function logRequest (line 55) | func logRequest(r *request.Request) {
function logRequestHeader (line 88) | func logRequestHeader(r *request.Request) {
constant logRespMsg (line 100) | logRespMsg = `DEBUG: Response %s/%s Details:
constant logRespErrMsg (line 105) | logRespErrMsg = `DEBUG ERROR: Response %s/%s:
function logResponse (line 118) | func logResponse(r *request.Request) {
function logResponseHeader (line 176) | func logResponseHeader(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go
type ClientInfo (line 4) | type ClientInfo struct
FILE: vendor/github.com/aws/aws-sdk-go/aws/config.go
constant UseServiceDefaultRetries (line 14) | UseServiceDefaultRetries = -1
type RequestRetryer (line 18) | type RequestRetryer interface
type Config (line 33) | type Config struct
method WithCredentialsChainVerboseErrors (line 270) | func (c *Config) WithCredentialsChainVerboseErrors(verboseErrs bool) *...
method WithCredentials (line 277) | func (c *Config) WithCredentials(creds *credentials.Credentials) *Conf...
method WithEndpoint (line 284) | func (c *Config) WithEndpoint(endpoint string) *Config {
method WithEndpointResolver (line 291) | func (c *Config) WithEndpointResolver(resolver endpoints.Resolver) *Co...
method WithRegion (line 298) | func (c *Config) WithRegion(region string) *Config {
method WithDisableSSL (line 305) | func (c *Config) WithDisableSSL(disable bool) *Config {
method WithHTTPClient (line 312) | func (c *Config) WithHTTPClient(client *http.Client) *Config {
method WithMaxRetries (line 319) | func (c *Config) WithMaxRetries(max int) *Config {
method WithDisableParamValidation (line 326) | func (c *Config) WithDisableParamValidation(disable bool) *Config {
method WithDisableComputeChecksums (line 333) | func (c *Config) WithDisableComputeChecksums(disable bool) *Config {
method WithLogLevel (line 340) | func (c *Config) WithLogLevel(level LogLevelType) *Config {
method WithLogger (line 347) | func (c *Config) WithLogger(logger Logger) *Config {
method WithS3ForcePathStyle (line 354) | func (c *Config) WithS3ForcePathStyle(force bool) *Config {
method WithS3Disable100Continue (line 361) | func (c *Config) WithS3Disable100Continue(disable bool) *Config {
method WithS3UseAccelerate (line 368) | func (c *Config) WithS3UseAccelerate(enable bool) *Config {
method WithS3DisableContentMD5Validation (line 376) | func (c *Config) WithS3DisableContentMD5Validation(enable bool) *Config {
method WithUseDualStack (line 384) | func (c *Config) WithUseDualStack(enable bool) *Config {
method WithEC2MetadataDisableTimeoutOverride (line 391) | func (c *Config) WithEC2MetadataDisableTimeoutOverride(enable bool) *C...
method WithSleepDelay (line 398) | func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {
method WithEndpointDiscovery (line 404) | func (c *Config) WithEndpointDiscovery(t bool) *Config {
method WithDisableEndpointHostPrefix (line 411) | func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {
method MergeIn (line 417) | func (c *Config) MergeIn(cfgs ...*Config) {
method Copy (line 527) | func (c *Config) Copy(cfgs ...*Config) *Config {
function NewConfig (line 264) | func NewConfig() *Config {
function mergeInConfig (line 423) | func mergeInConfig(dst *Config, other *Config) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go
type Context (line 12) | type Context interface
FILE: vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go
type emptyCtx (line 13) | type emptyCtx
method Deadline (line 15) | func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
method Done (line 19) | func (*emptyCtx) Done() <-chan struct{} {
method Err (line 23) | func (*emptyCtx) Err() error {
method Value (line 27) | func (*emptyCtx) Value(key interface{}) interface{} {
method String (line 31) | func (e *emptyCtx) String() string {
function BackgroundContext (line 54) | func BackgroundContext() Context {
FILE: vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go
function BackgroundContext (line 18) | func BackgroundContext() Context {
FILE: vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go
function SleepWithContext (line 12) | func SleepWithContext(ctx Context, dur time.Duration) error {
FILE: vendor/github.com/aws/aws-sdk-go/aws/convert_types.go
function String (line 6) | func String(v string) *string {
function StringValue (line 12) | func StringValue(v *string) string {
function StringSlice (line 21) | func StringSlice(src []string) []*string {
function StringValueSlice (line 31) | func StringValueSlice(src []*string) []string {
function StringMap (line 43) | func StringMap(src map[string]string) map[string]*string {
function StringValueMap (line 54) | func StringValueMap(src map[string]*string) map[string]string {
function Bool (line 65) | func Bool(v bool) *bool {
function BoolValue (line 71) | func BoolValue(v *bool) bool {
function BoolSlice (line 80) | func BoolSlice(src []bool) []*bool {
function BoolValueSlice (line 90) | func BoolValueSlice(src []*bool) []bool {
function BoolMap (line 102) | func BoolMap(src map[string]bool) map[string]*bool {
function BoolValueMap (line 113) | func BoolValueMap(src map[string]*bool) map[string]bool {
function Int (line 124) | func Int(v int) *int {
function IntValue (line 130) | func IntValue(v *int) int {
function IntSlice (line 139) | func IntSlice(src []int) []*int {
function IntValueSlice (line 149) | func IntValueSlice(src []*int) []int {
function IntMap (line 161) | func IntMap(src map[string]int) map[string]*int {
function IntValueMap (line 172) | func IntValueMap(src map[string]*int) map[string]int {
function Int64 (line 183) | func Int64(v int64) *int64 {
function Int64Value (line 189) | func Int64Value(v *int64) int64 {
function Int64Slice (line 198) | func Int64Slice(src []int64) []*int64 {
function Int64ValueSlice (line 208) | func Int64ValueSlice(src []*int64) []int64 {
function Int64Map (line 220) | func Int64Map(src map[string]int64) map[string]*int64 {
function Int64ValueMap (line 231) | func Int64ValueMap(src map[string]*int64) map[string]int64 {
function Float64 (line 242) | func Float64(v float64) *float64 {
function Float64Value (line 248) | func Float64Value(v *float64) float64 {
function Float64Slice (line 257) | func Float64Slice(src []float64) []*float64 {
function Float64ValueSlice (line 267) | func Float64ValueSlice(src []*float64) []float64 {
function Float64Map (line 279) | func Float64Map(src map[string]float64) map[string]*float64 {
function Float64ValueMap (line 290) | func Float64ValueMap(src map[string]*float64) map[string]float64 {
function Time (line 301) | func Time(v time.Time) *time.Time {
function TimeValue (line 307) | func TimeValue(v *time.Time) time.Time {
function SecondsTimeValue (line 316) | func SecondsTimeValue(v *int64) time.Time {
function MillisecondsTimeValue (line 325) | func MillisecondsTimeValue(v *int64) time.Time {
function TimeUnixMilli (line 340) | func TimeUnixMilli(t time.Time) int64 {
function TimeSlice (line 346) | func TimeSlice(src []time.Time) []*time.Time {
function TimeValueSlice (line 356) | func TimeValueSlice(src []*time.Time) []time.Time {
function TimeMap (line 368) | func TimeMap(src map[string]time.Time) map[string]*time.Time {
function TimeValueMap (line 379) | func TimeValueMap(src map[string]*time.Time) map[string]time.Time {
FILE: vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
type lener (line 20) | type lener interface
function sendFollowRedirects (line 119) | func sendFollowRedirects(r *request.Request) (*http.Response, error) {
function sendWithoutFollowRedirects (line 123) | func sendWithoutFollowRedirects(r *request.Request) (*http.Response, err...
function handleSendError (line 132) | func handleSendError(r *request.Request, err error) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
constant execEnvVar (line 19) | execEnvVar = `AWS_EXECUTION_ENV`
constant execEnvUAKey (line 20) | execEnvUAKey = `exec-env`
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go
type ChainProvider (line 53) | type ChainProvider struct
method Retrieve (line 72) | func (c *ChainProvider) Retrieve() (Value, error) {
method IsExpired (line 94) | func (c *ChainProvider) IsExpired() bool {
function NewChainCredentials (line 61) | func NewChainCredentials(providers []Provider) *Credentials {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
type Value (line 72) | type Value struct
type Provider (line 92) | type Provider interface
type Expirer (line 105) | type Expirer interface
type ErrorProvider (line 113) | type ErrorProvider struct
method Retrieve (line 122) | func (p ErrorProvider) Retrieve() (Value, error) {
method IsExpired (line 127) | func (p ErrorProvider) IsExpired() bool {
type Expiry (line 142) | type Expiry struct
method SetExpiration (line 160) | func (e *Expiry) SetExpiration(expiration time.Time, window time.Durat...
method IsExpired (line 168) | func (e *Expiry) IsExpired() bool {
method ExpiresAt (line 177) | func (e *Expiry) ExpiresAt() time.Time {
type Credentials (line 192) | type Credentials struct
method Get (line 218) | func (c *Credentials) Get() (Value, error) {
method Expire (line 250) | func (c *Credentials) Expire() {
method IsExpired (line 262) | func (c *Credentials) IsExpired() bool {
method isExpired (line 270) | func (c *Credentials) isExpired() bool {
method ExpiresAt (line 277) | func (c *Credentials) ExpiresAt() (time.Time, error) {
function NewCredentials (line 202) | func NewCredentials(provider Provider) *Credentials {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go
constant ProviderName (line 19) | ProviderName = "EC2RoleProvider"
type EC2RoleProvider (line 38) | type EC2RoleProvider struct
method Retrieve (line 89) | func (m *EC2RoleProvider) Retrieve() (credentials.Value, error) {
function NewCredentials (line 59) | func NewCredentials(c client.ConfigProvider, options ...func(*EC2RolePro...
function NewCredentialsWithClient (line 74) | func NewCredentialsWithClient(client *ec2metadata.EC2Metadata, options ....
type ec2RoleCredRespBody (line 117) | type ec2RoleCredRespBody struct
constant iamSecurityCredsPath (line 129) | iamSecurityCredsPath = "iam/security-credentials/"
function requestCredList (line 133) | func requestCredList(client *ec2metadata.EC2Metadata) ([]string, error) {
function requestCred (line 157) | func requestCred(client *ec2metadata.EC2Metadata, credsName string) (ec2...
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go
constant ProviderName (line 46) | ProviderName = `CredentialsEndpointProvider`
type Provider (line 50) | type Provider struct
method IsExpired (line 109) | func (p *Provider) IsExpired() bool {
method Retrieve (line 118) | func (p *Provider) Retrieve() (credentials.Value, error) {
method getCredentials (line 151) | func (p *Provider) getCredentials() (*getCredentialsOutput, error) {
function NewProviderClient (line 77) | func NewProviderClient(cfg aws.Config, handlers request.Handlers, endpoi...
function NewCredentialsClient (line 103) | func NewCredentialsClient(cfg aws.Config, handlers request.Handlers, end...
type getCredentialsOutput (line 139) | type getCredentialsOutput struct
type errorOutput (line 146) | type errorOutput struct
function validateEndpointHandler (line 167) | func validateEndpointHandler(r *request.Request) {
function unmarshalHandler (line 173) | func unmarshalHandler(r *request.Request) {
function unmarshalError (line 185) | func unmarshalError(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
constant EnvProviderName (line 10) | EnvProviderName = "EnvProvider"
type EnvProvider (line 30) | type EnvProvider struct
method Retrieve (line 41) | func (e *EnvProvider) Retrieve() (Value, error) {
method IsExpired (line 72) | func (e *EnvProvider) IsExpired() bool {
function NewEnvCredentials (line 36) | func NewEnvCredentials() *Credentials {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go
constant ProviderName (line 98) | ProviderName = `ProcessProvider`
constant ErrCodeProcessProviderParse (line 101) | ErrCodeProcessProviderParse = "ProcessProviderParseError"
constant ErrCodeProcessProviderVersion (line 104) | ErrCodeProcessProviderVersion = "ProcessProviderVersionError"
constant ErrCodeProcessProviderRequired (line 107) | ErrCodeProcessProviderRequired = "ProcessProviderRequiredError"
constant ErrCodeProcessProviderExecution (line 110) | ErrCodeProcessProviderExecution = "ProcessProviderExecutionError"
constant errMsgProcessProviderTimeout (line 113) | errMsgProcessProviderTimeout = "credential process timed out"
constant errMsgProcessProviderProcess (line 116) | errMsgProcessProviderProcess = "error in credential_process"
constant errMsgProcessProviderParse (line 119) | errMsgProcessProviderParse = "parse failed of credential_process output"
constant errMsgProcessProviderVersion (line 122) | errMsgProcessProviderVersion = "wrong version in process output (not 1)"
constant errMsgProcessProviderMissKey (line 125) | errMsgProcessProviderMissKey = "missing AccessKeyId in process output"
constant errMsgProcessProviderMissSecret (line 128) | errMsgProcessProviderMissSecret = "missing SecretAccessKey in process ou...
constant errMsgProcessProviderPrepareCmd (line 131) | errMsgProcessProviderPrepareCmd = "failed to prepare command"
constant errMsgProcessProviderEmptyCmd (line 134) | errMsgProcessProviderEmptyCmd = "command must not be empty"
constant errMsgProcessProviderPipe (line 137) | errMsgProcessProviderPipe = "failed to initialize pipe"
constant DefaultDuration (line 141) | DefaultDuration = time.Duration(15) * time.Minute
constant DefaultBufSize (line 145) | DefaultBufSize = 1024
constant DefaultTimeout (line 148) | DefaultTimeout = time.Duration(1) * time.Minute
type ProcessProvider (line 153) | type ProcessProvider struct
method Retrieve (line 237) | func (p *ProcessProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 289) | func (p *ProcessProvider) IsExpired() bool {
method prepareCommand (line 297) | func (p *ProcessProvider) prepareCommand() error {
method executeCredentialProcess (line 331) | func (p *ProcessProvider) executeCredentialProcess() ([]byte, error) {
function NewCredentials (line 186) | func NewCredentials(command string, options ...func(*ProcessProvider)) *...
function NewCredentialsTimeout (line 203) | func NewCredentialsTimeout(command string, timeout time.Duration) *crede...
function NewCredentialsCommand (line 213) | func NewCredentialsCommand(command *exec.Cmd, options ...func(*ProcessPr...
type credentialProcessResponse (line 228) | type credentialProcessResponse struct
function appendError (line 398) | func appendError(errors []error, err error) []error {
function executeCommand (line 405) | func executeCommand(cmd exec.Cmd, exec chan error) {
function readInput (line 415) | func readInput(r io.Reader, w io.Writer, read chan error) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go
constant SharedCredsProviderName (line 13) | SharedCredsProviderName = "SharedCredentialsProvider"
type SharedCredentialsProvider (line 24) | type SharedCredentialsProvider struct
method Retrieve (line 53) | func (p *SharedCredentialsProvider) Retrieve() (Value, error) {
method IsExpired (line 71) | func (p *SharedCredentialsProvider) IsExpired() bool {
method filename (line 117) | func (p *SharedCredentialsProvider) filename() (string, error) {
method profile (line 141) | func (p *SharedCredentialsProvider) profile() string {
function NewSharedCredentials (line 44) | func NewSharedCredentials(filename, profile string) *Credentials {
function loadProfile (line 78) | func loadProfile(filename, profile string) (Value, error) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go
constant StaticProviderName (line 8) | StaticProviderName = "StaticProvider"
type StaticProvider (line 17) | type StaticProvider struct
method Retrieve (line 39) | func (s *StaticProvider) Retrieve() (Value, error) {
method IsExpired (line 53) | func (s *StaticProvider) IsExpired() bool {
function NewStaticCredentials (line 23) | func NewStaticCredentials(id, secret, token string) *Credentials {
function NewStaticCredentialsFromCreds (line 34) | func NewStaticCredentialsFromCreds(creds Value) *Credentials {
FILE: vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
function StdinTokenProvider (line 105) | func StdinTokenProvider() (string, error) {
constant ProviderName (line 114) | ProviderName = "AssumeRoleProvider"
type AssumeRoler (line 117) | type AssumeRoler interface
type AssumeRoleProvider (line 135) | type AssumeRoleProvider struct
method Retrieve (line 260) | func (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) {
function NewCredentials (line 222) | func NewCredentials(c client.ConfigProvider, roleARN string, options ......
function NewCredentialsWithClient (line 245) | func NewCredentialsWithClient(svc AssumeRoler, roleARN string, options ....
FILE: vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go
constant APICallMetricHandlerName (line 14) | APICallMetricHandlerName = "awscsm.SendAPICallMetric"
constant APICallAttemptMetricHandlerName (line 15) | APICallAttemptMetricHandlerName = "awscsm.SendAPICallAttemptMetric"
function Start (line 36) | func Start(clientID string, url string) (*Reporter, error) {
function Get (line 62) | func Get() *Reporter {
FILE: vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
type metricTime (line 10) | type metricTime
method MarshalJSON (line 12) | func (t metricTime) MarshalJSON() ([]byte, error) {
type metric (line 17) | type metric struct
method TruncateFields (line 63) | func (m *metric) TruncateFields() {
method SetException (line 89) | func (m *metric) SetException(e metricException) {
method SetFinalException (line 100) | func (m *metric) SetFinalException(e metricException) {
function truncateString (line 80) | func truncateString(v *string, l int) *string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go
constant runningEnum (line 8) | runningEnum = iota
constant pausedEnum (line 9) | pausedEnum
type metricChan (line 17) | type metricChan struct
method Pause (line 28) | func (ch *metricChan) Pause() {
method Continue (line 32) | func (ch *metricChan) Continue() {
method IsPaused (line 36) | func (ch *metricChan) IsPaused() bool {
method Push (line 43) | func (ch *metricChan) Push(m metric) bool {
function newMetricChan (line 22) | func newMetricChan(size int) metricChan {
FILE: vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go
type metricException (line 3) | type metricException interface
type requestException (line 8) | type requestException struct
method Exception (line 13) | func (e requestException) Exception() string {
method Message (line 16) | func (e requestException) Message() string {
type awsException (line 20) | type awsException struct
type sdkException (line 24) | type sdkException struct
FILE: vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
constant DefaultPort (line 15) | DefaultPort = "31000"
type Reporter (line 20) | type Reporter struct
method sendAPICallAttemptMetric (line 54) | func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) {
method sendAPICallMetric (line 111) | func (rep *Reporter) sendAPICallMetric(r *request.Request) {
method connect (line 148) | func (rep *Reporter) connect(network, url string) error {
method close (line 163) | func (rep *Reporter) close() {
method start (line 171) | func (rep *Reporter) start() {
method Pause (line 195) | func (rep *Reporter) Pause() {
method Continue (line 208) | func (rep *Reporter) Continue() {
method InjectHandlers (line 237) | func (rep *Reporter) InjectHandlers(handlers *request.Handlers) {
function connect (line 32) | func connect(url string) error {
function newReporter (line 46) | func newReporter(clientID, url string) *Reporter {
function getMetricException (line 93) | func getMetricException(err awserr.Error) metricException {
function boolIntValue (line 254) | func boolIntValue(b bool) int {
FILE: vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
type Defaults (line 31) | type Defaults struct
function Get (line 37) | func Get() Defaults {
function Config (line 55) | func Config() *aws.Config {
function Handlers (line 71) | func Handlers() request.Handlers {
function CredChain (line 93) | func CredChain(cfg *aws.Config, handlers request.Handlers) *credentials....
function CredProviders (line 107) | func CredProviders(cfg *aws.Config, handlers request.Handlers) []credent...
constant httpProviderAuthorizationEnvVar (line 116) | httpProviderAuthorizationEnvVar = "AWS_CONTAINER_AUTHORIZATION_TOKEN"
constant httpProviderEnvVar (line 117) | httpProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_FULL_URI"
function RemoteCredProvider (line 122) | func RemoteCredProvider(cfg aws.Config, handlers request.Handlers) crede...
function isLoopbackHost (line 137) | func isLoopbackHost(host string) (bool, error) {
function localHTTPCredProvider (line 157) | func localHTTPCredProvider(cfg aws.Config, handlers request.Handlers, u ...
function httpCredProvider (line 187) | func httpCredProvider(cfg aws.Config, handlers request.Handlers, u strin...
function ec2RoleProvider (line 196) | func ec2RoleProvider(cfg aws.Config, handlers request.Handlers) credenti...
FILE: vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go
function SharedCredentialsFilename (line 14) | func SharedCredentialsFilename() string {
function SharedConfigFilename (line 25) | func SharedConfigFilename() string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
method GetMetadata (line 18) | func (c *EC2Metadata) GetMetadata(p string) (string, error) {
method GetUserData (line 35) | func (c *EC2Metadata) GetUserData() (string, error) {
method GetDynamicData (line 57) | func (c *EC2Metadata) GetDynamicData(p string) (string, error) {
method GetInstanceIdentityDocument (line 74) | func (c *EC2Metadata) GetInstanceIdentityDocument() (EC2InstanceIdentity...
method IAMInfo (line 93) | func (c *EC2Metadata) IAMInfo() (EC2IAMInfo, error) {
method Region (line 118) | func (c *EC2Metadata) Region() (string, error) {
method Available (line 135) | func (c *EC2Metadata) Available() bool {
type EC2IAMInfo (line 145) | type EC2IAMInfo struct
type EC2InstanceIdentityDocument (line 154) | type EC2InstanceIdentityDocument struct
FILE: vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
constant ServiceName (line 28) | ServiceName = "ec2metadata"
constant disableServiceEnvVar (line 29) | disableServiceEnvVar = "AWS_EC2_METADATA_DISABLED"
type EC2Metadata (line 32) | type EC2Metadata struct
function New (line 46) | func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata {
function NewClient (line 58) | func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, sign...
function httpClientZero (line 114) | func httpClientZero(c *http.Client) bool {
type metadataOutput (line 118) | type metadataOutput struct
function unmarshalHandler (line 122) | func unmarshalHandler(r *request.Request) {
function unmarshalError (line 135) | func unmarshalError(r *request.Request) {
function validateEndpointHandler (line 148) | func validateEndpointHandler(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
type modelDefinition (line 11) | type modelDefinition
type DecodeModelOptions (line 15) | type DecodeModelOptions struct
method Set (line 20) | func (d *DecodeModelOptions) Set(optFns ...func(*DecodeModelOptions)) {
function DecodeModel (line 40) | func DecodeModel(r io.Reader, optFns ...func(*DecodeModelOptions)) (Reso...
function decodeV3Endpoints (line 66) | func decodeV3Endpoints(modelDef modelDefinition, opts DecodeModelOptions...
function custAddS3DualStack (line 94) | func custAddS3DualStack(p *partition) {
function custAddDualstack (line 103) | func custAddDualstack(p *partition, svcName string) {
function custAddEC2Metadata (line 115) | func custAddEC2Metadata(p *partition) {
function custRmIotDataService (line 128) | func custRmIotDataService(p *partition) {
function custFixAppAutoscalingChina (line 132) | func custFixAppAutoscalingChina(p *partition) {
function custFixAppAutoscalingUsGov (line 153) | func custFixAppAutoscalingUsGov(p *partition) {
type decodeModelError (line 180) | type decodeModelError struct
function newDecodeModelError (line 184) | func newDecodeModelError(msg string, err error) decodeModelError {
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
constant AwsPartitionID (line 11) | AwsPartitionID = "aws"
constant AwsCnPartitionID (line 12) | AwsCnPartitionID = "aws-cn"
constant AwsUsGovPartitionID (line 13) | AwsUsGovPartitionID = "aws-us-gov"
constant ApEast1RegionID (line 18) | ApEast1RegionID = "ap-east-1"
constant ApNortheast1RegionID (line 19) | ApNortheast1RegionID = "ap-northeast-1"
constant ApNortheast2RegionID (line 20) | ApNortheast2RegionID = "ap-northeast-2"
constant ApSouth1RegionID (line 21) | ApSouth1RegionID = "ap-south-1"
constant ApSoutheast1RegionID (line 22) | ApSoutheast1RegionID = "ap-southeast-1"
constant ApSoutheast2RegionID (line 23) | ApSoutheast2RegionID = "ap-southeast-2"
constant CaCentral1RegionID (line 24) | CaCentral1RegionID = "ca-central-1"
constant EuCentral1RegionID (line 25) | EuCentral1RegionID = "eu-central-1"
constant EuNorth1RegionID (line 26) | EuNorth1RegionID = "eu-north-1"
constant EuWest1RegionID (line 27) | EuWest1RegionID = "eu-west-1"
constant EuWest2RegionID (line 28) | EuWest2RegionID = "eu-west-2"
constant EuWest3RegionID (line 29) | EuWest3RegionID = "eu-west-3"
constant SaEast1RegionID (line 30) | SaEast1RegionID = "sa-east-1"
constant UsEast1RegionID (line 31) | UsEast1RegionID = "us-east-1"
constant UsEast2RegionID (line 32) | UsEast2RegionID = "us-east-2"
constant UsWest1RegionID (line 33) | UsWest1RegionID = "us-west-1"
constant UsWest2RegionID (line 34) | UsWest2RegionID = "us-west-2"
constant CnNorth1RegionID (line 39) | CnNorth1RegionID = "cn-north-1"
constant CnNorthwest1RegionID (line 40) | CnNorthwest1RegionID = "cn-northwest-1"
constant UsGovEast1RegionID (line 45) | UsGovEast1RegionID = "us-gov-east-1"
constant UsGovWest1RegionID (line 46) | UsGovWest1RegionID = "us-gov-west-1"
function DefaultResolver (line 53) | func DefaultResolver() Resolver {
function DefaultPartitions (line 64) | func DefaultPartitions() []Partition {
function AwsPartition (line 75) | func AwsPartition() Partition {
function AwsCnPartition (line 3342) | func AwsCnPartition() Partition {
function AwsUsGovPartition (line 3801) | func AwsUsGovPartition() Partition {
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go
constant A4bServiceID (line 8) | A4bServiceID = "a4b"
constant AcmServiceID (line 9) | AcmServiceID = "acm"
constant AcmPcaServiceID (line 10) | AcmPcaServiceID = "acm-pca"
constant ApiMediatailorServiceID (line 11) | ApiMediatailorServiceID = "api.mediatailor"
constant ApiPricingServiceID (line 12) | ApiPricingServiceID = "api.pricing"
constant ApiSagemakerServiceID (line 13) | ApiSagemakerServiceID = "api.sagemaker"
constant ApigatewayServiceID (line 14) | ApigatewayServiceID = "apigateway"
constant ApplicationAutoscalingServiceID (line 15) | ApplicationAutoscalingServiceID = "application-autoscaling"
constant Appstream2ServiceID (line 16) | Appstream2ServiceID = "appstream2"
constant AppsyncServiceID (line 17) | AppsyncServiceID = "appsync"
constant AthenaServiceID (line 18) | AthenaServiceID = "athena"
constant AutoscalingServiceID (line 19) | AutoscalingServiceID = "autoscaling"
constant AutoscalingPlansServiceID (line 20) | AutoscalingPlansServiceID = "autoscaling-plans"
constant BatchServiceID (line 21) | BatchServiceID = "batch"
constant BudgetsServiceID (line 22) | BudgetsServiceID = "budgets"
constant CeServiceID (line 23) | CeServiceID = "ce"
constant ChimeServiceID (line 24) | ChimeServiceID = "chime"
constant Cloud9ServiceID (line 25) | Cloud9ServiceID = "cloud9"
constant ClouddirectoryServiceID (line 26) | ClouddirectoryServiceID = "clouddirectory"
constant CloudformationServiceID (line 27) | CloudformationServiceID = "cloudformation"
constant CloudfrontServiceID (line 28) | CloudfrontServiceID = "cloudfront"
constant CloudhsmServiceID (line 29) | CloudhsmServiceID = "cloudhsm"
constant Cloudhsmv2ServiceID (line 30) | Cloudhsmv2ServiceID = "cloudhsmv2"
constant CloudsearchServiceID (line 31) | CloudsearchServiceID = "cloudsearch"
constant CloudtrailServiceID (line 32) | CloudtrailServiceID = "cloudtrail"
constant CodebuildServiceID (line 33) | CodebuildServiceID = "codebuild"
constant CodecommitServiceID (line 34) | CodecommitServiceID = "codecommit"
constant CodedeployServiceID (line 35) | CodedeployServiceID = "codedeploy"
constant CodepipelineServiceID (line 36) | CodepipelineServiceID = "codepipeline"
constant CodestarServiceID (line 37) | CodestarServiceID = "codestar"
constant CognitoIdentityServiceID (line 38) | CognitoIdentityServiceID = "cognito-identity"
constant CognitoIdpServiceID (line 39) | CognitoIdpServiceID = "cognito-idp"
constant CognitoSyncServiceID (line 40) | CognitoSyncServiceID = "cognito-sync"
constant ComprehendServiceID (line 41) | ComprehendServiceID = "comprehend"
constant ConfigServiceID (line 42) | ConfigServiceID = "config"
constant CurServiceID (line 43) | CurServiceID = "cur"
constant DatapipelineServiceID (line 44) | DatapipelineServiceID = "datapipeline"
constant DaxServiceID (line 45) | DaxServiceID = "dax"
constant DevicefarmServiceID (line 46) | DevicefarmServiceID = "devicefarm"
constant DirectconnectServiceID (line 47) | DirectconnectServiceID = "directconnect"
constant DiscoveryServiceID (line 48) | DiscoveryServiceID = "discovery"
constant DmsServiceID (line 49) | DmsServiceID = "dms"
constant DsServiceID (line 50) | DsServiceID = "ds"
constant DynamodbServiceID (line 51) | DynamodbServiceID = "dynamodb"
constant Ec2ServiceID (line 52) | Ec2ServiceID = "ec2"
constant Ec2metadataServiceID (line 53) | Ec2metadataServiceID = "ec2metadata"
constant EcrServiceID (line 54) | EcrServiceID = "ecr"
constant EcsServiceID (line 55) | EcsServiceID = "ecs"
constant ElasticacheServiceID (line 56) | ElasticacheServiceID = "elasticache"
constant ElasticbeanstalkServiceID (line 57) | ElasticbeanstalkServiceID = "elasticbeanstalk"
constant ElasticfilesystemServiceID (line 58) | ElasticfilesystemServiceID = "elasticfilesystem"
constant ElasticloadbalancingServiceID (line 59) | ElasticloadbalancingServiceID = "elasticloadbalancing"
constant ElasticmapreduceServiceID (line 60) | ElasticmapreduceServiceID = "elasticmapreduce"
constant ElastictranscoderServiceID (line 61) | ElastictranscoderServiceID = "elastictranscoder"
constant EmailServiceID (line 62) | EmailServiceID = "email"
constant EntitlementMarketplaceServiceID (line 63) | EntitlementMarketplaceServiceID = "entitlement.marketplace"
constant EsServiceID (line 64) | EsServiceID = "es"
constant EventsServiceID (line 65) | EventsServiceID = "events"
constant FirehoseServiceID (line 66) | FirehoseServiceID = "firehose"
constant FmsServiceID (line 67) | FmsServiceID = "fms"
constant GameliftServiceID (line 68) | GameliftServiceID = "gamelift"
constant GlacierServiceID (line 69) | GlacierServiceID = "glacier"
constant GlueServiceID (line 70) | GlueServiceID = "glue"
constant GreengrassServiceID (line 71) | GreengrassServiceID = "greengrass"
constant GuarddutyServiceID (line 72) | GuarddutyServiceID = "guardduty"
constant HealthServiceID (line 73) | HealthServiceID = "health"
constant IamServiceID (line 74) | IamServiceID = "iam"
constant ImportexportServiceID (line 75) | ImportexportServiceID = "importexport"
constant InspectorServiceID (line 76) | InspectorServiceID = "inspector"
constant IotServiceID (line 77) | IotServiceID = "iot"
constant IotanalyticsServiceID (line 78) | IotanalyticsServiceID = "iotanalytics"
constant KinesisServiceID (line 79) | KinesisServiceID = "kinesis"
constant KinesisanalyticsServiceID (line 80) | KinesisanalyticsServiceID = "kinesisanalytics"
constant KinesisvideoServiceID (line 81) | KinesisvideoServiceID = "kinesisvideo"
constant KmsServiceID (line 82) | KmsServiceID = "kms"
constant LambdaServiceID (line 83) | LambdaServiceID = "lambda"
constant LightsailServiceID (line 84) | LightsailServiceID = "lightsail"
constant LogsServiceID (line 85) | LogsServiceID = "logs"
constant MachinelearningServiceID (line 86) | MachinelearningServiceID = "machinelearning"
constant MarketplacecommerceanalyticsServiceID (line 87) | MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics"
constant MediaconvertServiceID (line 88) | MediaconvertServiceID = "mediaconvert"
constant MedialiveServiceID (line 89) | MedialiveServiceID = "medialive"
constant MediapackageServiceID (line 90) | MediapackageServiceID = "mediapackage"
constant MediastoreServiceID (line 91) | MediastoreServiceID = "mediastore"
constant MeteringMarketplaceServiceID (line 92) | MeteringMarketplaceServiceID = "metering.marketplace"
constant MghServiceID (line 93) | MghServiceID = "mgh"
constant MobileanalyticsServiceID (line 94) | MobileanalyticsServiceID = "mobileanalytics"
constant ModelsLexServiceID (line 95) | ModelsLexServiceID = "models.lex"
constant MonitoringServiceID (line 96) | MonitoringServiceID = "monitoring"
constant MturkRequesterServiceID (line 97) | MturkRequesterServiceID = "mturk-requester"
constant NeptuneServiceID (line 98) | NeptuneServiceID = "neptune"
constant OpsworksServiceID (line 99) | OpsworksServiceID = "opsworks"
constant OpsworksCmServiceID (line 100) | OpsworksCmServiceID = "opsworks-cm"
constant OrganizationsServiceID (line 101) | OrganizationsServiceID = "organizations"
constant PinpointServiceID (line 102) | PinpointServiceID = "pinpoint"
constant PollyServiceID (line 103) | PollyServiceID = "polly"
constant RdsServiceID (line 104) | RdsServiceID = "rds"
constant RedshiftServiceID (line 105) | RedshiftServiceID = "redshift"
constant RekognitionServiceID (line 106) | RekognitionServiceID = "rekognition"
constant ResourceGroupsServiceID (line 107) | ResourceGroupsServiceID = "resource-groups"
constant Route53ServiceID (line 108) | Route53ServiceID = "route53"
constant Route53domainsServiceID (line 109) | Route53domainsServiceID = "route53domains"
constant RuntimeLexServiceID (line 110) | RuntimeLexServiceID = "runtime.lex"
constant RuntimeSagemakerServiceID (line 111) | RuntimeSagemakerServiceID = "runtime.sagemaker"
constant S3ServiceID (line 112) | S3ServiceID = "s3"
constant S3ControlServiceID (line 113) | S3ControlServiceID = "s3-control"
constant SagemakerServiceID (line 114) | SagemakerServiceID = "api.sagemaker"
constant SdbServiceID (line 115) | SdbServiceID = "sdb"
constant SecretsmanagerServiceID (line 116) | SecretsmanagerServiceID = "secretsmanager"
constant ServerlessrepoServiceID (line 117) | ServerlessrepoServiceID = "serverlessrepo"
constant ServicecatalogServiceID (line 118) | ServicecatalogServiceID = "servicecatalog"
constant ServicediscoveryServiceID (line 119) | ServicediscoveryServiceID = "servicediscovery"
constant ShieldServiceID (line 120) | ShieldServiceID = "shield"
constant SmsServiceID (line 121) | SmsServiceID = "sms"
constant SnowballServiceID (line 122) | SnowballServiceID = "snowball"
constant SnsServiceID (line 123) | SnsServiceID = "sns"
constant SqsServiceID (line 124) | SqsServiceID = "sqs"
constant SsmServiceID (line 125) | SsmServiceID = "ssm"
constant StatesServiceID (line 126) | StatesServiceID = "states"
constant StoragegatewayServiceID (line 127) | StoragegatewayServiceID = "storagegateway"
constant StreamsDynamodbServiceID (line 128) | StreamsDynamodbServiceID = "streams.dynamodb"
constant StsServiceID (line 129) | StsServiceID = "sts"
constant SupportServiceID (line 130) | SupportServiceID = "support"
constant SwfServiceID (line 131) | SwfServiceID = "swf"
constant TaggingServiceID (line 132) | TaggingServiceID = "tagging"
constant TransferServiceID (line 133) | TransferServiceID = "transfer"
constant TranslateServiceID (line 134) | TranslateServiceID = "translate"
constant WafServiceID (line 135) | WafServiceID = "waf"
constant WafRegionalServiceID (line 136) | WafRegionalServiceID = "waf-regional"
constant WorkdocsServiceID (line 137) | WorkdocsServiceID = "workdocs"
constant WorkmailServiceID (line 138) | WorkmailServiceID = "workmail"
constant WorkspacesServiceID (line 139) | WorkspacesServiceID = "workspaces"
constant XrayServiceID (line 140) | XrayServiceID = "xray"
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
type Options (line 12) | type Options struct
method Set (line 52) | func (o *Options) Set(optFns ...func(*Options)) {
function DisableSSLOption (line 60) | func DisableSSLOption(o *Options) {
function UseDualStackOption (line 66) | func UseDualStackOption(o *Options) {
function StrictMatchingOption (line 72) | func StrictMatchingOption(o *Options) {
function ResolveUnknownServiceOption (line 78) | func ResolveUnknownServiceOption(o *Options) {
type Resolver (line 84) | type Resolver interface
type ResolverFunc (line 91) | type ResolverFunc
method EndpointFor (line 94) | func (fn ResolverFunc) EndpointFor(service, region string, opts ...fun...
function AddScheme (line 105) | func AddScheme(endpoint string, disableSSL bool) string {
type EnumPartitions (line 123) | type EnumPartitions interface
function RegionsForService (line 136) | func RegionsForService(ps []Partition, partitionID, serviceID string) (m...
function PartitionForRegion (line 160) | func PartitionForRegion(ps []Partition, regionID string) (Partition, boo...
type Partition (line 172) | type Partition struct
method ID (line 178) | func (p Partition) ID() string { return p.id }
method EndpointFor (line 201) | func (p Partition) EndpointFor(service, region string, opts ...func(*O...
method Regions (line 207) | func (p Partition) Regions() map[string]Region {
method Services (line 222) | func (p Partition) Services() map[string]Service {
type Region (line 236) | type Region struct
method ID (line 242) | func (r Region) ID() string { return r.id }
method Description (line 246) | func (r Region) Description() string { return r.desc }
method ResolveEndpoint (line 250) | func (r Region) ResolveEndpoint(service string, opts ...func(*Options)...
method Services (line 255) | func (r Region) Services() map[string]Service {
type Service (line 271) | type Service struct
method ID (line 277) | func (s Service) ID() string { return s.id }
method ResolveEndpoint (line 281) | func (s Service) ResolveEndpoint(region string, opts ...func(*Options)...
method Regions (line 289) | func (s Service) Regions() map[string]Region {
method Endpoints (line 309) | func (s Service) Endpoints() map[string]Endpoint {
type Endpoint (line 325) | type Endpoint struct
method ID (line 332) | func (e Endpoint) ID() string { return e.id }
method ServiceID (line 335) | func (e Endpoint) ServiceID() string { return e.serviceID }
method ResolveEndpoint (line 340) | func (e Endpoint) ResolveEndpoint(opts ...func(*Options)) (ResolvedEnd...
type ResolvedEndpoint (line 346) | type ResolvedEndpoint struct
type awsError (line 366) | type awsError
type EndpointNotFoundError (line 370) | type EndpointNotFoundError struct
type UnknownServiceError (line 380) | type UnknownServiceError struct
method Error (line 399) | func (e UnknownServiceError) Error() string {
method String (line 409) | func (e UnknownServiceError) String() string {
function NewUnknownServiceError (line 388) | func NewUnknownServiceError(p, s string, known []string) UnknownServiceE...
type UnknownEndpointError (line 416) | type UnknownEndpointError struct
method Error (line 437) | func (e UnknownEndpointError) Error() string {
method String (line 447) | func (e UnknownEndpointError) String() string {
function NewUnknownEndpointError (line 425) | func NewUnknownEndpointError(p, s, r string, known []string) UnknownEndp...
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go
type partitions (line 10) | type partitions
method EndpointFor (line 12) | func (ps partitions) EndpointFor(service, region string, opts ...func(...
method Partitions (line 36) | func (ps partitions) Partitions() []Partition {
type partition (line 45) | type partition struct
method Partition (line 55) | func (p partition) Partition() Partition {
method canResolveEndpoint (line 62) | func (p partition) canResolveEndpoint(service, region string, strictMa...
method EndpointFor (line 77) | func (p partition) EndpointFor(service, region string, opts ...func(*O...
function serviceList (line 97) | func serviceList(ss services) []string {
function endpointList (line 104) | func endpointList(es endpoints) []string {
type regionRegex (line 112) | type regionRegex struct
method UnmarshalJSON (line 116) | func (rr *regionRegex) UnmarshalJSON(b []byte) (err error) {
type regions (line 130) | type regions
type region (line 132) | type region struct
type services (line 136) | type services
type service (line 138) | type service struct
method endpointForRegion (line 145) | func (s *service) endpointForRegion(region string) (endpoint, bool) {
type endpoints (line 159) | type endpoints
type endpoint (line 161) | type endpoint struct
method resolve (line 203) | func (e endpoint) resolve(service, region, dnsSuffix string, defs []en...
method mergeIn (line 254) | func (e *endpoint) mergeIn(other endpoint) {
constant defaultProtocol (line 178) | defaultProtocol = "https"
constant defaultSigner (line 179) | defaultSigner = "v4"
function getByPriority (line 187) | func getByPriority(s []string, p []string, def string) string {
function getEndpointScheme (line 246) | func getEndpointScheme(protocols []string, disableSSL bool) string {
type credentialScope (line 281) | type credentialScope struct
type boxedBool (line 286) | type boxedBool
method UnmarshalJSON (line 288) | func (b *boxedBool) UnmarshalJSON(buf []byte) error {
constant boxedBoolUnset (line 304) | boxedBoolUnset boxedBool = iota
constant boxedFalse (line 305) | boxedFalse
constant boxedTrue (line 306) | boxedTrue
FILE: vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
type CodeGenOptions (line 16) | type CodeGenOptions struct
method Set (line 26) | func (d *CodeGenOptions) Set(optFns ...func(*CodeGenOptions)) {
function CodeGenModel (line 35) | func CodeGenModel(modelFile io.Reader, outFile io.Writer, optFns ...func...
function toSymbol (line 62) | func toSymbol(v string) string {
function quoteString (line 75) | func quoteString(v string) string {
function regionConstName (line 79) | func regionConstName(p, r string) string {
function partitionGetter (line 83) | func partitionGetter(id string) string {
function partitionVarName (line 87) | func partitionVarName(id string) string {
function listPartitionNames (line 91) | func listPartitionNames(ps partitions) string {
function boxedBoolIfSet (line 110) | func boxedBoolIfSet(msg string, v boxedBool) string {
function stringIfSet (line 121) | func stringIfSet(msg, v string) string {
function stringSliceIfSet (line 129) | func stringSliceIfSet(msg string, vs []string) string {
function endpointIsSet (line 142) | func endpointIsSet(v endpoint) bool {
function serviceSet (line 146) | func serviceSet(ps partitions) map[string]struct{} {
constant v3Tmpl (line 171) | v3Tmpl = `
FILE: vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go
type JSONValue (line 12) | type JSONValue
FILE: vendor/github.com/aws/aws-sdk-go/aws/logger.go
type LogLevelType (line 10) | type LogLevelType
method Value (line 20) | func (l *LogLevelType) Value() LogLevelType {
method Matches (line 30) | func (l *LogLevelType) Matches(v LogLevelType) bool {
method AtLeast (line 38) | func (l *LogLevelType) AtLeast(v LogLevelType) bool {
function LogLevel (line 14) | func LogLevel(l LogLevelType) *LogLevelType {
constant LogOff (line 46) | LogOff LogLevelType = iota * 0x1000
constant LogDebug (line 50) | LogDebug
constant LogDebugWithSigning (line 58) | LogDebugWithSigning LogLevelType = LogDebug | (1 << iota)
constant LogDebugWithHTTPBody (line 64) | LogDebugWithHTTPBody
constant LogDebugWithRequestRetries (line 69) | LogDebugWithRequestRetries
constant LogDebugWithRequestErrors (line 73) | LogDebugWithRequestErrors
constant LogDebugWithEventStreamBody (line 79) | LogDebugWithEventStreamBody
type Logger (line 84) | type Logger interface
type LoggerFunc (line 95) | type LoggerFunc
method Log (line 98) | func (f LoggerFunc) Log(args ...interface{}) {
function NewDefaultLogger (line 104) | func NewDefaultLogger() Logger {
type defaultLogger (line 111) | type defaultLogger struct
method Log (line 116) | func (l defaultLogger) Log(args ...interface{}) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go
function isErrConnectionReset (line 7) | func isErrConnectionReset(err error) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
type Handlers (line 10) | type Handlers struct
method Copy (line 27) | func (h *Handlers) Copy() Handlers {
method Clear (line 46) | func (h *Handlers) Clear() {
type HandlerListRunItem (line 64) | type HandlerListRunItem struct
type HandlerList (line 71) | type HandlerList struct
method copy (line 93) | func (l *HandlerList) copy() HandlerList {
method Clear (line 106) | func (l *HandlerList) Clear() {
method Len (line 111) | func (l *HandlerList) Len() int {
method PushBack (line 116) | func (l *HandlerList) PushBack(f func(*Request)) {
method PushBackNamed (line 121) | func (l *HandlerList) PushBackNamed(n NamedHandler) {
method PushFront (line 129) | func (l *HandlerList) PushFront(f func(*Request)) {
method PushFrontNamed (line 134) | func (l *HandlerList) PushFrontNamed(n NamedHandler) {
method Remove (line 147) | func (l *HandlerList) Remove(n NamedHandler) {
method RemoveByName (line 152) | func (l *HandlerList) RemoveByName(name string) {
method SwapNamed (line 170) | func (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool) {
method Swap (line 183) | func (l *HandlerList) Swap(name string, replace NamedHandler) bool {
method SetBackNamed (line 198) | func (l *HandlerList) SetBackNamed(n NamedHandler) {
method SetFrontNamed (line 207) | func (l *HandlerList) SetFrontNamed(n NamedHandler) {
method Run (line 214) | func (l *HandlerList) Run(r *Request) {
type NamedHandler (line 87) | type NamedHandler struct
function HandlerListLogItem (line 229) | func HandlerListLogItem(item HandlerListRunItem) bool {
function HandlerListStopOnError (line 242) | func HandlerListStopOnError(item HandlerListRunItem) bool {
function WithAppendUserAgent (line 248) | func WithAppendUserAgent(s string) Option {
function MakeAddToUserAgentHandler (line 261) | func MakeAddToUserAgentHandler(name, version string, extra ...string) fu...
function MakeAddToUserAgentFreeFormHandler (line 273) | func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go
function copyHTTPRequest (line 9) | func copyHTTPRequest(r *http.Request, body io.ReadCloser) *http.Request {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go
type offsetReader (line 12) | type offsetReader struct
method Close (line 28) | func (o *offsetReader) Close() error {
method Read (line 36) | func (o *offsetReader) Read(p []byte) (int, error) {
method Seek (line 48) | func (o *offsetReader) Seek(offset int64, whence int) (int64, error) {
method CloseAndCopy (line 57) | func (o *offsetReader) CloseAndCopy(offset int64) *offsetReader {
function newOffsetReader (line 18) | func newOffsetReader(buf io.ReadSeeker, offset int64) *offsetReader {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request.go
constant ErrCodeSerialization (line 22) | ErrCodeSerialization = "SerializationError"
constant ErrCodeRead (line 25) | ErrCodeRead = "ReadError"
constant ErrCodeResponseTimeout (line 29) | ErrCodeResponseTimeout = "ResponseTimeout"
constant ErrCodeInvalidPresignExpire (line 33) | ErrCodeInvalidPresignExpire = "InvalidPresignExpireError"
constant CanceledErrorCode (line 38) | CanceledErrorCode = "RequestCanceled"
type Request (line 42) | type Request struct
method ApplyOptions (line 188) | func (r *Request) ApplyOptions(opts ...Option) {
method Context (line 196) | func (r *Request) Context() aws.Context {
method SetContext (line 219) | func (r *Request) SetContext(ctx aws.Context) {
method WillRetry (line 227) | func (r *Request) WillRetry() bool {
method ParamsFilled (line 237) | func (r *Request) ParamsFilled() bool {
method DataFilled (line 244) | func (r *Request) DataFilled() bool {
method SetBufferBody (line 250) | func (r *Request) SetBufferBody(buf []byte) {
method SetStringBody (line 255) | func (r *Request) SetStringBody(s string) {
method SetReaderBody (line 260) | func (r *Request) SetReaderBody(reader io.ReadSeeker) {
method Presign (line 273) | func (r *Request) Presign(expire time.Duration) (string, error) {
method PresignRequest (line 299) | func (r *Request) PresignRequest(expire time.Duration) (string, http.H...
method IsPresigned (line 305) | func (r *Request) IsPresigned() bool {
method Build (line 357) | func (r *Request) Build() error {
method Sign (line 379) | func (r *Request) Sign() error {
method getNextRequestBody (line 390) | func (r *Request) getNextRequestBody() (io.ReadCloser, error) {
method GetBody (line 443) | func (r *Request) GetBody() io.ReadSeeker {
method Send (line 460) | func (r *Request) Send() error {
method prepareRetry (line 498) | func (r *Request) prepareRetry() {
method sendRequest (line 517) | func (r *Request) sendRequest() (sendErr error) {
method copy (line 546) | func (r *Request) copy() *Request {
type Operation (line 84) | type Operation struct
function New (line 99) | func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
type Option (line 140) | type Option
function WithGetResponseHeader (line 154) | func WithGetResponseHeader(key string, val *string) Option {
function WithGetResponseHeaders (line 168) | func WithGetResponseHeaders(headers *http.Header) Option {
function WithLogLevel (line 180) | func WithLogLevel(l aws.LogLevelType) Option {
function getPresignedURL (line 309) | func getPresignedURL(r *Request, expire time.Duration) (string, http.Hea...
function debugLogReqError (line 333) | func debugLogReqError(r *Request, stage string, retrying bool, err error) {
function AddToUserAgent (line 556) | func AddToUserAgent(r *Request, s string) {
type temporary (line 564) | type temporary interface
function shouldRetryCancel (line 568) | func shouldRetryCancel(err error) bool {
function SanitizeHostForHeader (line 607) | func SanitizeHostForHeader(r *http.Request) {
function getHost (line 616) | func getHost(r *http.Request) string {
function stripPort (line 631) | func stripPort(hostport string) string {
function portOnly (line 646) | func portOnly(hostport string) string {
function isDefaultPort (line 662) | func isDefaultPort(scheme, port string) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go
type noBody (line 13) | type noBody struct
method Read (line 15) | func (noBody) Read([]byte) (int, error) { return 0, io.EOF }
method Close (line 16) | func (noBody) Close() error { return nil }
method WriteTo (line 17) | func (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil }
method ResetBody (line 31) | func (r *Request) ResetBody() {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go
method ResetBody (line 24) | func (r *Request) ResetBody() {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go
function setRequestContext (line 11) | func setRequestContext(r *Request, ctx aws.Context) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go
function setRequestContext (line 11) | func setRequestContext(r *Request, ctx aws.Context) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go
type Pagination (line 29) | type Pagination struct
method HasNextPage (line 55) | func (p *Pagination) HasNextPage() bool {
method Err (line 68) | func (p *Pagination) Err() error {
method Page (line 75) | func (p *Pagination) Page() interface{} {
method Next (line 87) | func (p *Pagination) Next() bool {
type Paginator (line 125) | type Paginator struct
method nextPageTokens (line 133) | func (r *Request) nextPageTokens() []interface{} {
function logDeprecatedf (line 189) | func logDeprecatedf(logger aws.Logger, flag *int32, msg string) {
method HasNextPage (line 207) | func (r *Request) HasNextPage() bool {
method NextPage (line 218) | func (r *Request) NextPage() *Request {
method EachPage (line 250) | func (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (s...
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
type Retryer (line 13) | type Retryer interface
function WithRetryer (line 21) | func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config {
function isCodeThrottle (line 56) | func isCodeThrottle(code string) bool {
function isCodeRetryable (line 61) | func isCodeRetryable(code string) bool {
function isCodeExpiredCreds (line 69) | func isCodeExpiredCreds(code string) bool {
type temporaryError (line 79) | type temporaryError interface
function isNestedErrorRetryable (line 83) | func isNestedErrorRetryable(parentErr awserr.Error) bool {
function IsErrorRetryable (line 110) | func IsErrorRetryable(err error) bool {
function IsErrorThrottle (line 121) | func IsErrorThrottle(err error) bool {
function IsErrorExpiredCreds (line 132) | func IsErrorExpiredCreds(err error) bool {
method IsErrorRetryable (line 145) | func (r *Request) IsErrorRetryable() bool {
method IsErrorThrottle (line 153) | func (r *Request) IsErrorThrottle() bool {
method IsErrorExpired (line 161) | func (r *Request) IsErrorExpired() bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go
type readResult (line 16) | type readResult struct
type timeoutReadCloser (line 23) | type timeoutReadCloser struct
method Read (line 31) | func (r *timeoutReadCloser) Read(b []byte) (int, error) {
method Close (line 49) | func (r *timeoutReadCloser) Close() error {
constant HandlerResponseTimeout (line 56) | HandlerResponseTimeout = "ResponseTimeoutHandler"
function adaptToResponseTimeoutError (line 61) | func adaptToResponseTimeoutError(req *Request) {
function WithResponseReadTimeout (line 75) | func WithResponseReadTimeout(duration time.Duration) Option {
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
constant InvalidParameterErrCode (line 12) | InvalidParameterErrCode = "InvalidParameter"
constant ParamRequiredErrCode (line 14) | ParamRequiredErrCode = "ParamRequiredError"
constant ParamMinValueErrCode (line 17) | ParamMinValueErrCode = "ParamMinValueError"
constant ParamMinLenErrCode (line 19) | ParamMinLenErrCode = "ParamMinLenError"
constant ParamMaxLenErrCode (line 21) | ParamMaxLenErrCode = "ParamMaxLenError"
constant ParamFormatErrCode (line 25) | ParamFormatErrCode = "ParamFormatInvalidError"
type Validator (line 31) | type Validator interface
type ErrInvalidParams (line 37) | type ErrInvalidParams struct
method Add (line 46) | func (e *ErrInvalidParams) Add(err ErrInvalidParam) {
method AddNested (line 56) | func (e *ErrInvalidParams) AddNested(nestedCtx string, nested ErrInval...
method Len (line 65) | func (e ErrInvalidParams) Len() int {
method Code (line 70) | func (e ErrInvalidParams) Code() string {
method Message (line 75) | func (e ErrInvalidParams) Message() string {
method Error (line 80) | func (e ErrInvalidParams) Error() string {
method OrigErr (line 92) | func (e ErrInvalidParams) OrigErr() error {
method OrigErrs (line 98) | func (e ErrInvalidParams) OrigErrs() []error {
type ErrInvalidParam (line 108) | type ErrInvalidParam interface
type errInvalidParam (line 121) | type errInvalidParam struct
method Code (line 130) | func (e *errInvalidParam) Code() string {
method Message (line 135) | func (e *errInvalidParam) Message() string {
method Error (line 140) | func (e *errInvalidParam) Error() string {
method OrigErr (line 145) | func (e *errInvalidParam) OrigErr() error {
method Field (line 150) | func (e *errInvalidParam) Field() string {
method SetContext (line 164) | func (e *errInvalidParam) SetContext(ctx string) {
method AddNestedContext (line 169) | func (e *errInvalidParam) AddNestedContext(ctx string) {
type ErrParamRequired (line 179) | type ErrParamRequired struct
function NewErrParamRequired (line 184) | func NewErrParamRequired(field string) *ErrParamRequired {
type ErrParamMinValue (line 195) | type ErrParamMinValue struct
method MinValue (line 215) | func (e *ErrParamMinValue) MinValue() float64 {
function NewErrParamMinValue (line 201) | func NewErrParamMinValue(field string, min float64) *ErrParamMinValue {
type ErrParamMinLen (line 220) | type ErrParamMinLen struct
method MinLen (line 238) | func (e *ErrParamMinLen) MinLen() int {
function NewErrParamMinLen (line 226) | func NewErrParamMinLen(field string, min int) *ErrParamMinLen {
type ErrParamMaxLen (line 243) | type ErrParamMaxLen struct
method MaxLen (line 261) | func (e *ErrParamMaxLen) MaxLen() int {
function NewErrParamMaxLen (line 249) | func NewErrParamMaxLen(field string, max int, value string) *ErrParamMax...
type ErrParamFormat (line 266) | type ErrParamFormat struct
method Format (line 284) | func (e *ErrParamFormat) Format() string {
function NewErrParamFormat (line 272) | func NewErrParamFormat(field string, format, value string) *ErrParamForm...
FILE: vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go
constant WaiterResourceNotReadyErrorCode (line 14) | WaiterResourceNotReadyErrorCode = "ResourceNotReady"
type WaiterOption (line 18) | type WaiterOption
function WithWaiterMaxAttempts (line 22) | func WithWaiterMaxAttempts(max int) WaiterOption {
type WaiterDelay (line 34) | type WaiterDelay
function ConstantWaiterDelay (line 39) | func ConstantWaiterDelay(delay time.Duration) WaiterDelay {
function WithWaiterDelay (line 46) | func WithWaiterDelay(delayer WaiterDelay) WaiterOption {
function WithWaiterLogger (line 54) | func WithWaiterLogger(logger aws.Logger) WaiterOption {
function WithWaiterRequestOptions (line 63) | func WithWaiterRequestOptions(opts ...Option) WaiterOption {
type Waiter (line 74) | type Waiter struct
method ApplyOptions (line 88) | func (w *Waiter) ApplyOptions(opts ...WaiterOption) {
method WaitWithContext (line 169) | func (w Waiter) WaitWithContext(ctx aws.Context) error {
type WaiterState (line 96) | type WaiterState
method String (line 99) | func (s WaiterState) String() string {
constant SuccessWaiterState (line 114) | SuccessWaiterState WaiterState = iota
constant FailureWaiterState (line 115) | FailureWaiterState
constant RetryWaiterState (line 116) | RetryWaiterState
type WaiterMatchMode (line 121) | type WaiterMatchMode
method String (line 135) | func (m WaiterMatchMode) String() string {
constant PathAllWaiterMatch (line 126) | PathAllWaiterMatch WaiterMatchMode = iota
constant PathWaiterMatch (line 127) | PathWaiterMatch
constant PathAnyWaiterMatch (line 128) | PathAnyWaiterMatch
constant PathListWaiterMatch (line 129) | PathListWaiterMatch
constant StatusWaiterMatch (line 130) | StatusWaiterMatch
constant ErrorWaiterMatch (line 131) | ErrorWaiterMatch
type WaiterAcceptor (line 216) | type WaiterAcceptor struct
method match (line 226) | func (a *WaiterAcceptor) match(name string, l aws.Logger, req *Request...
function waiterLogf (line 291) | func waiterLogf(logger aws.Logger, msg string, args ...interface{}) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport.go
function getCABundleTransport (line 13) | func getCABundleTransport() *http.Transport {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_5.go
function getCABundleTransport (line 13) | func getCABundleTransport() *http.Transport {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_6.go
function getCABundleTransport (line 13) | func getCABundleTransport() *http.Transport {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
constant EnvProviderName (line 13) | EnvProviderName = "EnvConfigCredentials"
type envConfig (line 19) | type envConfig struct
function loadEnvConfig (line 161) | func loadEnvConfig() envConfig {
function loadSharedEnvConfig (line 172) | func loadSharedEnvConfig() envConfig {
function envConfigLoad (line 176) | func envConfigLoad(enableSharedConfig bool) envConfig {
function setFromEnvVal (line 229) | func setFromEnvVal(dst *string, keys []string) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/session.go
constant ErrCodeSharedConfig (line 29) | ErrCodeSharedConfig = "SharedConfigErr"
type Session (line 50) | type Session struct
method Copy (line 639) | func (s *Session) Copy(cfgs ...*aws.Config) *Session {
method ClientConfig (line 653) | func (s *Session) ClientConfig(serviceName string, cfgs ...*aws.Config...
method clientConfigWithErr (line 661) | func (s *Session) clientConfigWithErr(serviceName string, cfgs ...*aws...
method ClientConfigNoResolveEndpoint (line 699) | func (s *Session) ClientConfigNoResolveEndpoint(cfgs ...*aws.Config) c...
function New (line 76) | func New(cfgs ...*aws.Config) *Session {
function NewSession (line 131) | func NewSession(cfgs ...*aws.Config) (*Session, error) {
type SharedConfigState (line 141) | type SharedConfigState
constant SharedConfigStateFromEnv (line 147) | SharedConfigStateFromEnv SharedConfigState = iota
constant SharedConfigDisable (line 151) | SharedConfigDisable
constant SharedConfigEnable (line 155) | SharedConfigEnable
type Options (line 161) | type Options struct
function NewSessionWithOptions (line 258) | func NewSessionWithOptions(opts Options) (*Session, error) {
function Must (line 298) | func Must(sess *Session, err error) *Session {
function deprecatedNewSession (line 306) | func deprecatedNewSession(cfgs ...*aws.Config) *Session {
function enableCSM (line 332) | func enableCSM(handlers *request.Handlers, clientID string, port string,...
function newSession (line 345) | func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*S...
function loadCustomCABundle (line 398) | func loadCustomCABundle(s *Session, bundle io.Reader) error {
function loadCertPool (line 430) | func loadCertPool(r io.Reader) (*x509.CertPool, error) {
function mergeConfigSrcs (line 446) | func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedC...
function assumeRoleCredentials (line 563) | func assumeRoleCredentials(cfg aws.Config, handlers request.Handlers, sh...
type AssumeRoleTokenProviderNotSetError (line 590) | type AssumeRoleTokenProviderNotSetError struct
method Code (line 593) | func (e AssumeRoleTokenProviderNotSetError) Code() string {
method Message (line 598) | func (e AssumeRoleTokenProviderNotSetError) Message() string {
method OrigErr (line 603) | func (e AssumeRoleTokenProviderNotSetError) OrigErr() error {
method Error (line 608) | func (e AssumeRoleTokenProviderNotSetError) Error() string {
type credProviderError (line 612) | type credProviderError struct
method Retrieve (line 618) | func (c credProviderError) Retrieve() (credentials.Value, error) {
method IsExpired (line 621) | func (c credProviderError) IsExpired() bool {
function initHandlers (line 625) | func initHandlers(s *Session) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
constant accessKeyIDKey (line 14) | accessKeyIDKey = `aws_access_key_id`
constant secretAccessKey (line 15) | secretAccessKey = `aws_secret_access_key`
constant sessionTokenKey (line 16) | sessionTokenKey = `aws_session_token`
constant roleArnKey (line 19) | roleArnKey = `role_arn`
constant sourceProfileKey (line 20) | sourceProfileKey = `source_profile`
constant credentialSourceKey (line 21) | credentialSourceKey = `credential_source`
constant externalIDKey (line 22) | externalIDKey = `external_id`
constant mfaSerialKey (line 23) | mfaSerialKey = `mfa_serial`
constant roleSessionNameKey (line 24) | roleSessionNameKey = `role_session_name`
constant regionKey (line 27) | regionKey = `region`
constant enableEndpointDiscoveryKey (line 30) | enableEndpointDiscoveryKey = `endpoint_discovery_enabled`
constant credentialProcessKey (line 32) | credentialProcessKey = `credential_process`
constant DefaultSharedConfigProfile (line 37) | DefaultSharedConfigProfile = `default`
type assumeRoleConfig (line 40) | type assumeRoleConfig struct
type sharedConfig (line 50) | type sharedConfig struct
method setAssumeRoleSource (line 140) | func (cfg *sharedConfig) setAssumeRoleSource(origProfile string, files...
method setFromIniFiles (line 170) | func (cfg *sharedConfig) setFromIniFiles(profile string, files []share...
method setFromIniFile (line 193) | func (cfg *sharedConfig) setFromIniFile(profile string, file sharedCon...
type sharedConfigFile (line 81) | type sharedConfigFile struct
function loadSharedConfig (line 96) | func loadSharedConfig(profile string, filenames []string) (sharedConfig,...
function loadSharedConfigIniFiles (line 120) | func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, e...
type SharedConfigLoadError (line 251) | type SharedConfigLoadError struct
method Code (line 257) | func (e SharedConfigLoadError) Code() string {
method Message (line 262) | func (e SharedConfigLoadError) Message() string {
method OrigErr (line 267) | func (e SharedConfigLoadError) OrigErr() error {
method Error (line 272) | func (e SharedConfigLoadError) Error() string {
type SharedConfigProfileNotExistsError (line 278) | type SharedConfigProfileNotExistsError struct
method Code (line 284) | func (e SharedConfigProfileNotExistsError) Code() string {
method Message (line 289) | func (e SharedConfigProfileNotExistsError) Message() string {
method OrigErr (line 294) | func (e SharedConfigProfileNotExistsError) OrigErr() error {
method Error (line 299) | func (e SharedConfigProfileNotExistsError) Error() string {
type SharedConfigAssumeRoleError (line 306) | type SharedConfigAssumeRoleError struct
method Code (line 311) | func (e SharedConfigAssumeRoleError) Code() string {
method Message (line 316) | func (e SharedConfigAssumeRoleError) Message() string {
method OrigErr (line 322) | func (e SharedConfigAssumeRoleError) OrigErr() error {
method Error (line 327) | func (e SharedConfigAssumeRoleError) Error() string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go
type rules (line 10) | type rules
method IsValid (line 20) | func (r rules) IsValid(value string) bool {
type rule (line 14) | type rule interface
type mapRule (line 30) | type mapRule
method IsValid (line 33) | func (m mapRule) IsValid(value string) bool {
type whitelist (line 39) | type whitelist struct
method IsValid (line 44) | func (w whitelist) IsValid(value string) bool {
type blacklist (line 49) | type blacklist struct
method IsValid (line 54) | func (b blacklist) IsValid(value string) bool {
type patterns (line 58) | type patterns
method IsValid (line 62) | func (p patterns) IsValid(value string) bool {
type inclusiveRules (line 72) | type inclusiveRules
method IsValid (line 75) | func (r inclusiveRules) IsValid(value string) bool {
FILE: vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go
function WithUnsignedPayload (line 5) | func WithUnsignedPayload(v4 *Signer) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go
function getURIPath (line 10) | func getURIPath(u *url.URL) string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
constant authHeaderPrefix (line 79) | authHeaderPrefix = "AWS4-HMAC-SHA256"
constant timeFormat (line 80) | timeFormat = "20060102T150405Z"
constant shortTimeFormat (line 81) | shortTimeFormat = "20060102"
constant emptyStringSHA256 (line 84) | emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca49...
type Signer (line 154) | type Signer struct
method Sign (line 273) | func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, re...
method Presign (line 307) | func (v4 Signer) Presign(r *http.Request, body io.ReadSeeker, service,...
method signWithBody (line 311) | func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, ser...
method logSigningInfo (line 501) | func (v4 *Signer) logSigningInfo(ctx *signingCtx) {
function NewSigner (line 208) | func NewSigner(credentials *credentials.Credentials, options ...func(*Si...
type signingCtx (line 220) | type signingCtx struct
method sanitizeHostForHeader (line 372) | func (ctx *signingCtx) sanitizeHostForHeader() {
method handlePresignRemoval (line 376) | func (ctx *signingCtx) handlePresignRemoval() {
method assignAmzQueryValues (line 390) | func (ctx *signingCtx) assignAmzQueryValues() {
method build (line 510) | func (ctx *signingCtx) build(disableHeaderHoisting bool) error {
method buildTime (line 548) | func (ctx *signingCtx) buildTime() {
method buildCredentialString (line 561) | func (ctx *signingCtx) buildCredentialString() {
method buildCanonicalHeaders (line 587) | func (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Heade...
method buildCanonicalString (line 634) | func (ctx *signingCtx) buildCanonicalString() {
method buildStringToSign (line 653) | func (ctx *signingCtx) buildStringToSign() {
method buildSignature (line 662) | func (ctx *signingCtx) buildSignature() {
method buildBodyDigest (line 672) | func (ctx *signingCtx) buildBodyDigest() error {
method isRequestSigned (line 703) | func (ctx *signingCtx) isRequestSigned() bool {
method removePresign (line 715) | func (ctx *signingCtx) removePresign() {
function SignSDKRequest (line 424) | func SignSDKRequest(req *request.Request) {
function BuildNamedHandler (line 429) | func BuildNamedHandler(name string, opts ...func(*Signer)) request.Named...
function SignSDKRequestWithCurrentTime (line 441) | func SignSDKRequestWithCurrentTime(req *request.Request, curTimeFn func(...
constant logSignInfoMsg (line 491) | logSignInfoMsg = `DEBUG: Request Signature:
constant logSignedURLMsg (line 497) | logSignedURLMsg = `
function buildQuery (line 574) | func buildQuery(r rule, header http.Header) (url.Values, http.Header) {
function makeHmac (line 725) | func makeHmac(key []byte, data []byte) []byte {
function makeSha256 (line 731) | func makeSha256(data []byte) []byte {
function makeSha256Reader (line 737) | func makeSha256Reader(reader io.ReadSeeker) []byte {
constant doubleSpace (line 754) | doubleSpace = " "
function stripExcessSpaces (line 758) | func stripExcessSpaces(vals []string) {
FILE: vendor/github.com/aws/aws-sdk-go/aws/types.go
function ReadSeekCloser (line 22) | func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
type ReaderSeekerCloser (line 28) | type ReaderSeekerCloser struct
method Read (line 55) | func (r ReaderSeekerCloser) Read(p []byte) (int, error) {
method Seek (line 69) | func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, err...
method IsSeeker (line 78) | func (r ReaderSeekerCloser) IsSeeker() bool {
method HasLen (line 85) | func (r ReaderSeekerCloser) HasLen() (int, bool) {
method GetLen (line 102) | func (r ReaderSeekerCloser) GetLen() (int64, error) {
method Close (line 151) | func (r ReaderSeekerCloser) Close() error {
function IsReaderSeekable (line 35) | func IsReaderSeekable(r io.Reader) bool {
function SeekerLen (line 116) | func SeekerLen(s io.Seeker) (int64, error) {
function seekerLen (line 129) | func seekerLen(s io.Seeker) (int64, error) {
type WriteAtBuffer (line 162) | type WriteAtBuffer struct
method WriteAt (line 182) | func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) {
method Bytes (line 203) | func (b *WriteAtBuffer) Bytes() []byte {
function NewWriteAtBuffer (line 175) | func NewWriteAtBuffer(buf []byte) *WriteAtBuffer {
FILE: vendor/github.com/aws/aws-sdk-go/aws/url.go
function URLHostname (line 10) | func URLHostname(url *url.URL) string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go
function URLHostname (line 13) | func URLHostname(url *url.URL) string {
function stripPort (line 20) | func stripPort(hostport string) string {
FILE: vendor/github.com/aws/aws-sdk-go/aws/version.go
constant SDKName (line 5) | SDKName = "aws-sdk-go"
constant SDKVersion (line 8) | SDKVersion = "1.19.44"
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go
type ASTKind (line 5) | type ASTKind
method String (line 24) | func (k ASTKind) String() string {
constant ASTKindNone (line 10) | ASTKindNone = ASTKind(iota)
constant ASTKindStart (line 11) | ASTKindStart
constant ASTKindExpr (line 12) | ASTKindExpr
constant ASTKindEqualExpr (line 13) | ASTKindEqualExpr
constant ASTKindStatement (line 14) | ASTKindStatement
constant ASTKindSkipStatement (line 15) | ASTKindSkipStatement
constant ASTKindExprStatement (line 16) | ASTKindExprStatement
constant ASTKindSectionStatement (line 17) | ASTKindSectionStatement
constant ASTKindNestedSectionStatement (line 18) | ASTKindNestedSectionStatement
constant ASTKindCompletedNestedSectionStatement (line 19) | ASTKindCompletedNestedSectionStatement
constant ASTKindCommentStatement (line 20) | ASTKindCommentStatement
constant ASTKindCompletedSectionStatement (line 21) | ASTKindCompletedSectionStatement
type AST (line 55) | type AST struct
method AppendChild (line 79) | func (a *AST) AppendChild(child AST) {
method GetRoot (line 85) | func (a *AST) GetRoot() AST {
method GetChildren (line 98) | func (a *AST) GetChildren() []AST {
method SetChildren (line 111) | func (a *AST) SetChildren(children []AST) {
function newAST (line 62) | func newAST(kind ASTKind, root AST, children ...AST) AST {
function newASTWithRootToken (line 69) | func newASTWithRootToken(kind ASTKind, root Token, children ...AST) AST {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go
function isComma (line 5) | func isComma(b rune) bool {
function newCommaToken (line 9) | func newCommaToken() Token {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go
function isComment (line 5) | func isComment(b []rune) bool {
function newCommentToken (line 22) | func newCommentToken(b []rune) (Token, int, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go
function newExpression (line 8) | func newExpression(tok Token) AST {
function newEqualExpr (line 12) | func newEqualExpr(left AST, tok Token) AST {
function EqualExprKey (line 17) | func EqualExprKey(ast AST) string {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go
function Fuzz (line 9) | func Fuzz(data []byte) int {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go
function OpenFile (line 12) | func OpenFile(path string) (Sections, error) {
function Parse (line 24) | func Parse(f io.Reader) (Sections, error) {
function ParseBytes (line 39) | func ParseBytes(b []byte) (Sections, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go
constant ErrCodeUnableToReadFile (line 14) | ErrCodeUnableToReadFile = "FailedRead"
type TokenType (line 18) | type TokenType
method String (line 20) | func (t TokenType) String() string {
constant TokenNone (line 45) | TokenNone = TokenType(iota)
constant TokenLit (line 46) | TokenLit
constant TokenSep (line 47) | TokenSep
constant TokenComma (line 48) | TokenComma
constant TokenOp (line 49) | TokenOp
constant TokenWS (line 50) | TokenWS
constant TokenNL (line 51) | TokenNL
constant TokenComment (line 52) | TokenComment
type iniLexer (line 55) | type iniLexer struct
method Tokenize (line 59) | func (l *iniLexer) Tokenize(r io.Reader) ([]Token, error) {
method tokenize (line 68) | func (l *iniLexer) tokenize(b []byte) ([]Token, error) {
function countTokens (line 106) | func countTokens(runes []rune) int {
type Token (line 140) | type Token struct
method Raw (line 158) | func (tok Token) Raw() []rune {
method Type (line 163) | func (tok Token) Type() TokenType {
function newToken (line 149) | func newToken(t TokenType, raw []rune, v ValueType) Token {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
constant InvalidState (line 10) | InvalidState = iota
constant StatementState (line 12) | StatementState
constant StatementPrimeState (line 14) | StatementPrimeState
constant ValueState (line 16) | ValueState
constant OpenScopeState (line 18) | OpenScopeState
constant SectionState (line 20) | SectionState
constant CloseScopeState (line 22) | CloseScopeState
constant SkipState (line 24) | SkipState
constant SkipTokenState (line 27) | SkipTokenState
constant CommentState (line 30) | CommentState
constant MarkCompleteState (line 33) | MarkCompleteState
constant TerminalState (line 35) | TerminalState
function ParseAST (line 115) | func ParseAST(r io.Reader) ([]AST, error) {
function ParseASTBytes (line 127) | func ParseASTBytes(b []byte) ([]AST, error) {
function parse (line 137) | func parse(tokens []Token) ([]AST, error) {
function trimSpaces (line 328) | func trimSpaces(k AST) AST {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go
function isBoolValue (line 19) | func isBoolValue(b []rune) bool {
function isLitValue (line 28) | func isLitValue(want, have []rune) bool {
function isNumberValue (line 48) | func isNumberValue(b []rune) bool {
function isValid (line 104) | func isValid(b []rune) (bool, int, error) {
function isValidRune (line 113) | func isValidRune(r rune) bool {
type ValueType (line 119) | type ValueType
method String (line 121) | func (v ValueType) String() string {
constant NoneType (line 140) | NoneType = ValueType(iota)
constant DecimalType (line 141) | DecimalType
constant IntegerType (line 142) | IntegerType
constant StringType (line 143) | StringType
constant QuotedStringType (line 144) | QuotedStringType
constant BoolType (line 145) | BoolType
type Value (line 149) | type Value struct
method Append (line 198) | func (v *Value) Append(tok Token) {
method String (line 211) | func (v Value) String() string {
method IntValue (line 267) | func (v Value) IntValue() int64 {
method FloatValue (line 272) | func (v Value) FloatValue() float64 {
method BoolValue (line 277) | func (v Value) BoolValue() bool {
method StringValue (line 290) | func (v Value) StringValue() string {
function newValue (line 159) | func newValue(t ValueType, base int, raw []rune) (Value, error) {
function newLitToken (line 228) | func newLitToken(b []rune) (Token, int, error) {
function isTrimmable (line 281) | func isTrimmable(r rune) bool {
function contains (line 302) | func contains(runes []rune, c rune) bool {
function runeCompare (line 312) | func runeCompare(v1 []rune, v2 []rune) bool {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go
function isNewline (line 3) | func isNewline(b []rune) bool {
function newNewlineToken (line 19) | func newNewlineToken(b []rune) (Token, int, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go
constant none (line 10) | none = numberFormat(iota)
constant binary (line 11) | binary
constant octal (line 12) | octal
constant decimal (line 13) | decimal
constant hex (line 14) | hex
constant exponent (line 15) | exponent
type numberFormat (line 18) | type numberFormat
type numberHelper (line 23) | type numberHelper struct
method Exists (line 30) | func (b numberHelper) Exists() bool {
method IsNegative (line 34) | func (b numberHelper) IsNegative() bool {
method Determine (line 38) | func (b *numberHelper) Determine(c rune) error {
method CorrectByte (line 67) | func (b numberHelper) CorrectByte(c rune) bool {
method Base (line 106) | func (b numberHelper) Base() int {
method String (line 119) | func (b numberHelper) String() string {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go
function isOp (line 12) | func isOp(b []rune) bool {
function newOpToken (line 27) | func newOpToken(b []rune) (Token, int, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go
constant ErrCodeParseError (line 8) | ErrCodeParseError = "INIParseError"
type ParseError (line 13) | type ParseError struct
method Code (line 26) | func (err *ParseError) Code() string {
method Message (line 31) | func (err *ParseError) Message() string {
method OrigError (line 37) | func (err *ParseError) OrigError() error {
method Error (line 41) | func (err *ParseError) Error() string {
function NewParseError (line 19) | func NewParseError(message string) *ParseError {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go
type ParseStack (line 11) | type ParseStack struct
method Pop (line 26) | func (s *ParseStack) Pop() AST {
method Push (line 32) | func (s *ParseStack) Push(ast AST) {
method MarkComplete (line 38) | func (s *ParseStack) MarkComplete(ast AST) {
method List (line 44) | func (s ParseStack) List() []AST {
method Len (line 49) | func (s *ParseStack) Len() int {
method String (line 53) | func (s ParseStack) String() string {
function newParseStack (line 18) | func newParseStack(sizeContainer, sizeList int) ParseStack {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go
function isSep (line 11) | func isSep(b []rune) bool {
function newSepToken (line 29) | func newSepToken(b []rune) (Token, int, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go
type skipper (line 12) | type skipper struct
method ShouldSkip (line 24) | func (s *skipper) ShouldSkip(tok Token) bool {
method Skip (line 37) | func (s *skipper) Skip() {
method Continue (line 42) | func (s *skipper) Continue() {
function newSkipper (line 18) | func newSkipper() skipper {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go
function newStatement (line 4) | func newStatement() AST {
function newSectionStatement (line 9) | func newSectionStatement(tok Token) AST {
function newExprStatement (line 14) | func newExprStatement(ast AST) AST {
function newCommentStatement (line 23) | func newCommentStatement(tok Token) AST {
function newCompletedSectionStatement (line 28) | func newCompletedSectionStatement(ast AST) AST {
function newSkipStatement (line 33) | func newSkipStatement(ast AST) AST {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go
function getStringValue (line 11) | func getStringValue(b []rune) (int, error) {
function getBoolValue (line 49) | func getBoolValue(b []rune) (int, error) {
function getNumericalValue (line 77) | func getNumericalValue(b []rune) (int, int, error) {
function isDigit (line 153) | func isDigit(b rune) bool {
function hasExponent (line 157) | func hasExponent(v []rune) bool {
function isBinaryByte (line 161) | func isBinaryByte(b rune) bool {
function isOctalByte (line 170) | func isOctalByte(b rune) bool {
function isHexByte (line 179) | func isHexByte(b rune) bool {
function getValue (line 187) | func getValue(b []rune) (int, error) {
function getNegativeNumber (line 217) | func getNegativeNumber(b []rune) int {
function isEscaped (line 234) | func isEscaped(value []rune, b rune) bool {
function getEscapedByte (line 252) | func getEscapedByte(b rune) (rune, error) {
function removeEscapedCharacters (line 269) | func removeEscapedCharacters(b []rune) []rune {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go
type Visitor (line 10) | type Visitor interface
type DefaultVisitor (line 20) | type DefaultVisitor struct
method VisitExpr (line 35) | func (v *DefaultVisitor) VisitExpr(expr AST) error {
method VisitStatement (line 76) | func (v *DefaultVisitor) VisitStatement(stmt AST) error {
function NewDefaultVisitor (line 26) | func NewDefaultVisitor() *DefaultVisitor {
type Sections (line 96) | type Sections struct
method GetSection (line 102) | func (t Sections) GetSection(p string) (Section, bool) {
method List (line 112) | func (t Sections) List() []string {
type values (line 108) | type values
type Section (line 126) | type Section struct
method Has (line 132) | func (t Section) Has(k string) bool {
method ValueType (line 139) | func (t Section) ValueType(k string) (ValueType, bool) {
method Bool (line 145) | func (t Section) Bool(k string) bool {
method Int (line 150) | func (t Section) Int(k string) int64 {
method Float64 (line 155) | func (t Section) Float64(k string) float64 {
method String (line 160) | func (t Section) String(k string) string {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go
function Walk (line 4) | func Walk(tree []AST, v Visitor) error {
FILE: vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go
function isWhitespace (line 11) | func isWhitespace(c rune) bool {
function newWSToken (line 15) | func newWSToken(b []rune) (Token, int, error) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go
type RequestFailure (line 12) | type RequestFailure struct
method Error (line 24) | func (r RequestFailure) Error() string {
method String (line 29) | func (r RequestFailure) String() string {
method HostID (line 34) | func (r RequestFailure) HostID() string {
function NewRequestFailure (line 20) | func NewRequestFailure(err awserr.RequestFailure, hostID string) *Reques...
function RequestFailureWrapperHandler (line 40) | func RequestFailureWrapperHandler() request.NamedHandler {
FILE: vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go
constant SeekStart (line 7) | SeekStart = 0
constant SeekCurrent (line 8) | SeekCurrent = 1
constant SeekEnd (line 9) | SeekEnd = 2
FILE: vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go
constant SeekStart (line 9) | SeekStart = io.SeekStart
constant SeekCurrent (line 10) | SeekCurrent = io.SeekCurrent
constant SeekEnd (line 11) | SeekEnd = io.SeekEnd
FILE: vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go
type lockedSource (line 10) | type lockedSource struct
method Int63 (line 15) | func (r *lockedSource) Int63() (n int64) {
method Seed (line 22) | func (r *lockedSource) Seed(seed int64) {
FILE: vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go
function PathJoin (line 11) | func PathJoin(elems ...string) string {
FILE: vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go
constant ECSCredsProviderEnvVar (line 6) | ECSCredsProviderEnvVar = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
FILE: vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go
function SharedCredentialsFilename (line 16) | func SharedCredentialsFilename() string {
function SharedConfigFilename (line 27) | func SharedConfigFilename() string {
function UserHomeDir (line 33) | func UserHomeDir() string {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go
type decodedMessage (line 11) | type decodedMessage struct
method UnmarshalJSON (line 24) | func (d *decodedMessage) UnmarshalJSON(b []byte) (err error) {
method MarshalJSON (line 52) | func (d *decodedMessage) MarshalJSON() ([]byte, error) {
method Message (line 74) | func (d decodedMessage) Message() Message {
type jsonMessage (line 15) | type jsonMessage struct
function numAsUint32 (line 65) | func numAsUint32(n json.Number) (uint32, error) {
type decodedHeaders (line 81) | type decodedHeaders
method UnmarshalJSON (line 83) | func (hs *decodedHeaders) UnmarshalJSON(b []byte) error {
function valueFromType (line 109) | func valueFromType(typ valueType, val interface{}) (Value, error) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go
type Decoder (line 17) | type Decoder struct
method Decode (line 33) | func (d *Decoder) Decode(payloadBuf []byte) (m Message, err error) {
method UseLogger (line 77) | func (d *Decoder) UseLogger(logger aws.Logger) {
function NewDecoder (line 24) | func NewDecoder(r io.Reader) *Decoder {
function logMessageDecode (line 81) | func logMessageDecode(logger aws.Logger, msgBuf *bytes.Buffer, msg Messa...
function decodePrelude (line 111) | func decodePrelude(r io.Reader, crc hash.Hash32) (messagePrelude, error) {
function decodePayload (line 139) | func decodePayload(buf []byte, r io.Reader) ([]byte, error) {
function decodeUint8 (line 146) | func decodeUint8(r io.Reader) (uint8, error) {
function decodeUint16 (line 160) | func decodeUint16(r io.Reader) (uint16, error) {
function decodeUint32 (line 169) | func decodeUint32(r io.Reader) (uint32, error) {
function decodeUint64 (line 178) | func decodeUint64(r io.Reader) (uint64, error) {
function validateCRC (line 188) | func validateCRC(r io.Reader, expect uint32) error {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go
type Encoder (line 12) | type Encoder struct
method Encode (line 29) | func (e *Encoder) Encode(msg Message) error {
function NewEncoder (line 20) | func NewEncoder(w io.Writer) *Encoder {
function encodePrelude (line 63) | func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen ...
function encodeHeaders (line 89) | func encodeHeaders(w io.Writer, headers Headers) error {
function binaryWriteFields (line 107) | func binaryWriteFields(w io.Writer, order binary.ByteOrder, vs ...interf...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go
type LengthError (line 6) | type LengthError struct
method Error (line 13) | func (e LengthError) Error() string {
type ChecksumError (line 19) | type ChecksumError struct
method Error (line 21) | func (e ChecksumError) Error() string {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go
type Unmarshaler (line 14) | type Unmarshaler interface
constant MessageTypeHeader (line 20) | MessageTypeHeader = `:message-type`
constant EventMessageType (line 21) | EventMessageType = `event`
constant ErrorMessageType (line 22) | ErrorMessageType = `error`
constant ExceptionMessageType (line 23) | ExceptionMessageType = `exception`
constant EventTypeHeader (line 26) | EventTypeHeader = `:event-type`
constant ErrorCodeHeader (line 29) | ErrorCodeHeader = `:error-code`
constant ErrorMessageHeader (line 30) | ErrorMessageHeader = `:error-message`
constant ExceptionTypeHeader (line 33) | ExceptionTypeHeader = `:exception-type`
type EventReader (line 37) | type EventReader struct
method UseLogger (line 65) | func (r *EventReader) UseLogger(logger aws.Logger, logLevel aws.LogLev...
method ReadEvent (line 79) | func (r *EventReader) ReadEvent() (event interface{}, err error) {
method unmarshalEventMessage (line 107) | func (r *EventReader) unmarshalEventMessage(
method unmarshalEventException (line 128) | func (r *EventReader) unmarshalEventException(
method unmarshalErrorMessage (line 161) | func (r *EventReader) unmarshalErrorMessage(msg eventstream.Message) (...
method Close (line 178) | func (r *EventReader) Close() error {
function NewEventReader (line 49) | func NewEventReader(
function GetHeaderString (line 184) | func GetHeaderString(msg eventstream.Message, headerName string) (string...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go
type messageError (line 5) | type messageError struct
method Code (line 10) | func (e messageError) Code() string {
method Message (line 14) | func (e messageError) Message() string {
method Error (line 18) | func (e messageError) Error() string {
method OrigErr (line 22) | func (e messageError) OrigErr() error {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go
type Headers (line 10) | type Headers
method Set (line 20) | func (hs *Headers) Set(name string, value Value) {
method Get (line 36) | func (hs Headers) Get(name string) Value {
method Del (line 46) | func (hs *Headers) Del(name string) {
type Header (line 13) | type Header struct
function decodeHeaders (line 55) | func decodeHeaders(r io.Reader) (Headers, error) {
function decodeHeaderName (line 79) | func decodeHeaderName(r io.Reader) (string, error) {
function decodeHeaderValue (line 96) | func decodeHeaderValue(r io.Reader) (Value, error) {
constant maxHeaderNameLen (line 152) | maxHeaderNameLen = 255
type headerName (line 154) | type headerName struct
method encode (line 159) | func (v headerName) encode(w io.Writer) error {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go
constant maxHeaderValueLen (line 12) | maxHeaderValueLen = 1<<15 - 1
type valueType (line 15) | type valueType
method String (line 31) | func (t valueType) String() string {
constant trueValueType (line 19) | trueValueType valueType = iota
constant falseValueType (line 20) | falseValueType
constant int8ValueType (line 21) | int8ValueType
constant int16ValueType (line 22) | int16ValueType
constant int32ValueType (line 23) | int32ValueType
constant int64ValueType (line 24) | int64ValueType
constant bytesValueType (line 25) | bytesValueType
constant stringValueType (line 26) | stringValueType
constant timestampValueType (line 27) | timestampValueType
constant uuidValueType (line 28) | uuidValueType
type rawValue (line 58) | type rawValue struct
method encodeScalar (line 64) | func (r rawValue) encodeScalar(w io.Writer, v interface{}) error {
method encodeFixedSlice (line 71) | func (r rawValue) encodeFixedSlice(w io.Writer, v []byte) error {
method encodeBytes (line 78) | func (r rawValue) encodeBytes(w io.Writer, v []byte) error {
method encodeString (line 100) | func (r rawValue) encodeString(w io.Writer, v string) error {
function decodeFixedBytesValue (line 131) | func decodeFixedBytesValue(r io.Reader, buf []byte) error {
function decodeBytesValue (line 136) | func decodeBytesValue(r io.Reader) ([]byte, error) {
function decodeStringValue (line 153) | func decodeStringValue(r io.Reader) (string, error) {
type Value (line 159) | type Value interface
type BoolValue (line 168) | type BoolValue
method Get (line 171) | func (v BoolValue) Get() interface{} {
method valueType (line 176) | func (v BoolValue) valueType() valueType {
method String (line 183) | func (v BoolValue) String() string {
method encode (line 189) | func (v BoolValue) encode(w io.Writer) error {
type Int8Value (line 195) | type Int8Value
method Get (line 198) | func (v Int8Value) Get() interface{} {
method valueType (line 203) | func (Int8Value) valueType() valueType {
method String (line 207) | func (v Int8Value) String() string {
method encode (line 213) | func (v Int8Value) encode(w io.Writer) error {
method decode (line 221) | func (v *Int8Value) decode(r io.Reader) error {
type Int16Value (line 233) | type Int16Value
method Get (line 236) | func (v Int16Value) Get() interface{} {
method valueType (line 241) | func (Int16Value) valueType() valueType {
method String (line 245) | func (v Int16Value) String() string {
method encode (line 251) | func (v Int16Value) encode(w io.Writer) error {
method decode (line 258) | func (v *Int16Value) decode(r io.Reader) error {
type Int32Value (line 270) | type Int32Value
method Get (line 273) | func (v Int32Value) Get() interface{} {
method valueType (line 278) | func (Int32Value) valueType() valueType {
method String (line 282) | func (v Int32Value) String() string {
method encode (line 288) | func (v Int32Value) encode(w io.Writer) error {
method decode (line 295) | func (v *Int32Value) decode(r io.Reader) error {
type Int64Value (line 307) | type Int64Value
method Get (line 310) | func (v Int64Value) Get() interface{} {
method valueType (line 315) | func (Int64Value) valueType() valueType {
method String (line 319) | func (v Int64Value) String() string {
method encode (line 325) | func (v Int64Value) encode(w io.Writer) error {
method decode (line 332) | func (v *Int64Value) decode(r io.Reader) error {
type BytesValue (line 344) | type BytesValue
method Get (line 347) | func (v BytesValue) Get() interface{} {
method valueType (line 352) | func (BytesValue) valueType() valueType {
method String (line 356) | func (v BytesValue) String() string {
method encode (line 362) | func (v BytesValue) encode(w io.Writer) error {
method decode (line 370) | func (v *BytesValue) decode(r io.Reader) error {
type StringValue (line 382) | type StringValue
method Get (line 385) | func (v StringValue) Get() interface{} {
method valueType (line 390) | func (StringValue) valueType() valueType {
method String (line 394) | func (v StringValue) String() string {
method encode (line 400) | func (v StringValue) encode(w io.Writer) error {
method decode (line 408) | func (v *StringValue) decode(r io.Reader) error {
type TimestampValue (line 420) | type TimestampValue
method Get (line 423) | func (v TimestampValue) Get() interface{} {
method valueType (line 428) | func (TimestampValue) valueType() valueType {
method epochMilli (line 432) | func (v TimestampValue) epochMilli() int64 {
method String (line 438) | func (v TimestampValue) String() string {
method encode (line 445) | func (v TimestampValue) encode(w io.Writer) error {
method decode (line 454) | func (v *TimestampValue) decode(r io.Reader) error {
function timeFromEpochMilli (line 464) | func timeFromEpochMilli(t int64) time.Time {
type UUIDValue (line 472) | type UUIDValue
method Get (line 475) | func (v UUIDValue) Get() interface{} {
method valueType (line 480) | func (UUIDValue) valueType() valueType {
method String (line 484) | func (v UUIDValue) String() string {
method encode (line 490) | func (v UUIDValue) encode(w io.Writer) error {
method decode (line 498) | func (v *UUIDValue) decode(r io.Reader) error {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go
constant preludeLen (line 9) | preludeLen = 8
constant preludeCRCLen (line 10) | preludeCRCLen = 4
constant msgCRCLen (line 11) | msgCRCLen = 4
constant minMsgLen (line 12) | minMsgLen = preludeLen + preludeCRCLen + msgCRCLen
constant maxPayloadLen (line 13) | maxPayloadLen = 1024 * 1024 * 16
constant maxHeadersLen (line 14) | maxHeadersLen = 1024 * 128
constant maxMsgLen (line 15) | maxMsgLen = minMsgLen + maxHeadersLen + maxPayloadLen
type Message (line 20) | type Message struct
method rawMessage (line 25) | func (m *Message) rawMessage() (rawMessage, error) {
type messagePrelude (line 60) | type messagePrelude struct
method PayloadLen (line 66) | func (p messagePrelude) PayloadLen() uint32 {
method ValidateLens (line 70) | func (p messagePrelude) ValidateLens() error {
type rawMessage (line 96) | type rawMessage struct
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
function ValidateEndpointHost (line 23) | func ValidateEndpointHost(opName, host string) error {
function ValidHostLabel (line 52) | func ValidHostLabel(label string) bool {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
constant HostPrefixHandlerName (line 12) | HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
function NewHostPrefixHandler (line 15) | func NewHostPrefixHandler(prefix string, labelsFn func() map[string]stri...
type HostPrefixBuilder (line 29) | type HostPrefixBuilder struct
method Build (line 35) | func (h HostPrefixBuilder) Build(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go
constant idempotencyTokenFillTag (line 13) | idempotencyTokenFillTag = `idempotencyToken`
function CanSetIdempotencyToken (line 20) | func CanSetIdempotencyToken(v reflect.Value, f reflect.StructField) bool {
function GetIdempotencyToken (line 34) | func GetIdempotencyToken() string {
function SetIdempotencyToken (line 43) | func SetIdempotencyToken(v reflect.Value) {
function UUIDVersion4 (line 67) | func UUIDVersion4(u []byte) string {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go
function BuildJSON (line 23) | func BuildJSON(v interface{}) ([]byte, error) {
function buildAny (line 30) | func buildAny(value reflect.Value, buf *bytes.Buffer, tag reflect.Struct...
function buildStruct (line 75) | func buildStruct(value reflect.Value, buf *bytes.Buffer, tag reflect.Str...
function buildList (line 152) | func buildList(value reflect.Value, buf *bytes.Buffer, tag reflect.Struc...
type sortedValues (line 168) | type sortedValues
method Len (line 170) | func (sv sortedValues) Len() int { return len(sv) }
method Swap (line 171) | func (sv sortedValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[...
method Less (line 172) | func (sv sortedValues) Less(i, j int) bool { return sv[i].String() < s...
function buildMap (line 174) | func buildMap(value reflect.Value, buf *bytes.Buffer, tag reflect.Struct...
function buildScalar (line 196) | func buildScalar(v reflect.Value, buf *bytes.Buffer, tag reflect.StructT...
function writeString (line 262) | func writeString(s string, buf *bytes.Buffer) {
function elemOf (line 291) | func elemOf(value reflect.Value) reflect.Value {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go
function UnmarshalJSONError (line 20) | func UnmarshalJSONError(v interface{}, stream io.Reader) error {
function UnmarshalJSON (line 38) | func UnmarshalJSON(v interface{}, stream io.Reader) error {
function unmarshalAny (line 51) | func unmarshalAny(value reflect.Value, data interface{}, tag reflect.Str...
function unmarshalStruct (line 93) | func unmarshalStruct(value reflect.Value, data interface{}, tag reflect....
function unmarshalList (line 141) | func unmarshalList(value reflect.Value, data interface{}, tag reflect.St...
function unmarshalMap (line 165) | func unmarshalMap(value reflect.Value, data interface{}, tag reflect.Str...
function unmarshalScalar (line 189) | func unmarshalScalar(value reflect.Value, data interface{}, tag reflect....
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go
type EscapeMode (line 13) | type EscapeMode
constant NoEscape (line 17) | NoEscape EscapeMode = iota
constant Base64Escape (line 18) | Base64Escape
constant QuotedEscape (line 19) | QuotedEscape
function EncodeJSONValue (line 26) | func EncodeJSONValue(v aws.JSONValue, escape EscapeMode) (string, error) {
function DecodeJSONValue (line 48) | func DecodeJSONValue(v string, escape EscapeMode) (aws.JSONValue, error) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go
type PayloadUnmarshaler (line 15) | type PayloadUnmarshaler interface
type HandlerPayloadUnmarshal (line 22) | type HandlerPayloadUnmarshal struct
method UnmarshalPayload (line 29) | func (h HandlerPayloadUnmarshal) UnmarshalPayload(r io.Reader, v inter...
type PayloadMarshaler (line 47) | type PayloadMarshaler interface
type HandlerPayloadMarshal (line 54) | type HandlerPayloadMarshal struct
method MarshalPayload (line 61) | func (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go
function Build (line 18) | func Build(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go
function Parse (line 18) | func Parse(body url.Values, i interface{}, isEC2 bool) error {
function elemOf (line 23) | func elemOf(value reflect.Value) reflect.Value {
type queryParser (line 30) | type queryParser struct
method parseValue (line 34) | func (q *queryParser) parseValue(v url.Values, value reflect.Value, pr...
method parseStruct (line 66) | func (q *queryParser) parseStruct(v url.Values, value reflect.Value, p...
method parseList (line 117) | func (q *queryParser) parseList(v url.Values, value reflect.Value, pre...
method parseMap (line 151) | func (q *queryParser) parseMap(v url.Values, value reflect.Value, pref...
method parseScalar (line 216) | func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name ...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
function Unmarshal (line 20) | func Unmarshal(r *request.Request) {
function UnmarshalMeta (line 37) | func UnmarshalMeta(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
type xmlErrorResponse (line 15) | type xmlErrorResponse struct
type xmlResponseError (line 21) | type xmlResponseError struct
method UnmarshalXML (line 25) | func (e *xmlResponseError) UnmarshalXML(d *xml.Decoder, start xml.Star...
function UnmarshalError (line 44) | func UnmarshalError(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
function init (line 30) | func init() {
function Build (line 47) | func Build(r *request.Request) {
function BuildAsGET (line 57) | func BuildAsGET(r *request.Request) {
function buildLocationElements (line 65) | func buildLocationElements(r *request.Request, v reflect.Value, buildGET...
function buildBody (line 135) | func buildBody(r *request.Request, v reflect.Value) {
function buildHeader (line 160) | func buildHeader(header *http.Header, v reflect.Value, name string, tag ...
function buildHeaderMap (line 176) | func buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.St...
function buildURI (line 194) | func buildURI(u *url.URL, v reflect.Value, name string, tag reflect.Stru...
function buildQueryString (line 211) | func buildQueryString(query url.Values, v reflect.Value, name string, ta...
function cleanPath (line 240) | func cleanPath(u *url.URL) {
function EscapePath (line 254) | func EscapePath(path string, encodeSep bool) string {
function convertType (line 267) | func convertType(v reflect.Value, tag reflect.StructTag) (str string, er...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go
function PayloadMember (line 6) | func PayloadMember(i interface{}) interface{} {
function PayloadType (line 32) | func PayloadType(i interface{}) string {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
function Unmarshal (line 28) | func Unmarshal(r *request.Request) {
function UnmarshalMeta (line 36) | func UnmarshalMeta(r *request.Request) {
function unmarshalBody (line 48) | func unmarshalBody(r *request.Request, v reflect.Value) {
function unmarshalLocationElements (line 99) | func unmarshalLocationElements(r *request.Request, v reflect.Value) {
function unmarshalStatusCode (line 136) | func unmarshalStatusCode(v reflect.Value, statusCode int) {
function unmarshalHeaderMap (line 148) | func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix str...
function unmarshalHeader (line 163) | func unmarshalHeader(v reflect.Value, header string, tag reflect.StructT...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
function Build (line 32) | func Build(r *request.Request) {
function Unmarshal (line 52) | func Unmarshal(r *request.Request) {
function UnmarshalMeta (line 72) | func UnmarshalMeta(r *request.Request) {
function UnmarshalError (line 77) | func UnmarshalError(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go
constant RFC822TimeFormatName (line 10) | RFC822TimeFormatName = "rfc822"
constant ISO8601TimeFormatName (line 11) | ISO8601TimeFormatName = "iso8601"
constant UnixTimeFormatName (line 12) | UnixTimeFormatName = "unixTimestamp"
constant RFC822TimeFormat (line 18) | RFC822TimeFormat = "Mon, 2 Jan 2006 15:04:05 GMT"
constant ISO8601TimeFormat (line 21) | ISO8601TimeFormat = "2006-01-02T15:04:05Z"
function IsKnownTimestampFormat (line 26) | func IsKnownTimestampFormat(name string) bool {
function FormatTime (line 40) | func FormatTime(name string, t time.Time) string {
function ParseTime (line 57) | func ParseTime(formatName, value string) (time.Time, error) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go
function UnmarshalDiscardBody (line 14) | func UnmarshalDiscardBody(r *request.Request) {
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
function BuildXML (line 18) | func BuildXML(params interface{}, e *xml.Encoder) error {
function buildXML (line 22) | func buildXML(params interface{}, e *xml.Encoder, sorted bool) error {
function elemOf (line 37) | func elemOf(value reflect.Value) reflect.Value {
type xmlBuilder (line 45) | type xmlBuilder struct
method buildValue (line 55) | func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode,...
method buildStruct (line 92) | func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode...
method buildList (line 171) | func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, ...
method buildMap (line 213) | func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, t...
method buildScalar (line 267) | func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go
function UnmarshalXMLError (line 22) | func UnmarshalXMLError(v interface{}, stream io.Reader) error {
function UnmarshalXML (line 38) | func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
function parse (line 66) | func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
function parseStruct (line 107) | func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) ...
function parseList (line 162) | func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) er...
function parseMap (line 201) | func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) err...
function parseMapEntry (line 218) | func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag...
function parseScalar (line 247) | func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) ...
FILE: vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go
type XMLNode (line 11) | type XMLNode struct
method AddChild (line 31) | func (n *XMLNode) AddChild(child *XMLNode) {
method findNamespaces (line 94) | func (n *XMLNode) findNamespaces() {
method findElem (line 105) | func (n *XMLNode) findElem(name string) (string, bool) {
function NewXMLElement (line 22) | func NewXMLElement(name xml.Name) *XMLNode {
function XMLToStruct (line 40) | func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) {
function StructToXML (line 121) | func StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error {
FILE: vendor/github.com/aws/aws-sdk-go/service/s3/api.go
constant opAbortMultipartUpload (line 25) | opAbortMultipartUpload = "AbortMultipartUpload"
method AbortMultipartUploadRequest (line 51) | func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInpu...
method AbortMultipartUpload (line 87) | func (c *S3) AbortMultipartUpload(input *AbortMultipartUploadInput) (*Ab...
method AbortMultipartUploadWithContext (line 101) | func (c *S3) AbortMultipartUploadWithContext(ctx aws.Context, input *Abo...
constant opCompleteMultipartUpload (line 108) | opCompleteMultipartUpload = "CompleteMultipartUpload"
method CompleteMultipartUploadRequest (line 134) | func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUplo...
method CompleteMultipartUpload (line 161) | func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput...
method CompleteMultipartUploadWithContext (line 175) | func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *...
constant opCopyObject (line 182) | opCopyObject = "CopyObject"
method CopyObjectRequest (line 208) | func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Req...
method CopyObject (line 241) | func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, erro...
method CopyObjectWithContext (line 255) | func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInp...
constant opCreateBucket (line 262) | opCreateBucket = "CreateBucket"
method CreateBucketRequest (line 288) | func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request...
method CreateBucket (line 323) | func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput...
method CreateBucketWithContext (line 337) | func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucke...
constant opCreateMultipartUpload (line 344) | opCreateMultipartUpload = "CreateMultipartUpload"
method CreateMultipartUploadRequest (line 370) | func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadIn...
method CreateMultipartUpload (line 403) | func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*...
method CreateMultipartUploadWithContext (line 417) | func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *Cr...
constant opDeleteBucket (line 424) | opDeleteBucket = "DeleteBucket"
method DeleteBucketRequest (line 450) | func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request...
method DeleteBucket (line 479) | func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput...
method DeleteBucketWithContext (line 493) | func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucke...
constant opDeleteBucketAnalyticsConfiguration (line 500) | opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
method DeleteBucketAnalyticsConfigurationRequest (line 526) | func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBuck...
method DeleteBucketAnalyticsConfiguration (line 559) | func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnaly...
method DeleteBucketAnalyticsConfigurationWithContext (line 573) | func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Conte...
constant opDeleteBucketCors (line 580) | opDeleteBucketCors = "DeleteBucketCors"
method DeleteBucketCorsRequest (line 606) | func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req ...
method DeleteBucketCors (line 634) | func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBuck...
method DeleteBucketCorsWithContext (line 648) | func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteB...
constant opDeleteBucketEncryption (line 655) | opDeleteBucketEncryption = "DeleteBucketEncryption"
method DeleteBucketEncryptionRequest (line 681) | func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryption...
method DeleteBucketEncryption (line 709) | func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) ...
method DeleteBucketEncryptionWithContext (line 723) | func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *D...
constant opDeleteBucketInventoryConfiguration (line 730) | opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
method DeleteBucketInventoryConfigurationRequest (line 756) | func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBuck...
method DeleteBucketInventoryConfiguration (line 785) | func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInven...
method DeleteBucketInventoryConfigurationWithContext (line 799) | func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Conte...
constant opDeleteBucketLifecycle (line 806) | opDeleteBucketLifecycle = "DeleteBucketLifecycle"
method DeleteBucketLifecycleRequest (line 832) | func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleIn...
method DeleteBucketLifecycle (line 860) | func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*...
method DeleteBucketLifecycleWithContext (line 874) | func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *De...
constant opDeleteBucketMetricsConfiguration (line 881) | opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
method DeleteBucketMetricsConfigurationRequest (line 907) | func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucket...
method DeleteBucketMetricsConfiguration (line 936) | func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetrics...
method DeleteBucketMetricsConfigurationWithContext (line 950) | func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context...
constant opDeleteBucketPolicy (line 957) | opDeleteBucketPolicy = "DeleteBucketPolicy"
method DeleteBucketPolicyRequest (line 983) | func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (...
method DeleteBucketPolicy (line 1011) | func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*Delete...
method DeleteBucketPolicyWithContext (line 1025) | func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *Delet...
constant opDeleteBucketReplication (line 1032) | opDeleteBucketReplication = "DeleteBucketReplication"
method DeleteBucketReplicationRequest (line 1058) | func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicati...
method DeleteBucketReplication (line 1088) | func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput...
method DeleteBucketReplicationWithContext (line 1102) | func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *...
constant opDeleteBucketTagging (line 1109) | opDeleteBucketTagging = "DeleteBucketTagging"
method DeleteBucketTaggingRequest (line 1135) | func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput)...
method DeleteBucketTagging (line 1163) | func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*Dele...
method DeleteBucketTaggingWithContext (line 1177) | func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *Dele...
constant opDeleteBucketWebsite (line 1184) | opDeleteBucketWebsite = "DeleteBucketWebsite"
method DeleteBucketWebsiteRequest (line 1210) | func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput)...
method DeleteBucketWebsite (line 1238) | func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*Dele...
method DeleteBucketWebsiteWithContext (line 1252) | func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *Dele...
constant opDeleteObject (line 1259) | opDeleteObject = "DeleteObject"
method DeleteObjectRequest (line 1285) | func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request...
method DeleteObject (line 1314) | func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput...
method DeleteObjectWithContext (line 1328) | func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjec...
constant opDeleteObjectTagging (line 1335) | opDeleteObjectTagging = "DeleteObjectTagging"
method DeleteObjectTaggingRequest (line 1361) | func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput)...
method DeleteObjectTagging (line 1388) | func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*Dele...
method DeleteObjectTaggingWithContext (line 1402) | func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *Dele...
constant opDeleteObjects (line 1409) | opDeleteObjects = "DeleteObjects"
method DeleteObjectsRequest (line 1435) | func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *reque...
method DeleteObjects (line 1463) | func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOut...
method DeleteObjectsWithContext (line 1477) | func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObje...
constant opDeletePublicAccessBlock (line 1484) | opDeletePublicAccessBlock = "DeletePublicAccessBlock"
method DeletePublicAccessBlockRequest (line 1510) | func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlo...
method DeletePublicAccessBlock (line 1538) | func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput...
method DeletePublicAccessBlockWithContext (line 1552) | func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *...
constant opGetBucketAccelerateConfiguration (line 1559) | opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
method GetBucketAccelerateConfigurationRequest (line 1585) | func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAcc...
method GetBucketAccelerateConfiguration (line 1612) | func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerate...
method GetBucketAccelerateConfigurationWithContext (line 1626) | func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context...
constant opGetBucketAcl (line 1633) | opGetBucketAcl = "GetBucketAcl"
method GetBucketAclRequest (line 1659) | func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request...
method GetBucketAcl (line 1686) | func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput...
method GetBucketAclWithContext (line 1700) | func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAc...
constant opGetBucketAnalyticsConfiguration (line 1707) | opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
method GetBucketAnalyticsConfigurationRequest (line 1733) | func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnal...
method GetBucketAnalyticsConfiguration (line 1761) | func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsCo...
method GetBucketAnalyticsConfigurationWithContext (line 1775) | func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context,...
constant opGetBucketCors (line 1782) | opGetBucketCors = "GetBucketCors"
method GetBucketCorsRequest (line 1808) | func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *reque...
method GetBucketCors (line 1835) | func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOut...
method GetBucketCorsWithContext (line 1849) | func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketC...
constant opGetBucketEncryption (line 1856) | opGetBucketEncryption = "GetBucketEncryption"
method GetBucketEncryptionRequest (line 1882) | func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput)...
method GetBucketEncryption (line 1909) | func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetB...
method GetBucketEncryptionWithContext (line 1923) | func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetB...
constant opGetBucketInventoryConfiguration (line 1930) | opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
method GetBucketInventoryConfigurationRequest (line 1956) | func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInve...
method GetBucketInventoryConfiguration (line 1984) | func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryCo...
method GetBucketInventoryConfigurationWithContext (line 1998) | func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context,...
constant opGetBucketLifecycle (line 2005) | opGetBucketLifecycle = "GetBucketLifecycle"
method GetBucketLifecycleRequest (line 2033) | func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (...
method GetBucketLifecycle (line 2065) | func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBuc...
method GetBucketLifecycleWithContext (line 2081) | func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBu...
constant opGetBucketLifecycleConfiguration (line 2088) | opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
method GetBucketLifecycleConfigurationRequest (line 2114) | func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLife...
method GetBucketLifecycleConfiguration (line 2141) | func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleCo...
method GetBucketLifecycleConfigurationWithContext (line 2155) | func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context,...
constant opGetBucketLocation (line 2162) | opGetBucketLocation = "GetBucketLocation"
method GetBucketLocationRequest (line 2188) | func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (re...
method GetBucketLocation (line 2215) | func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucke...
method GetBucketLocationWithContext (line 2229) | func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBuc...
constant opGetBucketLogging (line 2236) | opGetBucketLogging = "GetBucketLogging"
method GetBucketLoggingRequest (line 2262) | func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req ...
method GetBucketLogging (line 2290) | func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketL...
method GetBucketLoggingWithContext (line 2304) | func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBuck...
constant opGetBucketMetricsConfiguration (line 2311) | opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
method GetBucketMetricsConfigurationRequest (line 2337) | func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetric...
method GetBucketMetricsConfiguration (line 2365) | func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfig...
method GetBucketMetricsConfigurationWithContext (line 2379) | func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, i...
constant opGetBucketNotification (line 2386) | opGetBucketNotification = "GetBucketNotification"
method GetBucketNotificati
Copy disabled (too large)
Download .json
Condensed preview — 2001 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (22,934K chars).
[
{
"path": ".gitignore",
"chars": 58,
"preview": ".terraform\nterraform.tfstate*\nterraform.tfvars\nassets\nbin\n"
},
{
"path": ".travis.yml",
"chars": 193,
"preview": "language: go\n\ngo:\n - \"1.10\"\n\ninstall:\n - go get -u golang.org/x/lint/golint\n - go get -u github.com/hashicorp/terrafo"
},
{
"path": "LICENSE",
"chars": 16725,
"preview": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\""
},
{
"path": "Makefile",
"chars": 3446,
"preview": ".PHONY: all-release build clean fmt fmt-go fmt-terraform lint lint-go lint-terraform release test vendor vendor-status v"
},
{
"path": "README.md",
"chars": 3768,
"preview": "# Vultr Terraform Provider\n\nThis is a Terraform provider for Vultr. Find out more about [Vultr](https://www.vultr.com/ab"
},
{
"path": "examples/application/example.tf",
"chars": 1165,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/application/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/bare_metal/example.tf",
"chars": 907,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/bare_metal/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/basic/example.tf",
"chars": 2466,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/basic/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/block_storage/example.tf",
"chars": 520,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/block_storage/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/dns/example.tf",
"chars": 513,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/dns/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/kubernetes/example.tf",
"chars": 798,
"preview": "resource \"vultr_dns_domain\" \"example\" {\n domain = \"example.com\"\n ip = \"0.0.0.0\"\n}\n\nmodule \"typhoon\" {\n source = \""
},
{
"path": "examples/kubernetes/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/network/example.tf",
"chars": 1374,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/network/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/reserved_ip/example.tf",
"chars": 1289,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/reserved_ip/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "examples/snapshot/example.tf",
"chars": 902,
"preview": "// Configure the Vultr provider.\n// Alternatively, export the API key as an environment variable: `export VULTR_API_KEY="
},
{
"path": "examples/snapshot/versions.tf",
"chars": 45,
"preview": "terraform {\n required_version = \">= 0.12\"\n}\n"
},
{
"path": "glide.yaml",
"chars": 367,
"preview": "package: github.com/squat/terraform-provider-vultr\nimport:\n- package: github.com/JamesClonk/vultr\n version: ea92af1525b"
},
{
"path": "main.go",
"chars": 203,
"preview": "package main\n\nimport (\n\t\"github.com/hashicorp/terraform/plugin\"\n\t\"github.com/squat/terraform-provider-vultr/vultr\"\n)\n\nfu"
},
{
"path": "structs/field.go",
"chars": 3842,
"preview": "package structs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n)\n\nvar (\n\terrNotExported = errors.New(\"field is not exported\")\n\ter"
},
{
"path": "structs/structs.go",
"chars": 15234,
"preview": "// Package structs is a fork of \"github.com/fatih/structs\" which is archived. This contains various utilities functions "
},
{
"path": "structs/tags.go",
"chars": 695,
"preview": "package structs\n\nimport \"strings\"\n\n// tagOptions contains a slice of tag options\ntype tagOptions []string\n\n// Has return"
},
{
"path": "vendor/cloud.google.com/go/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/cloud.google.com/go/compute/metadata/metadata.go",
"chars": 16113,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/iam/iam.go",
"chars": 9272,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/internal/annotate.go",
"chars": 1660,
"preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/internal/optional/optional.go",
"chars": 2504,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/internal/retry.go",
"chars": 1728,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/internal/trace/trace.go",
"chars": 3436,
"preview": "// Copyright 2018 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/internal/version/version.go",
"chars": 1757,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/acl.go",
"chars": 8957,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/bucket.go",
"chars": 37328,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/copy.go",
"chars": 8062,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/doc.go",
"chars": 6167,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/go110.go",
"chars": 1003,
"preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/iam.go",
"chars": 3522,
"preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/invoke.go",
"chars": 1082,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/not_go110.go",
"chars": 1222,
"preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/notifications.go",
"chars": 5973,
"preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/reader.go",
"chars": 11251,
"preview": "// Copyright 2016 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/storage.go",
"chars": 44665,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/cloud.google.com/go/storage/writer.go",
"chars": 7754,
"preview": "// Copyright 2014 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/github.com/JamesClonk/vultr/LICENSE",
"chars": 1083,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Fabio Berchtold\n\nPermission is hereby granted, free of charge, to any person o"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/account_info.go",
"chars": 1750,
"preview": "package lib\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// AccountInfo of Vultr account\ntype AccountInfo struct {\n\tB"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/applications.go",
"chars": 942,
"preview": "package lib\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// Application on Vultr\ntype Application struct {\n\tID string `json:"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/backup.go",
"chars": 1200,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"time\"\n)\n\n// Backup of a virtual machine\ntype Backup struct {\n\tID "
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/bare_metal.go",
"chars": 11377,
"preview": "package lib\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// BareMeta"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/bare_metal_plans.go",
"chars": 1922,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// BareMetalPlan is a bare metal-compatible plan on Vultr.\ntype BareMetalPlan st"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/block_storage.go",
"chars": 5208,
"preview": "package lib\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// BlockStorage on Vultr accou"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/client.go",
"chars": 6200,
"preview": "package lib\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"math/rand"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/dns.go",
"chars": 3726,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// DNSDomain represents a DNS domain on Vultr\ntype DNSDoma"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/firewall.go",
"chars": 6950,
"preview": "package lib\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// FirewallGroup repres"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/ip.go",
"chars": 4750,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n)\n\n// IPv4 information of a virtual machine\ntype IPv4 struct {\n\tIP "
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/iso.go",
"chars": 1004,
"preview": "package lib\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// ISO image on Vultr\ntype ISO struct {\n\tID int `json:\"ISOID\"`\n\tCre"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/network.go",
"chars": 2111,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Network on Vultr account\ntype Network struct {\n\t"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/os.go",
"chars": 850,
"preview": "package lib\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// OS image on Vultr\ntype OS struct {\n\tID int `json:\"OSID\"`\n\tName "
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/plans.go",
"chars": 1933,
"preview": "package lib\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Plan on Vultr\ntype Plan struct {\n\tID int `jso"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/regions.go",
"chars": 1125,
"preview": "package lib\n\nimport \"sort\"\n\n// Region on Vultr\ntype Region struct {\n\tID int `json:\"DCID,string\"`\n\tName "
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/reservedip.go",
"chars": 4691,
"preview": "package lib\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// IP on Vultr\ntype IP struct "
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/scripts.go",
"chars": 3076,
"preview": "package lib\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// StartupScript on Vultr account\ntype St"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/servers.go",
"chars": 19972,
"preview": "package lib\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Server ("
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/snapshots.go",
"chars": 1913,
"preview": "package lib\n\nimport (\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Snapshot of a virtual machine on Vultr account\ntype Snapshot s"
},
{
"path": "vendor/github.com/JamesClonk/vultr/lib/sshkeys.go",
"chars": 1777,
"preview": "package lib\n\nimport (\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// SSHKey on Vultr account\ntype SSHKey struct {\n\tID string `"
},
{
"path": "vendor/github.com/agext/levenshtein/LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/agext/levenshtein/NOTICE",
"chars": 157,
"preview": "Alrux Go EXTensions (AGExt) - package levenshtein\nCopyright 2016 ALRUX Inc.\n\nThis product includes software developed at"
},
{
"path": "vendor/github.com/agext/levenshtein/levenshtein.go",
"chars": 10515,
"preview": "// Copyright 2016 ALRUX Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/github.com/agext/levenshtein/params.go",
"chars": 4328,
"preview": "// Copyright 2016 ALRUX Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
},
{
"path": "vendor/github.com/apparentlymart/go-cidr/LICENSE",
"chars": 1057,
"preview": "Copyright (c) 2015 Martin Atkins\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this s"
},
{
"path": "vendor/github.com/apparentlymart/go-cidr/cidr/cidr.go",
"chars": 6644,
"preview": "// Package cidr is a collection of assorted utilities for computing\n// network and host addresses within network ranges."
},
{
"path": "vendor/github.com/apparentlymart/go-cidr/cidr/wrangling.go",
"chars": 878,
"preview": "package cidr\n\nimport (\n\t\"fmt\"\n\t\"math/big\"\n\t\"net\"\n)\n\nfunc ipToInt(ip net.IP) (*big.Int, int) {\n\tval := &big.Int{}\n\tval.Se"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/LICENSE",
"chars": 4656,
"preview": "Copyright (c) 2017 Martin Atkins\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this s"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/all_tokens.go",
"chars": 779,
"preview": "package textseg\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n)\n\n// AllTokens is a utility that uses a bufio.SplitFunc to produce a slice "
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/generate.go",
"chars": 516,
"preview": "package textseg\n\n//go:generate go run make_tables.go -output tables.go\n//go:generate go run make_test_tables.go -output "
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/grapheme_clusters.go",
"chars": 198403,
"preview": "\n// line 1 \"grapheme_clusters.rl\"\npackage textseg\n\nimport (\n \"errors\"\n \"unicode/utf8\"\n)\n\n// Generated from graphem"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/make_tables.go",
"chars": 7892,
"preview": "// Copyright (c) 2014 Couchbase, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not u"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/make_test_tables.go",
"chars": 4967,
"preview": "// Copyright (c) 2014 Couchbase, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not u"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/tables.go",
"chars": 296329,
"preview": "// Generated by running\n// maketables --url=http://www.unicode.org/Public/9.0.0/ucd/auxiliary/\n// DO NOT EDIT\n\npack"
},
{
"path": "vendor/github.com/apparentlymart/go-textseg/textseg/utf8_seqs.go",
"chars": 521,
"preview": "package textseg\n\nimport \"unicode/utf8\"\n\n// ScanGraphemeClusters is a split function for bufio.Scanner that splits\n// on "
},
{
"path": "vendor/github.com/armon/go-radix/LICENSE",
"chars": 1079,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2014 Armon Dadgar\n\nPermission is hereby granted, free of charge, to any person obta"
},
{
"path": "vendor/github.com/armon/go-radix/radix.go",
"chars": 10679,
"preview": "package radix\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\n// WalkFn is used when walking the tree. Takes a\n// key and value, returni"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/LICENSE.txt",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/NOTICE.txt",
"chars": 120,
"preview": "AWS SDK for Go\nCopyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.\nCopyright 2014-2015 Stripe, Inc.\n"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go",
"chars": 5427,
"preview": "// Package awserr represents API error interface accessors for the SDK.\npackage awserr\n\n// An Error wraps lower level er"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go",
"chars": 6044,
"preview": "package awserr\n\nimport (\n\t\"encoding/hex\"\n\t\"fmt\"\n)\n\n// SprintError returns a string of the formatted error code.\n//\n// Bo"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go",
"chars": 2779,
"preview": "package awsutil\n\nimport (\n\t\"io\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Copy deeply copies a src structure to dst. Useful for copying r"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go",
"chars": 925,
"preview": "package awsutil\n\nimport (\n\t\"reflect\"\n)\n\n// DeepEqual returns if the two values are deeply equal like reflect.DeepEqual.\n"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go",
"chars": 5424,
"preview": "package awsutil\n\nimport (\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/jmespath/go-jmespath\"\n)\n\nvar indexRe "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go",
"chars": 2511,
"preview": "package awsutil\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// Prettify returns the string representation o"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go",
"chars": 1925,
"preview": "package awsutil\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// StringValue returns the string representation of a"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/client/client.go",
"chars": 2860,
"preview": "package client\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/client/metadata\"\n\t\"git"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go",
"chars": 2925,
"preview": "package client\n\nimport (\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n\t\"github.com/aws/aws-sdk-go/intern"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/client/logger.go",
"chars": 5434,
"preview": "package client\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http/httputil\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"git"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go",
"chars": 290,
"preview": "package metadata\n\n// ClientInfo wraps immutable data from the client.Client structure.\ntype ClientInfo struct {\n\tService"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/config.go",
"chars": 17521,
"preview": "package aws\n\nimport (\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\t\"github.com/aws/aws-sdk-go/aws/"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go",
"chars": 1536,
"preview": "// +build !go1.9\n\npackage aws\n\nimport \"time\"\n\n// Context is an copy of the Go v1.7 stdlib's context.Context interface.\n/"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go",
"chars": 285,
"preview": "// +build go1.9\n\npackage aws\n\nimport \"context\"\n\n// Context is an alias of the Go stdlib's context.Context interface.\n// "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go",
"chars": 1374,
"preview": "// +build !go1.7\n\npackage aws\n\nimport \"time\"\n\n// An emptyCtx is a copy of the Go 1.7 context.emptyCtx type. This is copi"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go",
"chars": 616,
"preview": "// +build go1.7\n\npackage aws\n\nimport \"context\"\n\n// BackgroundContext returns a context that will never be canceled, has "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go",
"chars": 500,
"preview": "package aws\n\nimport (\n\t\"time\"\n)\n\n// SleepWithContext will wait for the timer duration to expire, or the context\n// is ca"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/convert_types.go",
"chars": 8898,
"preview": "package aws\n\nimport \"time\"\n\n// String returns a pointer to the string value passed in.\nfunc String(v string) *string {\n\t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go",
"chars": 7341,
"preview": "package corehandlers\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"githu"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go",
"chars": 512,
"preview": "package corehandlers\n\nimport \"github.com/aws/aws-sdk-go/aws/request\"\n\n// ValidateParametersHandler is a request handler "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go",
"chars": 1004,
"preview": "package corehandlers\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/reques"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go",
"chars": 3263,
"preview": "package credentials\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nvar (\n\t// ErrNoValidProvidersFoundInChain Is re"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go",
"chars": 9094,
"preview": "// Package credentials provides credential retrieval and management\n//\n// The Credentials is the primary method of getti"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go",
"chars": 5744,
"preview": "package ec2rolecreds\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awse"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go",
"chars": 6270,
"preview": "// Package endpointcreds provides support for retrieving credentials from an\n// arbitrary HTTP endpoint.\n//\n// The crede"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go",
"chars": 2042,
"preview": "package credentials\n\nimport (\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// EnvProviderName provides a name of En"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go",
"chars": 12742,
"preview": "/*\nPackage processcreds is a credential Provider to retrieve `credential_process`\ncredentials.\n\nWARNING: The following d"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go",
"chars": 4818,
"preview": "package credentials\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/internal"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go",
"chars": 1698,
"preview": "package credentials\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// StaticProviderName provides a name of Static"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go",
"chars": 12324,
"preview": "/*\nPackage stscreds are credential Providers to retrieve STS AWS credentials.\n\nSTS provides multiple ways to retrieve cr"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go",
"chars": 1441,
"preview": "// Package csm provides Client Side Monitoring (CSM) which enables sending metrics\n// via UDP connection. Using the Star"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go",
"chars": 1549,
"preview": "package csm\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n)\n\nvar (\n\tlock sync.Mutex\n)\n\n// Client side metric handler names\nconst (\n\tAPICallMe"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go",
"chars": 3818,
"preview": "package csm\n\nimport (\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n)\n\ntype metricTime time.Time\n\nfunc (t metricT"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go",
"chars": 833,
"preview": "package csm\n\nimport (\n\t\"sync/atomic\"\n)\n\nconst (\n\trunningEnum = iota\n\tpausedEnum\n)\n\nvar (\n\t// MetricsChannelSize of metri"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go",
"chars": 387,
"preview": "package csm\n\ntype metricException interface {\n\tException() string\n\tMessage() string\n}\n\ntype requestException struct {\n\te"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go",
"chars": 5516,
"preview": "package csm\n\nimport (\n\t\"encoding/json\"\n\t\"net\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go",
"chars": 6835,
"preview": "// Package defaults is a collection of helpers to retrieve the SDK's default\n// configuration and handlers.\n//\n// Genera"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go",
"chars": 768,
"preview": "package defaults\n\nimport (\n\t\"github.com/aws/aws-sdk-go/internal/shareddefaults\"\n)\n\n// SharedCredentialsFilename returns "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/doc.go",
"chars": 2381,
"preview": "// Package aws provides the core SDK's utilities and shared types. Use this package's\n// utilities to simplify setting a"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go",
"chars": 5149,
"preview": "package ec2metadata\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/aw"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go",
"chars": 4916,
"preview": "// Package ec2metadata provides the client for making API calls to the\n// EC2 Metadata service.\n//\n// This package's cli"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go",
"chars": 4599,
"preview": "package endpoints\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\ntype modelDefiniti"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go",
"chars": 114289,
"preview": "// Code generated by aws/endpoints/v3model_codegen.go. DO NOT EDIT.\n\npackage endpoints\n\nimport (\n\t\"regexp\"\n)\n\n// Partiti"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go",
"chars": 11645,
"preview": "package endpoints\n\n// Service identifiers\n//\n// Deprecated: Use client package's EndpointsID value instead of these\n// S"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go",
"chars": 2812,
"preview": "// Package endpoints provides the types and functionality for defining regions\n// and endpoints, as well as querying tho"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go",
"chars": 14991,
"preview": "package endpoints\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// Options provide the configur"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go",
"chars": 7317,
"preview": "package endpoints\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype partitions []partition\n\nfunc (ps partitions) "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go",
"chars": 8434,
"preview": "// +build codegen\n\npackage endpoints\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"text/template\"\n\t\"unicode\"\n)\n\n// A Co"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/errors.go",
"chars": 472,
"preview": "package aws\n\nimport \"github.com/aws/aws-sdk-go/aws/awserr\"\n\nvar (\n\t// ErrMissingRegion is an error that is returned if r"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go",
"chars": 290,
"preview": "package aws\n\n// JSONValue is a representation of a grab bag type that will be marshaled\n// into a json string. This type"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/logger.go",
"chars": 4009,
"preview": "package aws\n\nimport (\n\t\"log\"\n\t\"os\"\n)\n\n// A LogLevelType defines the level logging should be performed at. Used to instru"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go",
"chars": 144,
"preview": "package request\n\nimport (\n\t\"strings\"\n)\n\nfunc isErrConnectionReset(err error) bool {\n\treturn strings.Contains(err.Error()"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go",
"chars": 7868,
"preview": "package request\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// A Handlers provides a collection of request handlers for various\n// st"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go",
"chars": 358,
"preview": "package request\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n)\n\nfunc copyHTTPRequest(r *http.Request, body io.ReadCloser) *htt"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go",
"chars": 1273,
"preview": "package request\n\nimport (\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\n// offsetReader is a thread-safe"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request.go",
"chars": 20183,
"preview": "package request\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/a"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go",
"chars": 1341,
"preview": "// +build !go1.8\n\npackage request\n\nimport \"io\"\n\n// NoBody is an io.ReadCloser with no bytes. Read always returns EOF\n// "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go",
"chars": 953,
"preview": "// +build go1.8\n\npackage request\n\nimport (\n\t\"net/http\"\n)\n\n// NoBody is a http.NoBody reader instructing Go HTTP client t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go",
"chars": 406,
"preview": "// +build go1.7\n\npackage request\n\nimport \"github.com/aws/aws-sdk-go/aws\"\n\n// setContext updates the Request to use the p"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go",
"chars": 394,
"preview": "// +build !go1.7\n\npackage request\n\nimport \"github.com/aws/aws-sdk-go/aws\"\n\n// setContext updates the Request to use the "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go",
"chars": 7714,
"preview": "package request\n\nimport (\n\t\"reflect\"\n\t\"sync/atomic\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/aw"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go",
"chars": 4408,
"preview": "package request\n\nimport (\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// Retrye"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go",
"chars": 2453,
"preview": "package request\n\nimport (\n\t\"io\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nvar timeoutErr = awserr.New(\n\tErrCod"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/validation.go",
"chars": 7623,
"preview": "package request\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nconst (\n\t// InvalidParameterErrCod"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go",
"chars": 9043,
"preview": "package request\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"git"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport.go",
"chars": 561,
"preview": "// +build go1.7\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a custom "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_5.go",
"chars": 417,
"preview": "// +build !go1.6,go1.5\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/cabundle_transport_1_6.go",
"chars": 461,
"preview": "// +build !go1.7,go1.6\n\npackage session\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Transport that should be used when a "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/doc.go",
"chars": 11306,
"preview": "/*\nPackage session provides configuration for the SDK's service clients.\n\nSessions can be shared across all service clie"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go",
"chars": 7525,
"preview": "package session\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/session.go",
"chars": 25543,
"preview": "package session\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\n\t\"github.com/aws/aws"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go",
"chars": 9961,
"preview": "package session\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/credentials\"\n\n"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go",
"chars": 1816,
"preview": "package v4\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n)\n\n// validator houses a set of rule needed for validation of a\n// string va"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go",
"chars": 175,
"preview": "package v4\n\n// WithUnsignedPayload will enable and set the UnsignedPayload field to\n// true of the signer.\nfunc WithUnsi"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go",
"chars": 295,
"preview": "// +build go1.5\n\npackage v4\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n)\n\nfunc getURIPath(u *url.URL) string {\n\tvar uri string\n\n\tif"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go",
"chars": 26787,
"preview": "// Package v4 implements signing for AWS V4 signer\n//\n// Provides request signing for request that need to be signed wit"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/types.go",
"chars": 5686,
"preview": "package aws\n\nimport (\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go/internal/sdkio\"\n)\n\n// ReadSeekCloser wraps a io.Reader "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/url.go",
"chars": 265,
"preview": "// +build go1.8\n\npackage aws\n\nimport \"net/url\"\n\n// URLHostname will extract the Hostname without port from the URL value"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go",
"chars": 627,
"preview": "// +build !go1.8\n\npackage aws\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n)\n\n// URLHostname will extract the Hostname without port f"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/aws/version.go",
"chars": 232,
"preview": "// Package aws provides core functionality for making requests to AWS services.\npackage aws\n\n// SDKName is the name of t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go",
"chars": 2567,
"preview": "package ini\n\n// ASTKind represents different states in the parse table\n// and the type of AST that is being constructed\n"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go",
"chars": 173,
"preview": "package ini\n\nvar commaRunes = []rune(\",\")\n\nfunc isComma(b rune) bool {\n\treturn b == ','\n}\n\nfunc newCommaToken() Token {\n"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go",
"chars": 578,
"preview": "package ini\n\n// isComment will return whether or not the next byte(s) is a\n// comment.\nfunc isComment(b []rune) bool {\n\t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go",
"chars": 680,
"preview": "// Package ini is an LL(1) parser for configuration files.\n//\n//\tExample:\n//\tsections, err := ini.OpenFile(\"/path/to/fil"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go",
"chars": 123,
"preview": "package ini\n\n// emptyToken is used to satisfy the Token interface\nvar emptyToken = newToken(TokenNone, []rune{}, NoneTyp"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go",
"chars": 565,
"preview": "package ini\n\n// newExpression will return an expression AST.\n// Expr represents an expression\n//\n//\tgrammar:\n//\texpr -> "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go",
"chars": 174,
"preview": "// +build gofuzz\n\npackage ini\n\nimport (\n\t\"bytes\"\n)\n\nfunc Fuzz(data []byte) int {\n\tb := bytes.NewReader(data)\n\n\tif _, err"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go",
"chars": 996,
"preview": "package ini\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\n// OpenFile takes a path to a given file, "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go",
"chars": 3036,
"preview": "package ini\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"io/ioutil\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n)\n\nconst (\n\t// ErrCodeUnableT"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go",
"chars": 8704,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// State enums for the parse table\nconst (\n\tInvalidState = iota\n\t// stmt -> value "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go",
"chars": 5938,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\trunesTrue = []rune(\"true\")\n\trunesFalse = []rune(\"false\")\n)"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go",
"chars": 458,
"preview": "package ini\n\nfunc isNewline(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn false\n\t}\n\n\tif b[0] == '\\n' {\n\t\treturn true\n\t}\n\n\t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go",
"chars": 2636,
"preview": "package ini\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\nconst (\n\tnone = numberFormat(iota)\n\tbinary\n\toctal\n\tdecimal\n\thex\n\texp"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go",
"chars": 565,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n)\n\nvar (\n\tequalOp = []rune(\"=\")\n\tequalColonOp = []rune(\":\")\n)\n\nfunc isOp(b []rune) boo"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go",
"chars": 907,
"preview": "package ini\n\nimport \"fmt\"\n\nconst (\n\t// ErrCodeParseError is returned when a parsing error\n\t// has occurred.\n\tErrCodePars"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go",
"chars": 1234,
"preview": "package ini\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n)\n\n// ParseStack is a stack that contains a container, the stack portion,\n// and t"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go",
"chars": 578,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n)\n\nvar (\n\temptyRunes = []rune{}\n)\n\nfunc isSep(b []rune) bool {\n\tif len(b) == 0 {\n\t\treturn f"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go",
"chars": 772,
"preview": "package ini\n\n// skipper is used to skip certain blocks of an ini file.\n// Currently skipper is used to skip nested block"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go",
"chars": 982,
"preview": "package ini\n\n// Statement is an empty AST mostly used for transitioning states.\nfunc newStatement() AST {\n\treturn newAST"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go",
"chars": 5118,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n)\n\n// getStringValue will return a quoted string and the amount\n// of bytes read\n//\n// an e"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go",
"chars": 3831,
"preview": "package ini\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// Visitor is an interface used by walkers that will\n// traverse an array of AST"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go",
"chars": 503,
"preview": "package ini\n\n// Walk will traverse the AST using the v, the Visitor.\nfunc Walk(tree []AST, v Visitor) error {\n\tfor _, no"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go",
"chars": 437,
"preview": "package ini\n\nimport (\n\t\"unicode\"\n)\n\n// isWhitespace will return whether or not the character is\n// a whitespace characte"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/s3err/error.go",
"chars": 1460,
"preview": "package s3err\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\t\"github.com/aws/aws-sdk-go/aws/request\"\n)\n\n// R"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go",
"chars": 253,
"preview": "// +build !go1.7\n\npackage sdkio\n\n// Copy of Go 1.7 io package's Seeker constants.\nconst (\n\tSeekStart = 0 // seek relat"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go",
"chars": 303,
"preview": "// +build go1.7\n\npackage sdkio\n\nimport \"io\"\n\n// Alias for Go 1.7 io package Seeker constants\nconst (\n\tSeekStart = io.S"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go",
"chars": 538,
"preview": "package sdkrand\n\nimport (\n\t\"math/rand\"\n\t\"sync\"\n\t\"time\"\n)\n\n// lockedSource is a thread-safe implementation of rand.Source"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go",
"chars": 453,
"preview": "package sdkuri\n\nimport (\n\t\"path\"\n\t\"strings\"\n)\n\n// PathJoin will join the elements of the path delimited by the \"/\"\n// ch"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go",
"chars": 442,
"preview": "package shareddefaults\n\nconst (\n\t// ECSCredsProviderEnvVar is an environmental variable key used to\n\t// determine which "
},
{
"path": "vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go",
"chars": 1008,
"preview": "package shareddefaults\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n)\n\n// SharedCredentialsFilename returns the SDK's def"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go",
"chars": 3438,
"preview": "package eventstream\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\ntype decodedMessage stru"
},
{
"path": "vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go",
"chars": 4185,
"preview": "package eventstream\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"hash\"\n\t\"hash/crc32\"\n"
}
]
// ... and 1801 more files (download for full content)
About this extraction
This page contains the full source code of the squat/terraform-provider-vultr GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2001 files (20.3 MB), approximately 5.4M tokens, and a symbol index with 128221 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.